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
Instructions de l’exercice
- Complétez l'instruction
ifpour qu'elle ne soit vraie que lorsque lestartd'un trajet survient après sonend. - Lorsque
startest aprèsend, appeleztz.enfold()surendpour 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)))