始める無料で始める

fold を使って夏時間データをクリーンアップする

さきほど確認したとおり、データセット内に夏時間(Daylight Saving)の切り替えで不正になっているライドがあります。最小ライド時間を正しく求められるよう、データセットをクリーンアップしましょう。ライドの終了は必ず開始の後に起きているという事実を利用して、夏時間から標準時へ戻る際のずれで壊れてしまった継続時間を修正します。

Python は算術計算の際に tz.enfold() を扱えないため、あいまいさが解消される UTC に datetime オブジェクトを変換してから処理する必要があります。

onebike_datetimes はすでに読み込まれており、正しいタイムゾーンになっています。tztimezone はインポート済みです。タイムゾーンには tz.UTC を使用してください。

この演習はコースの一部です

Pythonで扱う日付と時刻

コースを見る

演習の手順

  • if 文を、ライドの startend より後の場合にのみ真になるように完成させてください。
  • startend より後の場合、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)))
コードを編集して実行