เริ่มต้นใช้งานเริ่มต้นใช้งานได้ฟรี

ทำความสะอาดข้อมูล Daylight Saving ด้วย fold

จากที่เราเพิ่งค้นพบ มีข้อมูลการเดินทางชุดหนึ่งในชุดข้อมูลที่ถูกทำให้คลาดเคลื่อนเพราะการเปลี่ยนเวลา Daylight Saving เรามาทำความสะอาดชุดข้อมูลนี้กัน เพื่อให้ได้ระยะเวลาการเดินทางที่น้อยที่สุดที่ถูกต้อง โดยอาศัยข้อเท็จจริงที่ว่าการเดินทางสิ้นสุดหลังจากเริ่มต้นเสมอ ซึ่งช่วยแก้ไขระยะเวลาที่ผิดพลาดจากการสิ้นสุด Daylight Saving ได้

เนื่องจาก Python ไม่รองรับ tz.enfold() ในการคำนวณทางคณิตศาสตร์โดยตรง เราจึงต้องแปลง datetime object ให้อยู่ใน UTC ซึ่งได้แก้ไขความกำกวมของเวลาไว้แล้ว

onebike_datetimes ถูกโหลดไว้แล้วและอยู่ใน timezone ที่ถูกต้อง มีการ import tz และ timezone แล้ว ให้ใช้ tz.UTC สำหรับ timezone

แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร

การทำงานกับวันที่และเวลาใน Python

ดูคอร์ส

คำแนะนำการฝึกหัด

  • เติมคำสั่ง if ให้เป็น true เฉพาะเมื่อ start ของการเดินทางมาหลัง end
  • เมื่อ start อยู่หลัง end ให้เรียก tz.enfold() กับ end เพื่อระบุว่าหมายถึงเวลาหลังการเปลี่ยน Daylight Saving
  • หลังคำสั่ง 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)))
แก้ไขและรันโค้ด