Oprava dat při přechodu ze zimního času pomocí fold
Jak jsme právě zjistili, v naší datové sadě se nachází jízda, kterou narušil přechod ze středoevropského letního času. Pojďme data opravit, abychom získali správnou minimální délku jízdy. Využijeme toho, že víme, že konec jízdy nastal vždy po jejím začátku – a tím napravíme délku zkreslenou přechodem ze letního času.
Protože Python nepracuje s tz.enfold() při aritmetických operacích, musíme naše objekty datetime převést do UTC, kde jsou veškeré nejednoznačnosti vyřešeny.
onebike_datetimes je již načteno a nastaveno na správné časové pásmo. tz a timezone jsou importovány. Jako časové pásmo použij tz.UTC.
Toto cvičení je součástí kurzu
Práce s daty a časy v Pythonu
Pokyny k cvičení
- Dopiš podmínku
iftak, aby byla pravdivá pouze tehdy, kdyžstartjízdy nastane po jejímend. - Pokud
startnastane poend, zavolejtz.enfold()naend, aby bylo jasné, že jde o čas po přechodu ze letního času. - Po bloku
ifpřeveď začátek i konec do UTC, aby bylo možné je správně porovnat.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
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)))