Pandas将桌子旋转到堆叠条形图

2024-10-01 11:27:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图利用这个数据透视表,创建一个按战斗类型划分的胜负堆积条形图。在

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和{}。我试图从这个数据透视表创建一个堆积条形图,但在这里开始迷失方向。我得到了这个:

^{pr2}$

barchart

感谢任何帮助!在


Tags: 数据importasnprandomwinpd条形图
2条回答

这里的代码有点紧:

df.pivot_table(index='battle_type', columns='attacker_outcome', aggfunc='size').plot.barh(stacked=True)

通过Minimally Sufficient Pandas

结果

enter image description here

您可以通过分组和取消堆叠来完成此操作:

df.groupby('battle_type')['attacker_outcome']\
    .value_counts()\
    .unstack(level=1)\
    .plot.bar(stacked=True)

enter image description here

相关问题 更多 >