Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
87 views
in Technique[技术] by (71.8m points)

python - SimpleImputer ValueError

I'm trying to replace NaNs with mean values, but when i do the fit method I get this error:

ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

This is my code:

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

Before you flag it as repost, I know I might import numpy as well and use np.nan instead of "NaN", but isn't there a way to work around it and stick to pandas and SimpleImputer? I was following an online course and I'd like to stick to it as much as I can; unfortunately it's apparently outdated and, for example, it still runs

from sklearn.preprocessing import Imputer
question from:https://stackoverflow.com/questions/65890860/simpleimputer-valueerror

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I'm not sure if I understood your question clearly or not, but I assume instead of pd.NA or np.nan in the columns you want to impute, you have "NaN"(an object type). If that's the case, there's a way to work around it:

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

By doing so, first you replace "NaN" with np.nan, and then you can use SimpleImputer:

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

I hope I understood your question right, and this solution helps you!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...