У меня есть кадр данных:
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)
Это будет работать!
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)
Надеюсь, поможет.