Построение группового объекта pandas в виде сложенной горизонтальной гистограммы

#python #matplotlib #pandas

#python #matplotlib #pandas

Вопрос:

У меня есть pandas 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
  

Какую функцию мне нужно использовать для достижения этой цели?

Ответ №1:

Это было намного проще, чем я думал. Это просто случай вызова unstack groupby объекта, а затем его построения.

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

Документы для укладки и распаковки

Ответ №2:

 piv = pd.pivot_table(datasetname, values="counts",index=["buildingtype"], columns=["m2"], fill_value=0)
  

Комментарии:

1. Есть ли причина, по которой это лучший подход?

2. @kathleen, хотя ваш ответ может быть правильным, было бы неплохо, если бы вы немного прокомментировали его.