我了解:“当axis = 0时,仅包含适合的缺失值的列在转换时将被丢弃。” 因此,第一次使用Imputer时,所有的NaN值都将替换为均值,而仅包含缺失值的列将被替换。 我的代码:
df.shape
(1430,488)
#1. delete all columns containing 0
df=df.loc[:, (df != 0).any(axis=0)]
df.shape
(1430,370)
#2. replace all Nan Values with mean
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values='NaN', strategy='mean', axis=0)
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
imputed_data.shape
(1430,321)
#3. replace all 0 Values with mean
from sklearn.preprocessing import Imputer
imr = Imputer(missing_values=0, strategy='mean', axis=0)
imr = imr.fit(df)
imputed_data = imr.transform(df.values)
imputed_data.shape
(1430,167)
因此,在第一步中,我将删除所有包含0的列,然后在步骤2中,计算机将仅删除具有NaN的所有列。但是,为什么要减少步骤3到167列的尺寸呢?我已经在步骤1中删除了只有0的所有列?
另一个问题是如何在不丢失标头的情况下将新的numpy数组转换回熊猫?
谢谢你, R