如何从 pandas 数据框中的多个列创建单个饼图
How to create a single pie chart from multiple columns in a pandas data-frame
我有一个看起来像
的数据框
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 项)
您需要对列求和以获得绝对频率。假设您使用 pandas,您可以为此使用 df.sum()
。然后你可以用matplotlib绘制结果。
对于快速条形图,您可以使用
df.sum().plot(kind=bar)
我明白了。
首先你需要"flatten all the columns in to one column":
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"]])
我有一个看起来像
的数据框 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 项)
您需要对列求和以获得绝对频率。假设您使用 pandas,您可以为此使用 df.sum()
。然后你可以用matplotlib绘制结果。
对于快速条形图,您可以使用
df.sum().plot(kind=bar)
我明白了。
首先你需要"flatten all the columns in to one column":
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"]])