处理缺失的分类数据时出现属性错误

Attribute error when handling missing categorical data

我正在尝试使用 sklearn_pandas 中的 CategoricalImputer 填充 NaN 分类值。

from sklearn_pandas import CategoricalImputer
imputer = CategoricalImputer()

nan_columns = train_df.loc[:, train_df.isnull().any()]

for column in nan_columns:
  imputer.fit_transform(column)

但是 imputer.fit_transform(column) 给我这个错误:

AttributeError: 'str' object has no attribute 'copy'

我正在按照文档执行此操作。我哪里错了?

编辑:

我添加了这个单元格:

from sklearn.impute import SimpleImputer

nan_columns = train_df.loc[:, train_df.isnull().any()]
imputer = SimpleImputer(strategy="most_frequent")

imputer.fit_transform(train_df)
msno.bar(train_df.sample(1000), labels=True, fontsize=8)

然而,它没有用。这是显示列中仍有缺失值的条形图:

您可以使用 scikit-learn 中的 SimpleImputer 和分类值,方法是使用 `strategy="most_frequent".

imp = SimpleImputer(strategy="most_frequent")
df = pd.DataFrame({"x": ["a", "a", np.nan],
                   "y": ["c", np.nan, "c"],
                   "z": ["a", np.nan, np.nan]})
print(df)
df[:] = imp.fit_transform(df)
print(df)

产量

     x    y    z
0    a    c    a
1    a  NaN  NaN
2  NaN    c  NaN

   x  y  z
0  a  c  a
1  a  c  a
2  a  c  a

如果您只想在字符串或分类列上使用它:

for col, tp in df.dtypes.items():
    if tp == object or tp.name == "category":
        df[col] = imp.fit_transform(df[[col]])