熊猫 - 绘制堆积条形图

时间:2014-05-01 19:53:27

标签: python matplotlib pandas ipython-notebook python-3.4

我正在尝试创建一个复制图片的堆积条形图,我的所有数据都与excel电子表格分开。

enter image description here

我无法弄清楚如何为它制作数据帧,如图所示,我也无法弄清楚如何制作堆积条形图。我找到的所有示例都以不同的方式工作,而不是我想要创建的内容。

我的数据帧是所有值的csv,使用pandas数据帧缩小到以下值。

      Site Name    Abuse/NFF
0    NORTH ACTON       ABUSE
1    WASHINGTON         -
2    WASHINGTON        NFF
3    BELFAST            -
4    CROYDON            - 

我已设法用总计数数据并获得每个网站的个别计数,我似乎无法以图表的方式将其合并。

非常感谢一些强有力的指导。

完成代码,非常感谢您完成的协助。

test5 = faultdf.groupby(['Site Name', 'Abuse/NFF'])['Site Name'].count().unstack('Abuse/NFF').fillna(0)

test5.plot(kind='bar', stacked=True)

4 个答案:

答案 0 :(得分:71)

您是否收到错误,或者只是不确定从哪里开始?

%pylab inline
import pandas as pd
import matplotlib.pyplot as plt

df2 = df.groupby(['Name', 'Abuse/NFF'])['Name'].count().unstack('Abuse/NFF').fillna(0)
df2[['abuse','nff']].plot(kind='bar', stacked=True)

stacked bar plot

答案 1 :(得分:11)

应该有帮助

df.groupby(['NFF', 'ABUSE']).size().unstack().plot(kind='bar', stacked=True)

答案 2 :(得分:1)

也许您可以使用pandas crosstab function

test5 = pd.crosstab(index=faultdf['Site Name'], columns=faultdf[''Abuse/NFF''])

test5.plot(kind='bar', stacked=True)

答案 3 :(得分:0)

如果您想更改绘图的大小,请使用arg figsize

df.groupby(['NFF', 'ABUSE']).size().unstack()
      .plot(kind='bar', stacked=True, figsize=(15, 5))