SCIKITLINK使用时减少输入尺寸twi

2024-07-05 11:06:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道:“当axis=0时,在fit处只包含缺失值的列在转换时被丢弃。” 所以我第一次使用插补器时,所有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的列,然后在第二步中,插补器删除所有只有NaN的列。但是,为什么在第3步到第167列时维度会减少呢?我已经删除了步骤1中只有0的所有列?你知道吗

另一个问题是如何将新的numpy数组转换回pandas而不丢失标头?你知道吗

谢谢你, 右


Tags: dfdatawithnanallmeanreplacefit