来自pandas数据框的堆叠图

0 投票
1 回答
2685 浏览
提问于 2025-04-30 22:59

我想根据下面这个数据表创建一个堆叠条形图:

   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。每根条会分成三个部分,分别对应RECL_LCC和RECL_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)

但是,我得到的图是这样的:

在这里输入图片描述

有没有什么办法可以让我得到两列(RECL_LCC和RECL_PI),而不是现在的三列?

暂无标签

1 个回答

2

你的问题是数据类型不是数字,所以聚合函数无法使用,因为它们是字符串。你可以像下面这样把每个出问题的列转换成数字:

df['col'] = df['col'].astype(int)

或者你也可以直接在数据框上调用 convert_objects 方法:

df.convert_objects(convert_numeric=True)

撰写回答