缺失值处理:SimpleImputer(简单易懂 + 超详细)

简介: 缺失值处理:SimpleImputer(简单易懂 + 超详细)

SimpleImputer参数详解


class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy='mean', fill_value=None, verbose=0, copy=True, add_indicator=False)


参数含义

  • missing_valuesint, float, str, (默认)np.nan或是None, 即缺失值是什么。
  • strategy:空值填充的策略,共四种选择(默认)meanmedianmost_frequentconstantmean表示该列的缺失值由该列的均值填充。median为中位数,most_frequent为众数。constant表示将空值填充为自定义的值,但这个自定义的值要通过fill_value来定义。
  • fill_valuestr数值,默认为Zone。当strategy == "constant"时,fill_value被用来替换所有出现的缺失值(missing_values)。fill_valueZone,当处理的是数值数据时,缺失值(missing_values)会替换为0,对于字符串或对象数据类型则替换为"missing_value" 这一字符串。
  • verboseint,(默认)0,控制imputer的冗长。
  • copyboolean,(默认)True,表示对数据的副本进行处理,False对数据原地修改。
  • add_indicatorboolean,(默认)FalseTrue则会在数据后面加入n列由01构成的同样大小的数据,0表示所在位置非缺失值,1表示所在位置为缺失值。


常用方法


fit(X)

返回值为SimpleImputer()类,通过fit(X)方法可以计算X矩阵的相关值的大小,以便填充其他缺失数据矩阵时进行使用。


transform(X)

填补缺失值,一般使用该方法前要先用fit()方法对矩阵进行处理。

from sklearn.impute import SimpleImputer
import numpy as np
X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
imp.fit(X)
print(imp.transform(X1))
# 运行结果
[[1. 2. 6.]
 [4. 5. 6.]
 [4. 8. 9.]]
复制代码

由于fit(X)strategy='mean',所以填补值为X矩阵各列的均值。


fit_transform(X)

相当于fit() + transform(),一般使用的较多。

X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])
imp = SimpleImputer(missing_values=np.nan, strategy='mean')
print(imp.fit_transform(X1))
# 运行结果
[[1.  2.  7.5]
 [4.  5.  6. ]
 [2.5 8.  9. ]]
复制代码


get_params()

获取SimpleImputer参数信息。

imp = SimpleImputer(missing_values=np.nan, strategy='mean')
print(imp.get_params())
# 运行结果
{'add_indicator': False, 'copy': True, 'fill_value': None, 
'missing_values': nan, 'strategy': 'mean', 'verbose': 0}
复制代码


inverse_transform(X)

将数据转换回原始的表示形式。反转对数组执行的转换操作。该操作只能在以add_indicator=True实例化simpleImputer后执行注意:反变换只能在具有缺失值的二进制指示符的特征中进行反变换。如果一个特征在拟合时没有缺失值,那么该特征就没有二进制指标,变换时的赋值就不会被反向。简单说就是没有替换缺失值,就不存在还原。

X1 = np.array([[1, 2, np.nan],
               [4, np.nan, 6],
               [np.nan, 8, 9]])
imp = SimpleImputer(missing_values=np.nan, strategy='mean', add_indicator=True)
X1 = imp.fit_transform(X1)
print(X1)
print(imp.inverse_transform(X1))
# 运行结果
[[1.  2.  7.5 0.  0.  1. ]
 [4.  5.  6.  0.  1.  0. ]
 [2.5 8.  9.  1.  0.  0. ]]
[[ 1.  2. nan]
 [ 4. nan  6.]
 [nan  8.  9.]]
复制代码


自定义值填补


fill_value自定义。

X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=666)
print(imp.fit_transform(X))
# 运行结果
[[666 2 3]
 [4 5 6]
 [7 8 9]]
复制代码


fill_value为默认值Zone

X = np.array([[1, 2, 3],
             [4, 5, 6],
             [7, 8, 9]])
imp = SimpleImputer(missing_values=1, strategy='constant', fill_value=None)
print(imp.fit_transform(X))
# 运行结果
[[0 2 3]
 [4 5 6]
 [7 8 9]]



相关文章
|
3月前
|
SQL JavaScript 关系型数据库
SQL改写实战:子查询、CTE、窗口函数性能对比
本文聚焦SQL性能优化,实测对比子查询、CTE与窗口函数在复杂统计、分组排名、递归查询等场景的执行效率。基于MySQL 8.0真实数据(千万级表),揭示窗口函数在“每组取最值”“部门排名”中提速3倍以上,CTE提升可读性与递归能力,而相关子查询易成性能瓶颈。干货满满,避坑必备!
|
人工智能 供应链 数据挖掘
瓴羊入选中国信通院《AI Agent智能体产业图谱》
2025数据智能大会在京召开,中国信通院发布《AI Agent智能体产业图谱1.0》,瓴羊Quick BI凭借智能数据分析能力入选。该图谱系统梳理AI Agent产业生态,涵盖基础底座、平台、通用与行业智能体四大领域。Quick BI通过融合大模型技术,重构企业数据分析方式,实现从“被动响应”到“主动服务”的升级,广泛应用于供应链、零售、财务等多个场景。此次入选标志着瓴羊在数据分析智能体领域的创新成果获高度认可。作为阿里巴巴旗下数智服务品牌,瓴羊将持续推动企业智能化转型,释放数据价值,助力“人工智能+”深度发展。
1036 0
|
11月前
|
前端开发 开发者
如何计算选择器的权重
如何计算选择器的权重
775 137
|
8月前
|
安全 API 数据处理
纳斯达克股票数据API对接指南
本指南介绍如何通过API对接纳斯达克股票数据,涵盖实时行情、历史K线、公司基本面等,支持RESTful与WebSocket,提供免费测试密钥,助力快速集成美国股市数据。
|
10月前
|
人工智能 JSON API
MCP与Function Calling的区别是什么?它们与AI Agent有何关联?
本文解析了MCP与Function Calling的区别及联系。MCP通过条件化提示优化模型输出质量,Function Calling则让模型能直接调用外部函数执行操作。两者共同构成AI Agent的核心能力:MCP负责决策优化,Function Calling实现具体执行。文章还指出了实际应用中的常见问题与解决方案。
|
JSON 数据挖掘 API
搜款网VVIC商品列表数据接口(搜款网API系列)
搜款网(VVIC)是知名服装批发平台,开发者可通过API获取商品列表数据,用于市场调研、数据分析等。API请求通常为HTTP GET,需申请权限并提供API Key。响应数据为JSON格式,包含商品基本信息。Python示例代码展示了如何发送请求和处理响应。使用API时需确保合法合规,注意错误处理和性能优化。
|
缓存 负载均衡 监控
如何优化网络传输效率?
如何优化网络传输效率?
1896 2
|
SQL 存储 JSON
Python写入MySQL数据库to_sql()一文详解+代码展示
Python写入MySQL数据库to_sql()一文详解+代码展示
5474 0
Python写入MySQL数据库to_sql()一文详解+代码展示
|
JavaScript Java 项目管理
介绍4 个 Python 项目管理与构建工具
介绍4 个 Python 项目管理与构建工具
438 6
|
自然语言处理 数据可视化 数据挖掘
首批!瓴羊Quick BI完成中国信通院大模型驱动的智能数据分析工具专项测试
首批!瓴羊Quick BI完成中国信通院大模型驱动的智能数据分析工具专项测试
912 1