我正在尝试创建一个复制图片的堆积条形图,我的所有数据都与excel电子表格分开。
我无法弄清楚如何为它制作数据帧,如图所示,我也无法弄清楚如何制作堆积条形图。我找到的所有示例都以不同的方式工作,而不是我想要创建的内容。
我的数据帧是所有值的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)
答案 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)
答案 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))