CommencezCommencez gratuitement

Nettoyer les données de l'heure avancée avec fold

Comme nous venons de le constater, un trajet de notre jeu de données est faussé par un passage à l'heure avancée. Nettoyons le jeu de données afin d'obtenir une durée minimale de trajet correcte. Puisque nous savons que la fin du trajet survient après le début, nous pouvons corriger la durée perturbée par la sortie de l'heure avancée.

Comme Python ne gère pas tz.enfold() lors des opérations arithmétiques, nous devons convertir nos objets datetime en UTC, où les ambiguïtés sont levées.

onebike_datetimes est déjà chargé et dans le bon fuseau horaire. tz et timezone ont été importés. Utilisez tz.UTC pour le fuseau horaire.

Cette activité fait partie du cours

Travailler avec les dates et les heures en Python

Voir le cours

Instructions de l’exercice

  • Complétez l'instruction if pour qu'elle ne soit vraie que lorsque le start d'un trajet survient après son end.
  • Lorsque start est après end, appelez tz.enfold() sur end pour indiquer qu'il s'agit de celui après le changement d'heure avancée.
  • Après l'instruction if, convertissez le début et la fin en UTC afin de pouvoir faire une comparaison correcte.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

trip_durations = []
for trip in onebike_datetimes:
  # When the start is later than the end, set the fold to be 1
  if ____ > ____:
    trip['end'] = tz.____(trip['end'])
  # Convert to UTC
  start = trip['start'].____
  end = trip['end'].____

  # Subtract the difference
  trip_length_seconds = (end-start).total_seconds()
  trip_durations.append(trip_length_seconds)

# Take the shortest trip duration
print("Shortest trip: " + str(min(trip_durations)))
Modifier et exécuter le code