如何在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。如果没有图例,我怎么知道饼图的哪个部分是什么?这没有任何意义。