#テストデータ
data=[
{"日付":"1/2" , "氏名":"山田" ,"デザート" : "りんご" ,"おかず" :"餃子" },
{"日付":"1/3" , "氏名":"山田" ,"デザート" : "りんご" ,"おかず" :"餃子" },
{"日付":"1/4" , "氏名":"山田" ,"デザート" : "ばなな" ,"おかず" :"煮魚" },
{"日付":"1/5" , "氏名":"山田" ,"デザート" : "りんご" ,"おかず" :"餃子" },
{"日付":"1/2" , "氏名":"佐々木" ,"デザート" : "ミカン" ,"おかず" :"餃子" },
{"日付":"1/3" , "氏名":"佐々木" ,"デザート" : "りんご" ,"おかず" :"餃子" },
{"日付":"1/4" , "氏名":"佐々木" ,"デザート" : "りんご" ,"おかず" :"餃子" },
{"日付":"1/5" , "氏名":"佐々木" ,"デザート" : "りんご" ,"おかず" :"シチュー" },
]
import pandas as pd
df=pd.DataFrame(data)
df
日付 氏名 デザート おかず
0 1/2 山田 りんご 餃子
1 1/3 山田 りんご 餃子
2 1/4 山田 ばなな 煮魚
3 1/5 山田 りんご 餃子
4 1/2 佐々木 ミカン 餃子
5 1/3 佐々木 りんご 餃子
6 1/4 佐々木 りんご 餃子
7 1/5 佐々木 りんご シチュー
#「氏名」毎の「デザート」を数えます。
df.pivot_table(values= 'おかず', index='氏名', columns='デザート' , aggfunc="count" , fill_value=0)
values= 'おかず'を入れないと残っているcolumns毎に集計される
aggfunc="count" で件数
fill_value=0 を入れないと0件のところがNaN になる。
結果
デザート ばなな りんご ミカン
氏名
佐々木 0 3 1
山田 1 3 0