如何从熊猫数据框中的多列创建单个饼图

时间:2020-06-12 12:23:46

标签: python pandas structure

我有一个看起来像

的数据框
     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个项目)

2 个答案:

答案 0 :(得分:0)

您需要汇总各列以获得绝对频率。假设您使用熊猫,则可以使用df.sum()。然后,您可以使用matplotlib绘制结果。

可以使用快速条形图

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

答案 1 :(得分: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"]])