Pandas的GroupBy和pie图

2024-06-01 04:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有数据。标记-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);

我计算了小组中每个人的分数。我不知道如何得到百分比。我还为每个人建立了一个图表,但我不知道如何按图形分组


Tags: columnsnamedataframedfdataplotsamgroup
1条回答
网友
1楼 · 发布于 2024-06-01 04:43:12

您可以使用^{}进行简单的百分比显示。我认为这是数据结构的影响,但您将看到额外的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

相关问题 更多 >