Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中为二元数据绘制饼图_Python_Python 3.x_Pandas - Fatal编程技术网

如何在python中为二元数据绘制饼图

如何在python中为二元数据绘制饼图,python,python-3.x,pandas,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、

我有一个数据框:

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)
那就行了

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)

希望能有所帮助。

就此而言,别忘了添加您所期望的内容。在这个图例中,每个饼图都会重复出现。是否有一种方法可以让legend只发布一次,而不是y='count',是否可以在每个饼图旁边发布'name'?我插入了y='name',但它给出了错误。我已编辑了我的答案,以添加标题并更改ylable。我还删除了传奇。添加1个图例要困难得多。因此,我建议从多个图例中进行选择,而不是从没有图例中进行选择。请您指导我可以看到您使用的plot()方法的软件包,以便我可以操作颜色选择等。它不是来自matplotlib。在我的代码中,plot方法是matplotlib的Pandas API。从matplotlib到plot方法,您可以提供许多KWARG。或者您可以将绘图方法的返回赋值给变量,在我的例子中是ax。如果没有图例,我怎么知道饼图的哪个部分是什么?这没有任何意义。