Как построить круговую диаграмму для двумерных данных в Python

1

У меня есть кадр данных:

level type count
A      00   123
B      00   542
C      00   985
D      00   786
A      01   423
B      01   552
C      01   785
D      01   686 
A      02   523
B      02   642
C      02   385
D      02   86

Я хочу четыре круговых диаграммы под 4 различными уровнями: каждая круговая диаграмма содержит данные о разных типах 00,01,02 и т.д.

A  - pie chart1 contains information about different 'type'
B  - pie chart2 contains information about different 'type'
C  - pie chart3 contains information about different 'type'
D  - pie chart4 contains information about different 'type'

На самом деле я должен сделать эту динамику. Только разные уровни, например, A,... D фиксированы. Но разные типы 00,01,... 09,10 могут переходить ко многим типам в зависимости от кадров данных, которые я выберу. Я должен обрабатывать несколько фреймов данных, и они имеют одинаковый уровень, но разные типы.

Я пытался использовать groupby на df, но это не сработало.

df = df.groupby(['level', 'type']).size().unstack(fill_value=0)
  • 0
    В связи с этим, не забудьте добавить, что именно вы ожидаете.
Теги:
pandas
python-3.x

1 ответ

1
Лучший ответ

Это будет работать!

import pandas as pd

df = pd.DataFrame({'level': ['A', 'B', 'C', 'D', 'A', 'B', 'C', 'D', 'A', 'B', 'C', 'D'],
                   'type': ['00', '00', '00', '00', '01', '01', '01', '01', '02', '02', '02', '02'],
                   'count':[123, 542, 985, 789, 423, 552, 785, 686, 523, 642, 385, 85]})

# Group it
group_df = df.groupby(['level'])    

for name, group in group_df:
    ax = group.groupby(['type']).sum().plot(kind='pie', y='count', legend=None, title=name)
    ax.set_ylabel(name)

Надеюсь, поможет.

  • 0
    В этой легенде повторяется для каждой круговой диаграммы. Есть ли способ, которым легенда будет публиковать только один раз, и вместо y = 'count', возможно ли публиковать 'name' на каждой круговой диаграмме? Я вставил y = 'name', но это дает ошибку.
  • 0
    Я отредактировал свой ответ, чтобы добавить заголовок и изменить ylable. Я также удалил легенду. Гораздо сложнее добавить 1 легенду. Поэтому я предлагаю выбрать из нескольких легенд против не легенды.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню