【问题标题】:Plotting pandas groupy object as stacked horizontal bar chart将 pandas groupby 对象绘制为堆叠的水平条形图
【发布时间】:2014-06-19 13:01:12
【问题描述】:

我有一个熊猫DataFrame,我用groupby 把它变成了以下格式:

Building Type 1            1000 - 3000m2      0.766355
                           3000 - 10000m2     0.140187
                           300 - 1000m2       0.084112
                           10000 - 30000m2    0.009346
Building Type 2            1000 - 3000m2      1.000000
Building Type 3            1000 - 3000m2      0.666667
                           3000 - 10000m2     0.222222
                           10000 - 30000m2    0.055556
                           300 - 1000m2       0.055556
Building Type 4            1000 - 3000m2      0.526316
                           3000 - 10000m2     0.473684

我想要做的是创建一个水平堆叠条形图,其中每种建筑类型都有一个条形图。本质上我想将数据转换为以下格式:

Building Type       300 - 1000m2    1000 - 3000m2   3000 - 10000m2  10000 - 30000m2
Building Type 1     0.084112        0.766355        0.140187        0.009346
Building Type 2                     1.000000
Building Type 3     0.055556        0.666667        0.222222        0.055556
Building Type 4                     0.526316        0.473684

我需要使用什么函数来实现这一点?

【问题讨论】:

    标签: python matplotlib pandas


    【解决方案1】:

    这比我想象的要容易得多。这只是在groupby 对象上调用unstack 然后绘制它的简单情况。

    df = grouped.unstack()
    df.plot(kind='barh', stacked=True)
    

    Stacking and unstacking docs

    【讨论】:

      【解决方案2】:
      piv = pd.pivot_table(datasetname, values="counts",index=["buildingtype"], columns=["m2"], fill_value=0)
      

      【讨论】:

      • 有什么理由认为这是一种更好的方法?
      • @kathleen,即使你的答案可能是正确的,如果你能稍微评论一下就好了。
      猜你喜欢
      • 1970-01-01
      • 2015-02-11
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      相关资源
      最近更新 更多