目次
日付の差分を算出するとは?
今回はPythonで特定の日付の差分を算出する方法をご紹介します
2つの日付型のデータ(2020/1/1など)の差分を出すことで、日数差を抽出できます
また特定の日付に対して、プラス1か月のように固定の時間・日にちを追加することができます
datetimeモジュール
日付型のデータの処理はdatetimeを活用します
今回利用するモジュールにはいくつかのデータ型が存在しています
日時(日付と時刻)を表すdatetime型と、日付のみを表すdate型の2つが存在します
それらのデータを引き算したときに算出される差分はtimedelta型となります
事前準備
datetimeとpandasをインポートします
本サイトからの東京の気温推移データを取得します
日付データへの変換は下記記事をご覧ください
import datetime
import pandas as pd
df = pd.read_html('https://smart-hint.com/tokyo-temperature/')[0]
df['日付'] = pd.to_datetime(df['日付'])
1年の中で平均気温が一番高い日(暑い)date_maxと、一番低い日(寒い)date_minの2日を算出しておきます
max = df['平均気温'].max()
date_max = df.query('平均気温==@max').iat[0,0]
print(date_max)
min = df['平均気温'].min()
date_min = df.query('平均気温==@min').iat[0,0]
print(date_min)
日付の差分を算出する
それでは2つの日付(暑い日と寒い日)の差分を算出しましょう
単純に引き算をすればtimedelta型で算出されます(**)
date_max - date_min
timedelta型に対してdaysを利用することで数値として取り出すことができます
date_dif = date_max - date_min
print(date_dif)
print(date_dif.days)
日時(日付と時刻)を表すdatetime型と、日付のみを表すdate型の2つでの引き算はエラーになるのでご注意ください
固定の日付を足し引きする
先ほどは2つの日付の差分を算出しましたが、今度は固定の日付を足し算・引き算します
datetime.timedelta()を利用し「週」や「日」などを指定します
print(date_min)
print(date_min + datetime.timedelta(weeks=1))
- 週:weeks
- 日:days
- 時:hours
- 分:minutes
- 秒:seconds
print(date_min)
print(date_min + datetime.timedelta(weeks=1))
print(date_min + datetime.timedelta(days=1))
print(date_min + datetime.timedelta(hours=1))
print(date_min + datetime.timedelta(minutes=1))
print(date_min + datetime.timedelta(seconds=1))
もちろん数値をマイナス(days=-2)にすることで、日付を遡ることができます
print(date_min + datetime.timedelta(days=-2))
print(date_min + datetime.timedelta(days=-1))
print(date_min)
print(date_min + datetime.timedelta(days=1))
print(date_min + datetime.timedelta(days=2))
まとめ
今回は日付のデータに対して差分を求めたり、固定の日付を足し引きしたりする方法をご紹介してきました
日付型のデータは操作に癖があるため、ぜひこの機会に覚えて使ってみてください