Pandasで月ごとの合計値とデータ数を集計する方法

月ごとにデータを集計する際、groupbyto_period使うことで簡単に合計値やデータ数を算出できます。

 




1. サンプルデータの準備

まず、日付と数値データを含むサンプルデータフレームを作成します。

import pandas as pd

# サンプルデータ
data = {
    '日付': ['2024-01-01', '2024-01-15', '2024-02-01', '2024-02-20', '2024-03-01'],
    '値': [100, 200, 150, 300, 400]
}
df = pd.DataFrame(data)

# 日付を datetime 型に変換
df['日付'] = pd.to_datetime(df['日付'])
print(df)

出力結果

  日付    値
0 2024-01-01 100
1 2024-01-15 200
2 2024-02-01 150
3 2024-02-20 300
4 2024-03-01 400

2. 月ごとにデータを集計

日付データを月ごとにグループ化し、合計値データ数を集計します。

# 月列を追加(年-月単位)
df['月'] = df['日付'].dt.to_period('M')

# 合計値とデータ数を集計
monthly_stats = df.groupby('月').agg(合計値=('値', 'sum'), データ数=('値', 'count')).reset_index()

# 結果を表示
print(monthly_stats)

3. 結果

出力結果

     月   合計値  データ数
0 2024-01 300 2
1 2024-02 450 2
2 2024-03 400 1

 



4. コードの解説

1. 月単位の期間列を作成

df['月'] = df['日付'].dt.to_period('M')

dt.to_period(‘M’) を使うことで、「年-月」の形式に変換します。

2. 集計処理

df.groupby('月').agg(合計値=('値', 'sum'), データ数=('値', 'count'))

• sum で合計値を計算。

• count でデータ数を集計。

• aggメソッドを使うと、複数の集計を同時に行えます。

3. 結果の整形


reset_index() でグループ化された「月」列をデータフレームの一部として戻します。


まとめ

この方法を使えば、月ごとのデータの傾向や量を一目で確認できます。 特に売上データやアクセスログの分析に便利です。


コード全体

最後に全コードをまとめておきます。

import pandas as pd

# サンプルデータ
data = {
    '日付': ['2024-01-01', '2024-01-15', '2024-02-01', '2024-02-20', '2024-03-01'],
    '値': [100, 200, 150, 300, 400]
}
df = pd.DataFrame(data)

# 日付を datetime 型に変換
df['日付'] = pd.to_datetime(df['日付'])

# 月ごとに合計値とデータ数を集計
df['月'] = df['日付'].dt.to_period('M')
monthly_stats = df.groupby('月').agg(合計値=('値', 'sum'), データ数=('値', 'count')).reset_index()

# 結果を表示
print(monthly_stats)

コメント

タイトルとURLをコピーしました