
PandasのGroperを使って、集計を楽にする
PandasのGropperをつかう
やりたいこと
時間付きのデータを1時間毎に集計したい時など
#元データ
date counts
2018-12-01 00:00:00 23.0
2018-12-01 00:00:05 6.0
2018-12-01 00:00:10 9.0
2018-12-01 00:00:15 1.0
2018-12-01 00:00:20 17.0
2018-12-01 00:00:25 4.0
2018-12-01 00:00:30 22.0
...
こうやって5秒間隔でデータが置いてあって、それを1時間ごとに集計したい時とかにGrouperを使うと楽
import pandas as pd
df=pd.read_csv('./log/timetest.tsv', sep="\t")
#datetime型に変換してる。
df['date']=pd.to_datetime(df['date'])
print(df.groupby(pd.Grouper(key='date', freq='1h')).sum())
#実行結果
counts
date
2018-12-01 00:00:00 7536.0
2018-12-01 01:00:00 3280.0
2018-12-01 02:00:00 3909.0
2018-12-01 03:00:00 3530.0
2018-12-01 04:00:00 4903.0
2018-12-01 05:00:00 5056.0
2018-12-01 06:00:00 5054.0
2018-12-01 07:00:00 9303.0
2018-12-01 08:00:00 11134.0
2018-12-01 09:00:00 7014.0
2018-12-01 10:00:00 8842.0
2018-12-01 11:00:00 6961.0
2018-12-01 12:00:00 7474.0
2018-12-01 13:00:00 8724.0
2018-12-01 14:00:00 8792.0
2018-12-01 15:00:00 10914.0
2018-12-01 16:00:00 10431.0
2018-12-01 17:00:00 9651.0
2018-12-01 18:00:00 11577.0
2018-12-01 19:00:00 10546.0
2018-12-01 20:00:00 11753.0
2018-12-01 21:00:00 9100.0
2018-12-01 22:00:00 9028.0
2018-12-01 23:00:00 6916.0
Pandasは機能がありすぎて、使う時に忘れてることが多い。まめにログに残しておくことにしたい。