两次使用Scikit-learn Imputer减少尺寸

时间:2018-09-21 09:20:16

标签: python scikit-learn dimension

我了解:“当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

0 个答案:

没有答案