问题描述
我希望有人帮助我绘制熊猫数据框的 NaN 百分比。我使用此代码计算了百分比。
per_1 = df_1.isna().mean().round(4) * 100
它给了我这个结果。
HR 7.94
O2Sat 10.36
Temp 66.06
SBP 15.20
MAP 9.17
Age 0.00
Gender 0.00
ICULOS 0.00
SepsisLabel 0.00
Patient_iD 0.00
现在,我想绘制百分比以及数据框的列名。有人可以帮我吗?
问候。
更新:图表如下所示。怎么美化这个才能看清楚列名?
此外,是否可以在每个条形上显示百分比,如下图所示?
更新:唯一的问题是人力资源百分比:
解决方法
您可以使用以下代码片段绘制条形图::
import matplotlib.pyplot as plt
plt.bar(per_1.keys(),per_1.values)
plt.show()
示例输出:
更新:
根据您对问题的更新,这是一个仅保留百分比大于零的列的解决方案。此外,该图已根据要求美化,并在每个条形图上显示值。
f,ax = plt.subplots()
for i,item in enumerate(zip(per_1.keys(),per_1.values)):
if (item[1] > 0):
ax.bar(item[0],item[1],label = item[0])
ax.text(i - 0.25,item[1] + 1.5,str(item[1]))
ax.set_xticklabels([])
ax.set_xticks([])
plt.ylim(0,80)
plt.ylabel('Percentage')
plt.xlabel('Columns')
plt.legend()
plt.show()
样本输出:
更新 2:
要将小数四舍五入到两位小数,请替换之前代码中的这一行:
ax.text(i - 0.25,str(np.round(item[1],2)))
如果尚未完成,您将需要导入 numpy:
import numpy as np