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

使用SimpleImputer填充np.nan后DataFrame仍存在缺失值是什么原因

错误原因与修复方案
  • SimpleImputer的fit_transform()方法仅返回填充完成后的新数组,不会修改传入的原始DataFrame对象。你当前代码没有将填充结果赋值回df变量,后续调用msno.matrix(df)可视化的仍是未处理的原始数据,所以会看到缺失值未被替换。

修正后的完整代码如下:

from sklearn.impute import SimpleImputer 
import missingno as msno
import numpy as np
import pandas as pd

# 初始化填充器
imp = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
# 将填充结果转回DataFrame,保留原始列名与索引
df = pd.DataFrame(imp.fit_transform(df), columns=df.columns, index=df.index)
# 可视化处理后的数据
msno.matrix(df)

其他可能导致缺失值未被填充的原因:

  • 数据中存在非np.nan格式的缺失标记,比如空字符串''、字符串形式的'NaN'/'nan'、None等,这些值不会被配置为missing_values=np.nan的填充器识别,需要先统一转换为np.nan再执行填充操作:
# 统一替换所有常见缺失标记为np.nan
df = df.replace(['', 'NaN', 'nan', 'None', None], np.nan)
  • 若存在整行全部为空的记录,可额外添加删除全空行的逻辑:
# 删除全为空值的行
df = df.dropna(how='all')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:27:01