Очищення даних про перехід на літній час за допомогою fold
Щойно ми з'ясували, що одна з поїздок у нашому наборі даних спотворена через перехід на літній час. Давайте почистимо набір даних, щоб отримати коректну мінімальну тривалість поїздки. Ми можемо скористатися тим, що знаємо: поїздка закінчилася після початку, — і виправити тривалість, зіпсовану виходом із літнього часу.
Оскільки Python не враховує tz.enfold() під час обчислень, потрібно перевести наші об'єкти datetime в UTC, де неоднозначності вже знято.
onebike_datetimes уже завантажено й воно в правильному часовому поясі. tz і timezone імпортовано. Використайте tz.UTC як часовий пояс.
Ця вправа є частиною курсу
Робота з датами та часом у Python
Інструкції до вправи
- Доповніть оператор
if, щоб він був істинним лише тоді, колиstartпоїздки настає пізніше за їїend. - Коли
startпізніше заend, викличтеtz.enfold()дляend, щоб указати, що йдеться про момент після зміни літнього часу. - Після оператора
ifперетворітьstartіendу UTC, щоб можна було виконати коректне порівняння.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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)))