Я понимаю, что: «Когда ось = 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 столбцов?Я уже удалил все столбцы только с 0 на шаге 1?
Другой вопрос: как я могу преобразовать новый массив numpy обратно в pandas, не теряя заголовок?
Спасибо, R