You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何筛选DataFrame中包含缺失值的列?

筛选含缺失值的列绘制热力图

你之前的尝试逻辑有误,正确的做法是先筛选出至少包含一个缺失值的列,再生成缺失值可视化所需的数据:

  1. 筛选目标列并生成缺失值数据
# 找出所有存在缺失值的列名
cols_with_missing = df.columns[df.isna().sum() > 0]
# 仅保留这些列,再转换为适合seaborn的长格式数据
missing_data = df[cols_with_missing].isna().melt(value_name="missing")
  1. 传入数据绘制图表,还可以根据列数动态调整图表高度,避免手动设置固定值:
import seaborn as sns
import matplotlib.pyplot as plt

sns.displot(
    data=missing_data,
    y="variable",
    hue="missing",
    multiple="fill",
    height=len(cols_with_missing)*0.8  # 按列数动态调整,每列分配0.8单位高度
)
plt.show()

错误原因说明

  • df[df.columns.values.isna()]:这是筛选列名本身为缺失值的列,不是列内有缺失值的列,不符合需求。
  • df[df.isna().sum() > 0]:df.isna().sum()默认按列计算缺失数,得到的是一个长度等于列数的数组,用它来索引DataFrame会被当作行索引筛选,导致逻辑错误。

内容的提问来源于stack exchange,提问作者bajun65537

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 18:30:54