【问题标题】:How to plot percentage of NaN in pandas data frame?如何在熊猫数据框中绘制 NaN 的百分比?
【发布时间】:2021-05-19 02:47:47
【问题描述】:

我希望有人帮我绘制 Pandas 数据框的 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

现在,我想绘制百分比以及数据框的列名。谁能帮帮我?

问候。


更新:图表如下所示。怎么美化这个,才能看清楚列名?

另外,是否可以如下图所示在每个条上显示百分比?


更新:唯一的问题是人力资源百分比:

【问题讨论】:

  • 下面发布的答案能解决您的问题吗?
  • 嗨。是的,它确实。但我面临一个问题。那些具有零 nan 值的列也在图表中,但图表看起来不太好。
  • 更新了我的问题。如何调整列名以便看得清楚?
  • 您好,我已经更新了解决方案。请看看是否能解决您的问题。
  • 嗨.. 非常感谢 :) 它确实解决了问题。但是我遇到了人力资源百分比的问题。查看问题。

标签: python dataframe plot nan percentage


【解决方案1】:

您可以使用以下代码 sn-p:: 绘制条形图

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, item[1] + 1.5 , str(np.round(item[1],2)))

如果尚未完成,您将需要导入 numpy: import numpy as np

【讨论】:

  • 很高兴它对您有用。如果您能接受答案(在投票部分下方打勾)以确认它是解决方案,我将不胜感激。
  • 完成 :) 我是这个网站的新手,所以 IDK 这是如何工作的。顺便说一句,再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
  • 2019-12-14
  • 1970-01-01
  • 2023-03-03
  • 1970-01-01
  • 2015-10-07
相关资源
最近更新 更多