我正在尝试使用这个数据透视表,并创建一个按战斗类型显示输赢情况的堆叠条形图。
import pandas as pd
import numpy as np
np.random.seed(1)
df = pd.DataFrame({'attacker_outcome':np.random.choice(['win', 'loss'], 20, replace=True),
'battle_type':np.random.choice(['pitched battle', 'siege', 'ambush', 'razing'], 20, replace=True)})
attacker_outcome battle_type
0 loss ambush
1 loss siege
2 win ambush
3 loss siege
4 loss siege
5 win ambush
6 win siege
7 win razing
8 loss siege
9 loss ambush
10 loss razing
11 loss siege
12 win razing
13 loss razing
14 win ambush
15 win pitched battle
16 loss ambush
17 loss siege
18 win pitched battle
19 loss siege我尝试初始化一个新列groupby和count。我试图从这个数据透视表中创建一个堆叠的条形图,但在这里开始迷路了。我得到了这个:
df.assign(count =1 ).groupby(['attacker_outcome', 'battle_type']).count().plot.bar(stacked=True)

如有任何帮助,我们不胜感激!
发布于 2018-02-15 12:06:20
您可以通过分组和出栈来实现这一点:
df.groupby('battle_type')['attacker_outcome']\
.value_counts()\
.unstack(level=1)\
.plot.bar(stacked=True)

发布于 2019-02-26 23:56:38
这里的代码更紧凑一些:
df.pivot_table(index='battle_type', columns='attacker_outcome', aggfunc='size').plot.barh(stacked=True)和结果是

https://stackoverflow.com/questions/48799718
复制相似问题