我有一个包含4列和6行的pandas数据帧。例如:
Healthy state_A state_B state_C
0: Yes 0 1 1
1: No 0 1 0
2: Yes 0 0 1
3: Yes 0 0 1
4: No 0 0 0
5: No 0 0 1
现在我想绘制条形图。每个状态列的总和应该是一个条(即state_A的总和应该对应于一个条,state_B的总和对应于一个条,而state_C的总和对应于一个条)。另外,我想通过Healthy列对它们进行分组,即每个条都应该是分层的。例如,state_C栏的高度为4(总和为4),它应该由两种颜色组成(一种颜色的高度为3,因为我们有三个Healty ==是和另一种颜色高度为1因为我们有一个Healty ==否)。
如何做到这一点?
答案 0 :(得分:2)
不确定我是否正确,但我会尝试。
示例数据:
(列顺序并不重要)
A B C Healthy
0 0 1 1 Yes
1 0 1 0 No
2 0 0 1 Yes
3 0 0 1 Yes
4 0 0 0 No
5 0 0 1 No
<强>图表:强>
import pandas as pd
data = {'Healthy': {0: 'Yes', 1: 'No', 2: 'Yes', 3: 'Yes', 4: 'No', 5: 'No'},
'A': {0: 0, 1: 0, 2: 0, 3: 0, 4: 0, 5: 0},
'B': {0: 1, 1: 1, 2: 0, 3: 0, 4: 0, 5: 0},
'C': {0: 1, 1: 0, 2: 1, 3: 1, 4: 0, 5: 1}}
# create data frame from sample data
df = pd.DataFrame(data)
# sum by state
df_sum = df.sum(numeric_only=True)
# sum group by state
df_gby = df.groupby(['Healthy']).sum(numeric_only=True)
# plot sum
df_sum.plot.bar()
# plot gby sum
df_gby.transpose().plot.bar(stacked=True)
汇总结果:
# df_sum
A 0
B 2
C 4
# df_gby
A B C
Healthy
No 0 1 1
Yes 0 1 3
图片/图形:强>