Zomertijdgegevens opschonen met fold
Zoals we net hebben ontdekt, zit er in onze gegevensset een rit die in de war raakt door een overgang naar/van zomertijd. Laten we de gegevensset opschonen zodat we een correcte minimale ritduur hebben. We kunnen gebruiken dat we weten dat het einde van de rit na het begin plaatsvond om de duur te corrigeren die is verstoord door het einde van de zomertijd.
Omdat Python tz.enfold() niet verwerkt bij rekenkundige bewerkingen, moeten we onze datetime-objecten omzetten naar UTC, waar dubbelzinnigheden zijn opgelost.
onebike_datetimes is al geladen en in de juiste tijdzone. tz en timezone zijn geïmporteerd. Gebruik tz.UTC voor de tijdzone.
Deze oefening maakt deel uit van de cursus
Werken met datums en tijden in Python
Oefeninstructies
- Maak de
if-verklaring zo af dat die alleen waar is wanneer destartvan een rit na hetendligt. - Als
startnaendis, roep dantz.enfold()aan opendzodat je weet dat dit verwijst naar het tijdstip ná de verandering door de zomertijd. - Zet na de
if-verklaringstartenendom naar UTC zodat je een juiste vergelijking kunt maken.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
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)))