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

使用sklearn SimpleImputer后仍存在缺失值的问题排查

问题分析与修正

你的代码出现残留NaN的核心原因是赋值时的索引不匹配,另外代码写法也可以简化优化,具体问题和解决方法如下:

问题点拆解

  1. 索引不匹配:你将fit_transform的结果转为DataFrame后赋值给原列,新生成的DataFrame使用默认的连续整数索引。如果原imputed_X_temp的索引不是连续整数(比如存在非整数索引、缺失的整数索引),就会导致部分行无法匹配,保留原始NaN。
  2. 冗余的数组转换:使用Series.array.reshape(-1,1)的写法既繁琐,又容易引入数据结构的潜在问题,不如直接传入DataFrame列更稳妥。

修正后的代码

from sklearn.impute import SimpleImputer
import pandas as pd

imputer_const = SimpleImputer(strategy="constant", fill_value="US")
imputed_X_temp = X_temp.copy()
# 直接传入列的DataFrame形式,转换后用ravel()转为一维数组赋值,保证索引完全匹配
imputed_X_temp["countryCode"] = imputer_const.fit_transform(imputed_X_temp[["countryCode"]]).ravel()

额外检查项

如果修正后仍有NaN,建议排查:

  • 原数据中是否存在非NaN的缺失值(比如空字符串、空格、None等),可以用imputed_X_temp["countryCode"].replace(["", " "], pd.NA, inplace=True)先统一转为NaN再处理。
  • 确认countryCode列的数据类型是否为字符串,混合类型可能导致SimpleImputer无法正确识别缺失值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:25:24