如何在python中绘制双变量数据的饼图

时间:2018-07-26 17:08:25

标签: python python-3.x pandas

我有一个数据框:

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可以有多种类型。我必须处理多个数据帧,它们具有相同的级别,但类型不同。

我试图在df上使用groupby,但是它不起作用。

df = df.groupby(['level', 'type']).size().unstack(fill_value=0)

1 个答案:

答案 0 :(得分: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)

希望有帮助。