Python中缺失值处理策略与Imputer类实战

Noah
Noah
发布时间:2026-10-12| 3人浏览过
原创

本文详解Python中处理缺失数据的多种策略,包括忽略、人工填写、全局常量及统计值填充,并重点介绍sklearn中Imputer类的具体应用。通过均值、中位数和众数填充示例,展示如何处理常规数据及稀疏矩阵中的缺失编码,帮助开发者高效完成数据预处理。

一、缺失值的处理方法

在现实世界的数据集中,由于各种原因常包含缺失数据,这些缺失值通常被编码为空格、NaN或其他占位符。然而,scikit-learn中的大多数学习算法无法直接兼容此类数据集,因为算法默认数组元素为数值,且每个元素都应有明确的代表意义。

处理不完整数据集的一种基本策略是删除包含缺失值的整行或整列,但这会导致大量有价值数据的浪费。以下是处理缺失值的几种常用方法:

1. 忽略元组

当缺失的是类别标签时(假设挖掘任务涉及分类),通常采用此方法。除非元组中存在多个属性缺失值,否则该方法效果不佳。当各属性缺失值的百分比变化较大时,其性能表现尤其差。

2. 人工填写缺失值

该方法通常耗时费力,当数据集规模大且缺失值众多时,往往难以实施。

3. 使用全局常量填充缺失值

将缺失的属性值替换为同一个常数(如“Unknown”或负无穷)。若所有缺失值均被替换为“unknown”,挖掘程序可能将其视为一个有趣的概念,因为它们具有相同的值。尽管该方法简单,但可靠性较低。

4. 使用与给定元组属同一类的所有样本的属性均值

例如:将顾客按credit_risk分类,则使用具有相同信用度的给定元组的顾客的平均收入替换income中的缺失值。

5. 使用最可能的值填充缺失值

可通过回归、基于贝叶斯形式化的推理工具或决策树归纳来确定。例如,利用数据集中其他顾客的属性,可以构造一棵决策树来预测income的缺失值。

注意:缺失值并不总是意味着数据的错误!!!!!!!

二、缺失值处理的代码实现

class:`Imputer`类提供了缺失数值处理的基本策略,例如使用缺失数值所在行或列的均值、中位数、众数来替代缺失值。该类也兼容不同的缺失值编码。

1、使用均值填充缺失值

import numpy as np

from sklearn.preprocessing import Imputer

imp = Imputer(missing_values='NaN', strategy='mean', axis=0)

import numpy as np

from sklearn.preprocessing import Imputer
 
###1.使用均值填充缺失值
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
imp.fit([[1, 2], [np.nan, 3], [7, 6]])


X = [[np.nan, 2], [6, np.nan], [7, 6]]
print(imp.transform(X)) 
[[4.     2.    ]
 [6.     3.66666667]
 [7.     6.    ]]

2、Imputer 类也支持稀疏矩阵:

import scipy.sparse as sp
 
X = sp.csc_matrix([[1, 2], [0, 3], [7, 6]])
 
imp = Imputer(missing_values=0, strategy='mean', axis=0)
 
imp.fit(X)
 
 
X_test = sp.csc_matrix([[0, 2], [6, 0], [7, 6]])
 
print(imp.transform(X_test))

#注意,在这里,缺失数据被编码为0, 这种方式用在当缺失数据比观察数据更多的情况时是非常合适的。 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。