【问题标题】:Stacked plot from pandas dataframe来自 pandas 数据框的堆叠图
【发布时间】:2014-10-31 20:47:14
【问题描述】:

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

   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

图中将有 2 个条形图。一个用于 RECL_LCC,另一个用于 RECL_PI。每个栏中将有 3 个部分对应于 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)

但是,我得到了这个情节:

知道如何获取 2 列(RECL_LCC 和 RECL_PI)而不是这 3 列吗?

【问题讨论】:

  • 你所有的数据类型都是数字的吗?您可以执行 df = df.convert_objects(convert_numeric=True) 以确保 dtypes 是 ints/floats
  • 同意@EdChum。你的代码在我这边检查(我可以很好地绘制它)。
  • 谢谢!这是需要的,修改代码以包含 convert_objects 语句。情节仍然需要一些工作。
  • 我应该发布答案吗?
  • 你的答案是否也包括对情节的修复?

标签: python pandas stacked


【解决方案1】:

所以你的问题是 dtypes 不是数字所以没有聚合函数可以像字符串一样工作,所以你可以像这样转换每个有问题的列:

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

或者直接在 df 上拨打convert_objects

df.convert_objects(convert_numeric=True)

【讨论】:

  • 谢谢!你怎么知道它们不是数字的?
  • 在您的原始帖子中,您遇到了错误:*** TypeError: Empty 'DataFrame': no numeric data to plot 现在,在执行聚合后获得空数据框的唯一方法是,如果您的列都不是数字
  • 明白了,现在有意义
  • 我不知道您是如何创建 df 但通常您可以在加载数据或创建 df 时指定 dtype
  • 我是用from_csv读的,没有dtype,好像
猜你喜欢
  • 2023-01-11
  • 2019-05-08
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 2021-04-10
  • 1970-01-01
  • 2019-04-15
  • 1970-01-01
相关资源
最近更新 更多