Bắt đầu ngayBắt đầu miễn phí

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ờ. tztimezone đã đượ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

Xem khóa học

Hướng dẫn bài tập

  • Hoàn thiện câu lệnh if để chỉ đúng khi start của một chuyến đi xảy ra sau end.
  • Khi start sau end, gọi tz.enfold() trên end để 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 đổi startend sang 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)))
Chỉnh sửa và Chạy Mã