▶ 日付型の基本的な取り扱い方は以下の記事にまとめてあります。
はじめに
今回は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))
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-23.png)
これらのdatetimeオブジェクトは日付(年、月、日)と時刻(時、分、秒、マイクロ秒)の両方の情報を持ちます。これらは属性year, month, day, hour, minute, second, microsecondでアクセスできます。また、date()メソッドにより日付に変換することができます。
print(dt1)
print(dt2)
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-24.png)
# 日付の確認
dt1.date()
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-25.png)
# 日付を取得
dt1.day
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-26.png)
次にdt1とdt2の差分をとってみましょう。この差分をtdとします。このtdのデータ型はどうなるでしょうか?
td=dt1-dt2
print(type(td))
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-27.png)
このようにdatetimeオブジェクトの差分をとると、timedelta型となります。timedeltaオブジェクトは日数、秒数、マイクロ秒数の情報を持ち、属性days, seconds, microsecondsでアクセスできます。また、total_seconds()メソッドでトータルの秒数に変換することができます。
td
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-28.png)
days, seconds, microsecondsの属性をそれぞれ取得してみましょう。
td.days
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-29.png)
td.seconds
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-30.png)
td.microseconds
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-31.png)
timedeltaオブジェクトは上記のように日数、秒、マイクロ秒の情報を持ちますが、トータルの秒数を取得したいときもあります。そのときにtotal_seconds()メソッドを利用できます。
td.total_seconds()
![](https://happy-analysis.com/wp-content/uploads/2020/10/image-32.png)
まとめ
いかがでしたか?今回はtimedelta型を扱いました。日付の処理はいろいろとややこしいものもありますが、こうしてtimedeltaだけを取り出して整理してみると、簡単ですね。日時の処理としては以下の記事も参考にしてください。
▶ 海外にサーバーがあって、現地時間のデータとなっているものを日本時間に変換する場合はタイムゾーンを考慮すると便利です。タイムゾーンで扱うと、サマータイムも考慮されるので便利です。
コメント