【毎日Python】Pythonでデータフレームを日時型で集約する方法|resample

resamle
こつこつPython

この記事の執筆・監修

キノコード
キノコード    

テクノロジーアンドデザインカンパニー株式会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

import pandas as pd

df = pd.read_csv('data.csv', parse_dates=['売上日'], index_col=['売上日'])
df.head()

Pythonで、データフレームの日時型のカラムを軸に期間ごとの集約をする方法です。
使用するメソッドは、pandasのresampleメソッドです。
CSVデータを、時系列データになるようにインデックスを日時型に指定して読み込みます。
このようなデータフレームです。

df.index

インデックスのデータ型を確認してみましょう。
このように日時型であることがわかります。

df.resample('M').sum()

月ごとに集約して、合計を出してみましょう。
第一引数に集約したい頻度、つまり集約したい周期を指定します。
日次ならD、月次ならM、四半期ならQです。
集計はsumです。実行します。
表示できました。

df.resample('2M').mean()

2ヶ月ごとの平均であればこのようにして求めることができます。

df.resample('M')

また、resampleメソッドは、集約関数とセットで使用します。
このままではただのオブジェクトであることがわかります。

df1 = df.reset_index()
df1.head()

では、このようにインデックス以外に日時型のカラムがある場合はどうすればよいでしょうか。

df1.resample('Q', on='売上日').sum()

この場合は、引数onに日時型のカラムを指定することで集約することができます。

関連メソッド

【毎日Python】Pythonでデータフレームのカラムを日時型に変換する方法|to_datetime

【毎日Python】Pythonで連続した日時データを作成する方法|pandas.date_range

未経験からはじめるPython学習「キノクエスト」 キノクエスト
  • スキルアップしたいけど何からはじめればよいかわからない…
  • プログラミングスクールに入りたいけど料金が高い…
  • プログラミングを学んでも業務やキャリアに活かせるか不安…

キノクエストは、このような悩みを持つ方にぴったりのプログラミング学習サービスです。
国内最大級のプログラミング学習系YouTubeチャンネル「キノコード」が提供しているから、未経験者にもわかりやすく質の高い学習体験を実感していただけます。

キノクエスト