首页 > 解决方案 > SimpleImputer ValueError

问题描述

我正在尝试用平均值替换 NaN,但是当我执行 fit 方法时出现此错误:

ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。

这是我的代码:

from sklearn.impute import SimpleImputer
imp = SimpleImputer(missing_values = "NaN", strategy = "mean")
imp = imp.fit(df_missing.iloc[:, 1:4])

在将其标记为转发之前,我知道我也可以导入 numpy 并使用 np.nan 而不是“NaN”,但是没有办法解决它并坚持使用 pandas 和 SimpleImputer 吗?我正在学习在线课程,我想尽可能地坚持下去;不幸的是,它显然已经过时了,例如,它仍在运行

from sklearn.preprocessing import Imputer

标签: pythonpandasscikit-learn

解决方案


我不确定我是否清楚地理解了您的问题,但我假设您拥有(对象类型)而不是pd.NA or np.nan您想要估算的列。"NaN"如果是这种情况,有一种方法可以解决它:

df_missing.iloc[:, 1:4] = df_missing.iloc[:, 1:4].replace({"NaN": np.nan})

通过这样做,首先你替换"NaN"np.nan,然后你可以使用 SimpleImputer:

imp = SimpleImputer(strategy = "mean")
imp = imp.fit(df_missing.iloc[:, 1:4])

我希望我正确理解了您的问题,并且此解决方案可以帮助您!


推荐阅读