Using pandas Grouper

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は機能がありすぎて、使う時に忘れてることが多い。まめにログに残しておくことにしたい。

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

Jp, Tokyo https://connvoi.com