Czyszczenie danych z uwzględnieniem czasu letniego i atrybutu fold
Jak właśnie się okazało, w naszym zbiorze danych znajduje się przejazd, którego dane zostały zaburzone przez zmianę czasu z letniego na zimowy. Wyczyśćmy ten zbiór, aby uzyskać prawidłową minimalną długość przejazdu. Wiemy, że koniec przejazdu nastąpił po jego początku – możemy to wykorzystać, żeby naprawić czas trwania przekłamany przez zmianę czasu.
Ponieważ Python nie obsługuje tz.enfold() podczas wykonywania operacji arytmetycznych, musimy przekonwertować nasze obiekty datetime do UTC, gdzie niejednoznaczności zostały już rozwiązane.
onebike_datetimes jest już wczytany i ustawiony na właściwą strefę czasową. Biblioteki tz i timezone zostały zaimportowane. Użyj tz.UTC jako strefy czasowej.
To ćwiczenie jest częścią kursu
Praca z datami i czasem w Pythonie
Instrukcje do ćwiczenia
- Uzupełnij instrukcję
iftak, aby była prawdziwa tylko wtedy, gdystartprzejazdu następuje po jegoend. - Gdy
startjest późniejszy niżend, wywołajtz.enfold()naend, aby zaznaczyć, że chodzi o czas po zmianie z letniego na zimowy. - Po instrukcji
ifprzekonwertuj czas rozpoczęcia i zakończenia do UTC, aby móc je prawidłowo porównać.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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)))