[英]Pandas Groupby - Calculate percentage of values per group total value
按聲明,我有這個熊貓小組:
df['teams'].groupby(train_sub['outcome']).value_counts()
返回如下內容:
outcome | teams
--------|----------------|-----
win | Man utd | 120
| Chelsea | 75
| Arsenal | 10
--------|----------------|------
loss | Man utd | 30
| Chelsea | 75
| Arsenal | 150
對於每個團隊,我想顯示每個結果占團隊總數(而不是數據框中的總數)的百分比。 所以像這樣:
outcome | teams
--------|----------------|-----
win | Man utd | 0.80
| Chelsea | 0.5
| Arsenal | 0.0625
--------|----------------|------
loss | Man utd | 0.20
| Chelsea | 0.5
| Arsenal | 0.9375
請問我如何得到這個結果?
像您一樣復制數據集:
df = pd.DataFrame()
df['outcome'] = ['win', 'win', 'win', 'loss', 'loss', 'loss']
df['teams'] = ['manu', 'chelsea', 'arsenal', 'manu', 'chelsea', 'arsenal']
df['points'] = [120, 75, 10, 30, 75, 150]
grouped = df.groupby(['outcome', 'teams'])['points'].sum()
我的grouped
變量現在看起來像您的變量。
points
outcome teams
loss arsenal 150
chelsea 75
manu 30
win arsenal 10
chelsea 75
manu 120
grouped
您的情況進行grouped
是df['teams'].groupby(train_sub['outcome']).value_counts()
。 因此,只需:
grouped / grouped.groupby(level = 1).sum()
輸出:
outcome teams points
loss arsenal 0.9375
chelsea 0.5000
manu 0.2000
win arsenal 0.0625
chelsea 0.5000
manu 0.8000
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.