Очистка данных с переходом на зимнее время с помощью fold
Как мы только что выяснили, в нашем наборе данных есть поездка, данные которой искажены из-за перехода на зимнее время. Очистим набор данных, чтобы получить корректную минимальную продолжительность поездки. Мы знаем, что конец поездки произошёл позже её начала, — воспользуемся этим, чтобы исправить длительность, нарушенную переходом с летнего времени.
Поскольку Python не учитывает tz.enfold() при арифметических операциях, необходимо перевести объекты datetime в UTC, где неоднозначности уже устранены.
onebike_datetimes уже загружен и установлен в нужный часовой пояс. tz и timezone импортированы. Используйте tz.UTC в качестве часового пояса.
Это упражнение является частью курса
Работа с датами и временем в Python
Инструкции к упражнению
- Дополните условие
ifтак, чтобы оно было истинным только тогда, когдаstartпоездки наступает позже еёend. - Когда
startпозжеend, применитеtz.enfold()кend, чтобы указать, что это время относится к периоду после перехода с летнего на зимнее время. - После блока
ifпреобразуйте время начала и конца в 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)))