Zacznij terazZacznij za darmo

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

Zobacz kurs

Instrukcje do ćwiczenia

  • Uzupełnij instrukcję if tak, aby była prawdziwa tylko wtedy, gdy start przejazdu następuje po jego end.
  • Gdy start jest późniejszy niż end, wywołaj tz.enfold() na end, aby zaznaczyć, że chodzi o czas po zmianie z letniego na zimowy.
  • Po instrukcji if przekonwertuj 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)))
Edytuj i uruchom kod