处理缺失的分类数据时出现属性错误
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]])
我正在尝试使用 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]])