【发布时间】:2014-10-04 02:03:14
【问题描述】:
我有一些带有文本类型列的 pandas 数据。这些文本列有一些 NaN 值。我想要做的是用sklearn.preprocessing.Imputer 估算那些NaN(用最常见的值替换NaN)。问题在于实施。
假设有一个 Pandas 数据框 df,它有 30 列,其中 10 列是分类性质的。
一旦我运行:
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)
imp.fit(df)
Python 生成一个error: 'could not convert string to float: 'run1'',其中“run1”是第一列的普通(非缺失)值,包含分类数据。
非常欢迎任何帮助
【问题讨论】:
-
Imputer适用于数字,而不是字符串。转换为数字,然后估算,然后再转换回来。 -
有没有合适的方法通过 scikit-learn 实现自动化?
-
为什么不允许 most_frequent 策略使用分类变量?奇怪。
-
您现在可以使用
from sklearn.impute import SimpleImputer,然后使用imp = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
标签: python pandas scikit-learn imputation