如何筛选DataFrame中包含缺失值的列?
筛选含缺失值的列绘制热力图
你之前的尝试逻辑有误,正确的做法是先筛选出至少包含一个缺失值的列,再生成缺失值可视化所需的数据:
- 筛选目标列并生成缺失值数据
# 找出所有存在缺失值的列名 cols_with_missing = df.columns[df.isna().sum() > 0] # 仅保留这些列,再转换为适合seaborn的长格式数据 missing_data = df[cols_with_missing].isna().melt(value_name="missing")
- 传入数据绘制图表,还可以根据列数动态调整图表高度,避免手动设置固定值:
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
相关产品推荐
相关产品推荐

