【问题标题】:How to create grouped barplot from dataframe grouped by two columns with intervals如何从按两列间隔分组的数据框创建分组条形图
【发布时间】:2019-11-11 07:47:49
【问题描述】:

我将数据按两列分组('a''b')。对于每一列,我将其切成箱。 对于每个交叉的垃圾箱,我希望得到'c' 的总和。然后我想为'c' 的总和创建一个分组图。但是,当我在分组数据后使用.plot(kind='bar') 时,条形图没有分组在一起。

grouped = df.groupby([pd.cut(df['a'], [0, 1, 2, 3]), pd.cut(df['b'], [0, 101, 300, 500])])
grouped = grouped.c.sum()
grouped.plot(kind='bar')

ungrouped barplot

我希望图表按'a' 分组,不同颜色代表'b'。我试过.unstack().plot(kind='bar');但是,它返回一个错误:

无法确定类型的下一个标签

【问题讨论】:

    标签: python pandas plot group-by


    【解决方案1】:

    给出以下示例数据

    df = pd.DataFrame({'a': [8, 49, 81, 52, 22, 24, 32, 67, 24, 21, 78, 16, 86, 19, 4, 88, 4, 20, 20, 1],
                       'b': [2, 49, 49, 70, 31, 47, 98, 26, 55, 36, 17, 39, 56, 80, 52, 36, 42, 69, 73, 70],
                       'c': [22, 99, 31, 95, 16, 32, 81, 20, 58, 23, 53, 5, 0, 81, 8, 68, 16, 36, 35, 54]})
    

    和你的设置

    grouped = df.groupby([pd.cut(df['a'], [16, 30, 67, 86]),
                          pd.cut(df['b'], [0, 26, 49, 100])])
    grouped = grouped['c'].sum()
    

    你有两个选择

    • (grouped.reset_index()
              .pivot('a', 'b')
              .plot(kind='bar'));
      

    • grouped = grouped.unstack()
      grouped.columns = grouped.columns.categories
      grouped.plot(kind='bar');
      

    【讨论】:

      猜你喜欢
      • 2018-12-22
      • 2021-10-14
      • 2020-10-10
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多