我有一个看起来像
的数据框 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个项目)
答案 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"]])