Làm sạch dữ liệu giờ mùa hè với fold
Như bạn vừa thấy, có một chuyến đi trong tập dữ liệu bị sai do việc chuyển đổi Daylight Saving. Hãy làm sạch tập dữ liệu để thật sự có được độ dài chuyến đi nhỏ nhất chính xác. Ta có thể tận dụng thực tế là thời điểm kết thúc luôn xảy ra sau thời điểm bắt đầu để sửa lại khoảng thời gian bị sai do chuyển từ Daylight Saving.
Vì Python không xử lý tz.enfold() khi thực hiện phép tính thời gian, chúng ta phải đưa các đối tượng datetime về UTC, nơi mọi mơ hồ đã được giải quyết.
onebike_datetimes đã được nạp và ở đúng múi giờ. tz và timezone đã được import. Hãy dùng tz.UTC làm múi giờ.
Bài tập này là một phần của khóa học
Làm việc với Ngày và Giờ trong Python
Hướng dẫn bài tập
- Hoàn thiện câu lệnh
ifđể chỉ đúng khistartcủa một chuyến đi xảy ra sauend. - Khi
startsauend, gọitz.enfold()trênendđể bạn biết nó ám chỉ thời điểm sau khi đổi sang/ra khỏi giờ mùa hè (daylight saving time). - Sau câu lệnh
if, chuyển đổistartvàendsang UTC để có thể so sánh chính xác.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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)))