Pythonで、よく使う外部ライブラリの「pandas」にピボットテーブルという便利な機能があります。集計の際に使うと便利だな~と思い、今回は、簡単に使い方を紹介したいと思います!!
集計したい内容
各担当者がどのお弁当を何個売ったか、
そしてそれに伴うお渡し品(マヨネーズ、ソース、しょうゆ)のお渡し数を集計します。
今回は、以下のデータを基に集計を行います。
1. データの準備
まず、提供されたデータを整理して、Pythonのデータフレームに変換します。
import pandas as pd
# データをリスト形式で整理
data = {
'日付': [
'2024-08-01', '2024-08-01', '2024-08-01',
'2024-08-01', '2024-08-01', '2024-08-01',
'2024-08-02', '2024-08-02', '2024-08-02',
'2024-08-02', '2024-08-02', '2024-08-02',
'2024-08-03', '2024-08-03', '2024-08-03',
'2024-08-03', '2024-08-03', '2024-08-03'
],
'担当': [
'担当A', '担当A', '担当B',
'担当B', '担当C', '担当C',
'担当A', '担当A', '担当B',
'担当B', '担当C', '担当C',
'担当A', '担当A', '担当B',
'担当B', '担当C', '担当C'
],
'弁当': [
'からあげ弁当', '幕の内弁当', 'とんかつ弁当',
'幕の内弁当', 'とんかつ弁当', '幕の内弁当',
'とんかつ弁当', '幕の内弁当', 'からあげ弁当',
'とんかつ弁当', 'からあげ弁当', 'とんかつ弁当',
'からあげ弁当', 'とんかつ弁当', 'とんかつ弁当',
'幕の内弁当', 'からあげ弁当', 'とんかつ弁当'
]
}
# データフレームに変換
df = pd.DataFrame(data)
# お渡し品の対応を追加
df['お渡し品'] = df['弁当'].map({
'からあげ弁当': 'マヨネーズ',
'とんかつ弁当': 'ソース',
'幕の内弁当': 'しょうゆ'
})
print(df)
2. 担当者ごとの弁当販売数の集計
次に、担当者ごとに各弁当の販売数を集計します。
# 担当者ごとの弁当販売数を集計
pivot_bento_sales = df.pivot_table(
index='担当',
columns='弁当',
aggfunc='size',
fill_value=0
)
print(pivot_bento_sales)
3. 担当者ごとのお渡し品の集計
同様に、担当者ごとのお渡し品の集計も行います。
# 担当者ごとのお渡し品の集計
pivot_watashi_sales = df.pivot_table(
index='担当',
columns='お渡し品',
aggfunc='size',
fill_value=0
)
print(pivot_watashi_sales)
4. 結果の出力
上記を実行すると、以下のような結果が出力されます。
このようにまとめて集計を行うのにピボットテーブルはとても便利です!