use*_*195 1 python matplotlib pandas
我有一个 Pandas 数据框(1800 obs),看起来像这样:
A B C D
1 CL0 CL1 CL2 CL0
2 CL2 CL1 CL1 CL3
3 CL3 CL2 CL0 CL1
. ... ... ... ...
. ... ... ... ...
n CL2 CL1 CL0 CL3
Run Code Online (Sandbox Code Playgroud)
我想创建一个堆叠条形图,该图在 x 轴上具有列“A”、“B”、“C”、“D”,在 y 轴上具有该功能中每个级别的百分比。就像下面的图片一样。
我猜我需要以某种方式将数据制成表格?但我不知道该怎么做。
print(df)
Run Code Online (Sandbox Code Playgroud)
输出:
A B C D
1 CL0 CL1 CL2 CL0
2 CL2 CL1 CL1 CL3
3 CL3 CL2 CL0 CL1
Run Code Online (Sandbox Code Playgroud)
使用.apply()
counts = df.apply(lambda x: x.value_counts() / len(x)).transpose()
fig = plt.figure()
ax = fig.add_subplot(111)
counts.plot(ax=ax,kind='bar', stacked=True, rot=0)
vals = ax.get_yticks()
ax.set_yticklabels(['{:3.2f}%'.format(x*100) for x in vals])
ax.yaxis.grid(True)
ax.set_axisbelow(True)
plt.show()
Run Code Online (Sandbox Code Playgroud)
输出:
| 归档时间: |
|
| 查看次数: |
5888 次 |
| 最近记录: |