如何在python中创建堆叠的barplot

时间:2019-01-25 06:49:45

标签: python pandas seaborn

我有一个熊猫数据框,如下所示

        batsman      non_striker  partnershipRuns
0      SK Raina       A Flintoff               23
1      SK Raina         DR Smith               90
2      SK Raina     F du Plessis               36
3      SK Raina        JA Morkel               14
10     MS Dhoni    CK Kapugedera               18
11     MS Dhoni         DJ Bravo               51
12     MS Dhoni     F du Plessis               27
13     MS Dhoni        JA Morkel               12
14     MS Dhoni         JDP Oram                6

我发现用大熊猫或海生大熊猫创建堆积条形图非常困难。任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

使用熊猫,创建情节非常简单。有了数据框后,只需像本示例中那样调用plot(我使用了示例数据集)。

import pandas as pd
import matplotlib.pyplot as plt

#create the dataframe from your data
batsman = ['SK Raina','SK Raina','SK Raina','SK Raina','MS Dhoni','MS Dhoni', 'MS Dhoni','MS Dhoni','MS Dhoni']
non_striker = [ 'A Flintoff', 'DR Smith' ,'du Plessis','JA Morkel',  'Kapugedera', 'DJ Bravo', 'du Plessis', 'JA Morkel', 'JDP Oram']
partnershipRuns = [23,90,36,14,18,51,27,12, 6]


df = pd.DataFrame({'batsman': batsman, 'non_striker': non_striker, 'partnershipRuns': partnershipRuns})

#make your data numerical
df = df.pivot(columns='non_striker',index='batsman').fillna(0)
#plot it
df.plot(kind='bar',stacked=True,legend=False)
plt.show()

这将产生如下内容: Example output

如果您的数据不是数字数据,则必须先将其转换。

答案 1 :(得分:0)

我已经可以通过两种方式做到这一点

1)

df1=df.pivot(columns='non_striker',index='batsman').fillna(0)
df1.plot(kind='bar',stacked=True,legend=False)

2)

df1=df.groupby(['batsman','non_striker']).sum().unstack().fillna(0)
df1.plot(kind='bar',stacked=True,legend=False)

两个工作。我们需要在各列之间创建一个表格,然后在用0填充NA之前进行绘制enter image description here