あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

Pandasでdate_trunc的な処理をする(resampleを使う)

pandasで日付ごとに集約する場合、resampleを使うと非常に楽です。
注意点としては、indexに入れておく必要があるところでしょうか。

date_trunc的な挙動

import pandas as pd

#365日のデータ
one_year = pd.Series(1,index = pd.date_range(start='2020-01-01',periods=365)

#月で集約
one_year.resample('M').sum()

#二週間で集約、みたいなこともできる
one_year.resample('2W').sum()

Qを渡すことで四半期単位もできます

datetime_trunc的な挙動

import pandas as pd

#30秒おきを1日分
one_day = pd.Series(1,index = pd.date_range(start='2020-01-01,end='2020-01-02','freq='30S')

#時間ごと
one_day.resample('H').sum()

ただ、ログデータの時間、みたいなキーにできない一情報のときは、
col.hourとかを使ってgroupbyが無難ですかね