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

Scikit-learn如何仅对特定列执行缺失值插补?

仅对特定列进行缺失值插补的实现方案

当然可以只针对特定列做缺失值插补!这种场景在数据预处理里非常常见,完全不用动其他无缺失的列,精准操作目标列就行。下面我用Python生态里最常用的工具给你演示具体实现:

先构造符合你场景的示例数据

import pandas as pd
import numpy as np

# 模拟你的数据集:A(分类列无缺失)、B(数值列无缺失)、C(数值列有缺失)
df = pd.DataFrame({
    'A': ['X', 'Y', 'X', 'Y', 'X'],
    'B': [10, 20, 30, 40, 50],
    'C': [1.5, np.nan, 3.5, np.nan, 5.5]
})

方法1:用Pandas直接对目标列操作(最简便)

Pandas的fillna()方法可以直接作用于单个列,完全不影响其他列:

  • 均值填充:适合数据分布对称、无明显异常值的情况
# 仅对C列用均值填充缺失值
df['C'] = df['C'].fillna(df['C'].mean())
  • 中位数填充:如果C列存在异常值,中位数比均值更稳健
# 仅对C列用中位数填充缺失值
df['C'] = df['C'].fillna(df['C'].median())
  • 自定义值填充:如果业务上有特定规则(比如用0或业务默认值)
# 仅对C列用自定义值(比如0)填充缺失值
df['C'] = df['C'].fillna(0)

方法2:用Scikit-learn的插补器(适合更复杂的预处理流程)

如果你需要把插补步骤整合到机器学习流水线里,可以用SimpleImputer,同样只针对C列:

from sklearn.impute import SimpleImputer

# 初始化插补器,指定填充策略(比如均值)
imputer = SimpleImputer(strategy='mean')
# 注意要传入二维数组,所以用df[['C']]而不是df['C']
df['C'] = imputer.fit_transform(df[['C']])

关键要点

不管用哪种方法,核心都是**只选中需要处理的目标列(这里是C列)**执行插补操作,A和B列会保持原始状态,完全满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 10:08:15