Pulire i dati dell'ora legale con fold
Come abbiamo appena visto, c'è una corsa nel nostro insieme di dati che viene falsata da un cambio dell'ora legale. Ripuliamo l'insieme di dati così da ottenere davvero una durata minima corretta. Possiamo sfruttare il fatto che sappiamo che la fine della corsa è avvenuta dopo l'inizio per correggere la durata alterata dall'uscita dall'ora legale.
Dato che Python non gestisce tz.enfold() durante le operazioni aritmetiche, dobbiamo convertire i nostri oggetti datetime in UTC, dove le ambiguità sono risolte.
onebike_datetimes è già caricato e nel fuso orario corretto. tz e timezone sono stati importati. Usa tz.UTC come fuso orario.
Questo esercizio fa parte del corso
Lavorare con date e orari in Python
Istruzioni dell'esercizio
- Completa l'istruzione
ifin modo che sia vera solo quando ilstartdi una corsa è successivo al suoend. - Quando
startè dopoend, chiamatz.enfold()suendper indicare che si riferisce all'istante dopo il cambio dell'ora legale. - Dopo l'istruzione
if, converti start ed end in UTC per poter fare un confronto corretto.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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)))