You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python填补数据集中取值为0/1的缺失布尔值?

布尔类型字段缺失值处理方案

布尔字段属于二分类离散变量,均值属于连续变量统计量,确实不适合用来填补这类字段的缺失,可根据你的数据集特性和业务需求选择以下方案:

1. 众数填补

适合缺失随机、缺失占比不高,且没有明确业务含义说明缺失值代表特定状态的场景,直接用现有非缺失值里出现频次更高的0/1填充缺失项,基于你之前用的SimpleImputer只需修改策略即可:

from sklearn.impute import SimpleImputer
import numpy as np

# 布尔列单独提取处理,假设布尔列名为bool_col,x是你的特征矩阵
bool_imputer = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
x['bool_col'] = bool_imputer.fit_transform(x[['bool_col']])

2. 固定常量填补

如果缺失本身有明确业务含义,比如布尔字段代表「是否开通会员」,缺失代表用户从未触发过会员相关操作,默认属于未开通,就可以直接固定填充0或1:

# 固定填充0的示例
const_imputer = SimpleImputer(missing_values=np.nan, strategy='constant', fill_value=0)
x['bool_col'] = const_imputer.fit_transform(x[['bool_col']])

如果业务允许把缺失作为独立状态,也可以把布尔字段转成三值离散变量(比如0/1/2,2代表缺失),避免原有分布被修改。

3. 模型预测填补

如果布尔列缺失占比偏高,且你数据集里其他特征和该布尔列相关性较强,可以用其他特征作为输入训练分类模型,预测缺失的布尔值,可选的实现包括sklearn的KNNImputer、逻辑回归预测等。

4. 删除缺失行

如果布尔列的缺失占比极低(通常低于1%),删除缺失行不会明显改变数据集分布,也可以直接删除对应样本:

x = x.dropna(subset=['bool_col'])

方案选择参考

  • 优先确认缺失值的产生原因,有业务指向的优先按业务规则处理
  • 缺失率<5%:可选择删除或众数填补
  • 缺失率>20%:不建议直接用众数填补,优先考虑业务规则或预测填补,评估填补后对下游任务的影响

内容的提问来源于stack exchange,提问作者Usama Waseem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 19:21:02