熊猫的GroupBy和饼图

时间:2020-10-10 12:26:11

标签: python pandas matplotlib

我有数据。标记-5个唯一值,名称-200个以上的人员,组-10个值,会议-50个值,当前-最大值为20。每个会议由演示文稿组成。 小例子:

data = [
 ['A', 'Frodo', 'group_1', 1, 1],
 ['A', 'Sam', 'group_2', 1, 1],
 ['N', 'Frodo', 'group_1', 1, 2],
 ['A', 'Sam', 'group_2', 1, 2],
 ['Z', 'Frodo', 'group_1', 1, 3],
 ['N', 'Sam', 'group_2', 1, 3],
 ['M', 'Frodo', 'group_1', 1, 4],
 ['Z', 'Sam', 'group_2', 1, 4],
 ['O', 'Frodo', 'group_1', 1, 5],
 ['A', 'Sam', 'group_2', 1, 5]]
df = pd.DataFrame(data, columns=['mark', 'name', 'group', 'meeting', 'present'])

我想为每个小组得到一个饼图,其中每个人都将绘制其分数“ N”相对于其余分数的百分比。 作为标题,我想要一个组的名称,每个组都有一个饼图,以该人的名字命名,并且在图表内部以百分比表示数字。

plot_df = pd.DataFrame(df.groupby(['name', 'group'])['mark'].value_counts()).rename(columns={'mark':'mark_count'})
plot_df.unstack(level=0).plot(kind='pie', stacked=True, subplots=True, figsize = (7,7), legend=False);

我计算了小组中每个人的分数。我不知道如何获得百分比。我还为每个人创建了一个图,但是我不知道如何按组对图进行分组。

1 个答案:

答案 0 :(得分:2)

您可以使用autopct=来显示简单的百分比。我认为这是数据结构的影响,但您会看到额外的0%显示。

plot_df.unstack(level=0).plot(
    kind='pie',
    stacked=True,
    subplots=True,
    autopct='%1.1f%%',
    figsize=(7, 7),
    legend=False,
    )

enter image description here