在pandas中制作堆叠条形图

8

我想从以下数据框创建一个堆积条形图:

   VALUE     COUNT  RECL_LCC  RECL_PI
0      1  15686114         3        1
1      2  27537963         1        1
2      3  23448904         1        2
3      4   1213184         1        3
4      5  14185448         3        2
5      6  13064600         3        3
6      7  27043180         2        2
7      8  11732405         2        1
8      9  14773871         2        3

绘图中将会有两个条形图,一个是RECL_LCC,另一个是RECL_PI。每个条形图中将会有3个部分,对应于RECL_LCCRECL_PI中的唯一值,即1、2、3,并且会累加每个部分的COUNT计数。到目前为止,我有以下内容:

df = df.convert_objects(convert_numeric=True)    
sub_df = df.groupby(['RECL_LCC','RECL_PI'])['COUNT'].sum().unstack()
sub_df.plot(kind='bar',stacked=True)

然而,我得到了这个图表: enter image description here 有什么解决方法吗?我在使用groupby时做错了什么,但不确定解决方法。
1个回答

8
我已经把展示在stackpandas.dat文件中的数据放好了。根据这些数据:
from pandas import *
import matplotlib.pyplot as plt

df = read_table("stackpandas.dat"," +",engine='python')

df = df.convert_objects(convert_numeric=True)
sub_df1 = df.groupby(['RECL_LCC'])['COUNT'].sum()
sub_df2 = df.groupby(['RECL_PI'])['COUNT'].sum()
sub_df = concat([sub_df1,sub_df2],keys=["RECL_LCC","RECL_PI"]).unstack()
sub_df.plot(kind='bar',stacked=True,rot=1)
plt.show()

...给出:

在此输入图片描述

...我认为这就是所需的。


我在类似的问题上遇到了困难(https://stackoverflow.com/questions/62151364/datetime-stacked-bar-chart-with-matplotlib-from-dataframe)。你能帮帮我吗? - 3kstc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接