▶ 日付型の基本的な取り扱い方は以下の記事にまとめてあります。
はじめに
今回はtimedelta型について扱います。時系列データでは、datetime型の値をそのまま使わずに、ある基準の日時からの経過時間を扱うことがあります。そのような場合には、timedelta型のtotal_seconds()が有効です。
timedelta型
timedelta型はdatetimeオブジェクトの引き算で作られます。言葉で説明するよりもやってみた方が早いでしょう。まずはライブラリのインポートから始めましょう。
# ライブラリのインポート
import datetime
# datetimeオブジェクトの作成
dt1=dt.datetime(year=2010, month=9, day=26, hour=8)
dt2=dt.datetime(year=1974,month=10, day=7, hour=21)
dt1, dt2の2つのdatetimeオブジェクトを作りました。念のためデータ型をチェックしておきましょう。
# 型の確認
print(type(dt1))
print(type(dt2))
これらのdatetimeオブジェクトは日付(年、月、日)と時刻(時、分、秒、マイクロ秒)の両方の情報を持ちます。これらは属性year, month, day, hour, minute, second, microsecondでアクセスできます。また、date()メソッドにより日付に変換することができます。
print(dt1)
print(dt2)
# 日付の確認
dt1.date()
# 日付を取得
dt1.day
次にdt1とdt2の差分をとってみましょう。この差分をtdとします。このtdのデータ型はどうなるでしょうか?
td=dt1-dt2
print(type(td))
このようにdatetimeオブジェクトの差分をとると、timedelta型となります。timedeltaオブジェクトは日数、秒数、マイクロ秒数の情報を持ち、属性days, seconds, microsecondsでアクセスできます。また、total_seconds()メソッドでトータルの秒数に変換することができます。
td
days, seconds, microsecondsの属性をそれぞれ取得してみましょう。
td.days
td.seconds
td.microseconds
timedeltaオブジェクトは上記のように日数、秒、マイクロ秒の情報を持ちますが、トータルの秒数を取得したいときもあります。そのときにtotal_seconds()メソッドを利用できます。
td.total_seconds()
まとめ
いかがでしたか?今回はtimedelta型を扱いました。日付の処理はいろいろとややこしいものもありますが、こうしてtimedeltaだけを取り出して整理してみると、簡単ですね。日時の処理としては以下の記事も参考にしてください。
▶ 海外にサーバーがあって、現地時間のデータとなっているものを日本時間に変換する場合はタイムゾーンを考慮すると便利です。タイムゾーンで扱うと、サマータイムも考慮されるので便利です。
コメント