print(np.shape(ar_fulldata_input_xx))
输出: (9027, 1443)
现在我使用Imputer
来填补我的数据框ar_fulldata_input_xx
中的缺失值,如下所示。
fill_NaN = Imputer(missing_values=np.nan, strategy='mean', axis=0)imputed_DF = pd.DataFrame(fill_NaN.fit_transform(ar_fulldata_input_xx))
现在我检查填补后的数据框的大小,如下所示。
print(np.shape(imputed_DF))
输出: (9027, 1442)
为什么列的大小减少了一个?
有没有什么方法可以找出填补函数后哪个列发生了变化?
我已经运行了以下代码行,以删除所有值为”NAN”或所有值为”0″的列。
ar_fulldata_input_xx = ar_fulldata_input_xx.loc[:, (ar_fulldata_input_xx != 0).any(axis=0)]
和
ar_fulldata_input_xx=ar_fulldata_input_xx.dropna(axis=1, how='all')
回答:
你可以使用pandas来实现这一点:
ndf = df.fillna(df.mean())
似乎有一个列在从原始文件导入数值时出现了问题,因此很可能这是Imputer不起作用的原因。原帖作者正在查看这个问题。