熊猫数据透视表到堆积的条形图

Mat*_* W. 4 python matplotlib pandas

我正在尝试使用此数据透视表,并创建按战斗类型划分的成败的堆积条形图。

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
Run Code Online (Sandbox Code Playgroud)

我试图初始化一个新列,groupbycount。我正在尝试从此数据透视表创建堆积的条形图,并开始在这里迷路。我得到这个:

df.assign(count =1 ).groupby(['attacker_outcome', 'battle_type']).count().plot.bar(stacked=True)
Run Code Online (Sandbox Code Playgroud)

条形图

任何帮助表示赞赏!

Bra*_*mon 7

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

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

在此处输入图片说明