如何在pandas数据框架中从多列创建一个饼图?

问题描述 投票:0回答:1

我有一个数据框架,它看起来像

     Q1_1  Q1_2  Q1_3  Q1_4  Q1_5  Q1_6  Q1_7  Q1_8  Q1_9  Q1_10
0     0     0     1     0     1     0     0     0     0      0
1     0     0     0     0     0     0     0     0     1      0
2     0     0     0     0     0     1     0     0     1      0
3     1     0     1     0     1     0     0     0     0      0
4     0     0     1     0     0     0     0     0     0      0

列描述了一个问题的选项,例如,教授(Q1_1)、面包师(Q1_2)、屠夫(Q1_3)、水管工(Q1_4)等。

我希望用饼图和条形图来显示绝对和相对频率,说明所有列的绝对值和百分比,所以在这种情况下,将有10块饼和10个条形图;例如col= Q1_5,数值将是20%(2个项目)。

python pandas structure
1个回答
0
投票

你需要将各列相加得到绝对频率。假设你使用pandas,你可以使用 df.sum() 的。然后你可以用matplotlib绘制结果。

对于一个快速的条形图,你可以使用

df.sum().plot(kind=bar)


0
投票

我想明白了。

首先,你需要 "将所有的列平移为一列"。

df['Q1_all'] = (df.iloc[:, 0:] == 1).idxmax(1)

然后应用任何函数

cross_tab_Q1_group = pd.crosstab([df.Q1_all], [df.group])
cross_tab_Q1_group.plot(kind="barh", stacked=True, color=[sns.xkcd_rgb['medium green'], sns.xkcd_rgb["pale red"], sns.xkcd_rgb["denim blue"]])
© www.soinside.com 2019 - 2024. All rights reserved.