【问题标题】:How can I replace missing boolean values using python?如何使用 python 替换丢失的布尔值?
【发布时间】:2021-09-27 01:18:51
【问题描述】:
在我的数据集中,其中一列是布尔值,数据集中和其他连续变量列中存在缺失值,这些值已成功替换为平均值。但平均值无法替换缺少的布尔值。那么如何替换这些值呢?
请注意,我的数据集中的布尔值是 1 或 0。
下面是替换连续缺失值的代码:
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(missing_values=np.nan, strategy='mean')
imputer.fit(x)
x = imputer.transform(x)
谢谢
【问题讨论】:
标签:
python
scikit-learn
missing-data
【解决方案1】:
有几种方法可以解决这个问题。
- 如果您负担得起(如果您有足够的数据)排除这些行
- 将这些行替换为多数值(与替换为连续值的平均值相同)
- 对于时间序列 - 将单元格替换为前后 x 个单元格的平均值,并设置一个高于它的阈值 - 平均值将变为 0,否则,平均值将变为 0
【解决方案2】:
您可以将此布尔变量视为分类特征,然后将SimpleImputer 与most_frequent 策略一起使用,而不是mean。
你可以这样做:
from sklearn.impute import SimpleImputer
import numpy as np
#Create sample data with nans
X = np.random.randint(2, size=100).reshape(1,-1).astype(float)
X[0,::4] = np.nan
SimpleImputer(strategy="most_frequent").fit_transform(X)