【发布时间】:2021-08-22 20:34:12
【问题描述】:
我有一个包含分类值的列 grade 的数据框。我的问题是,值的类型是float 而不是object。
import pandas as pd
import numpy as np
df = pd.DataFrame(
{
"key": ["K0", "K1", "K2", "K3", "K4"],
"grade": [1.0, 2.0, 2.0, np.nan, 3.0],
}
)
df =
key grade
0 K0 1.0
1 K1 2.0
2 K2 2.0
3 K3 NaN
4 K4 3.0
grade 列中有缺失值。我想通过使用基于 sklearn 的feature-engine 来用最常见的值估算缺失值。 Feature-engine包括广泛使用的缺失数据插补方法,如均值和中值插补、频繁类别插补、随机样本插补等。
安装和加载库:
! pip install feature-engine
from feature_engine.imputation import CategoricalImputer
应用插补:
# set up the imputer
imputer = CategoricalImputer(variables=['grade'], imputation_method='frequent')
# fit the imputer
imputer.fit(df)
# transform the data
df = imputer.transform(df)
df.head()
我收到以下TypeError:
TypeError: Some of the variables are not categorical. Please cast them as object before calling this transformer
我理解错误,但我不明白为什么会出现。根据docs,feature-engine可以用这个转换器处理数值变量。
我的问题是:
- 如何使用相同的变压器解决此问题?我误解了文档吗?
- 如果这个转换器不起作用,您还有什么建议的解决方案?
【问题讨论】:
标签: pandas scikit-learn feature-extraction categorical-data imputation