Lit*_*tle 2 python pandas scikit-learn
我正在使用以下数据集:
它说有一些用“?”标记的缺失值。我想应用 SimpleImputer 库,我的代码如下:
file="breast_cancer"
df=pd.read_csv(file,names=['id', 'clump_thickness','unif_cell_size',
'unif_cell_shape', 'marg_adhesion', 'single_epith_cell_size',
'bare_nuclei', 'bland_chromatin', 'normal_nucleoli','mitoses','class'])
df.replace('?',np.NaN,inplace=True)
imp=SimpleImputer(missing_values="NaN")
idf=pd.DataFrame(imp.fit_transform(df))
idf.columns=df.columns
idf.index=df.index
Run Code Online (Sandbox Code Playgroud)
所以我想替换所有的?来自所有具有均值的列的值,并返回一个新的数据框。问题是我收到以下错误:
Input contains NaN, infinity or a value too large for dtype('float64').
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢
您正在尝试估算 a "NaN"、 a str,而您已替换?为np.NaN。
实例化SimpleImputer与np.nan和正常工作:
df.replace('?',np.NaN,inplace=True)
imp=SimpleImputer(missing_values=np.NaN)
idf=pd.DataFrame(imp.fit_transform(df))
idf.columns=df.columns
idf.index=df.index
idf['bare_nuclei'].isna().sum()
Run Code Online (Sandbox Code Playgroud)
输出:
0
# No nan : Imputing successful
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9696 次 |
| 最近记录: |