fold を使って夏時間データをクリーンアップする
さきほど確認したとおり、データセット内に夏時間(Daylight Saving)の切り替えで不正になっているライドがあります。最小ライド時間を正しく求められるよう、データセットをクリーンアップしましょう。ライドの終了は必ず開始の後に起きているという事実を利用して、夏時間から標準時へ戻る際のずれで壊れてしまった継続時間を修正します。
Python は算術計算の際に tz.enfold() を扱えないため、あいまいさが解消される UTC に datetime オブジェクトを変換してから処理する必要があります。
onebike_datetimes はすでに読み込まれており、正しいタイムゾーンになっています。tz と timezone はインポート済みです。タイムゾーンには tz.UTC を使用してください。
この演習はコースの一部です
Pythonで扱う日付と時刻
演習の手順
if文を、ライドのstartがendより後の場合にのみ真になるように完成させてください。startがendより後の場合、endに対してtz.enfold()を呼び出し、夏時間の切り替え後を指すようにしてください。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)))