Sklearn 有专门处理缺失值的模块 sklearn.impute.SimpleImputer,本文将探究如何用 Sklearn 中的预处理模块中的 Impute.SimpleImputer 处理缺失值。

一、模块介绍
官网详解在 part 6.4 Imputation of missing values:https://scikit-learn.org/stable/modules/impute.html

它包含四个重要参数:

二、示例应用
接下来将用实例来讲解如何使用填补缺失值:

1)数据来源及数据基本信息

>>> from sklearn.impute import SimpleImputer
>>> import pandas as pd
>>> import numpy as np
>>> data=pd.read_csv(r'C:\Users\Administrator\Desktop\titanic\train.csv',index_col=0)
>>> data.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 1 to 891
Data columns (total 11 columns):
Survived    891 non-null int64
Pclass      891 non-null int64
Name        891 non-null object
Sex         891 non-null object
Age         714 non-null float64
SibSp       891 non-null int64
Parch       891 non-null int64
Ticket      891 non-null object
Fare        891 non-null float64
Cabin       204 non-null object
Embarked    889 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 83.5+ KB
>>> data.shape
(891, 11)

数据概要:实例使用的是泰坦尼克号数据集,查看数据集基本信息,发现Age、Cabin、Embarkde这三个字段均有数据缺失。其中Cabin缺失687条,Age缺失177条,Embarked缺少2条数据。下面示例应用将以填充数据集的[Age]字段为例。

2)缺失值处理应用
1、均值填充

age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的数值,sklearn当中特征矩阵必须是二维才能传入 使用reshape(-1,1)升维from sklearn.impute import SimpleImputer #导入模块
imp_mean=SimpleImputer(missing_values=np.nan,strategy='mean')  #实例化,均值填充
imp_mean=imp_mean.fit_transform(age)     #fit_transform一步完成调取结果data['Age']=imp_mean       #填充好的数据传回到 data['Age']列data['Age'].isnull().sum() #检验是否还有空值,为0即说明空值均已被填充

2、中值填充

age=data['Age'].values.reshape(-1,1)         #取出缺失值所在列的数值,sklearn当中特征矩阵必须是二维才能传入 使用reshape(-1,1)升维from sklearn.impute import SimpleImputer     #导入模块
imp_median=SimpleImputer(missing_values=np.nan,strategy='median')    #实例化,中值填充
imp_median=imp_median.fit_transform(age)     #fit_transform一步完成调取结果
data['Age']=imp_median       #填充好的数据传回到 data['Age']列
data['Age'].isnull().sum()   #检验是否还有空值,为0即说明空值均已被填充

3、众数填充

age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的数值,sklearn当中特征矩阵必须是二维才能传入 使用reshape(-1,1)升维from sklearn.impute import SimpleImputer #导入模块
imp_most_frequent=SimpleImputer(missing_values=np.nan,strategy='most_frequent')  #实例化,众数填充
imp_most_frequent=imp_most_frequent.fit_transform(age)     #fit_transform一步完成调取结果
data['Age']=imp_most_frequent       #填充好的数据传回到 data['Age']列
data['Age'].isnull().sum()          #检验是否还有空值,为0即说明空值均已被填充

4、常数填充(填充0,填充1等常数)

age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的数值,sklearn当中特征矩阵必须是二维才能传入 使用reshape(-1,1)升维from sklearn.impute import SimpleImputer       #导入模块
imp_0=SimpleImputer(missing_values=np.nan,strategy='constant',fill_value=0)  #实例化,填充常数0,填充常数需strategy与fill_value一同使用
imp_0=imp_0.fit_transform(age)     #fit_transform一步完成调取结果
data['Age']=imp_0                   #填充好的数据传回到 data['Age']列
data['Age'].isnull().sum()          #检验是否还有空值,为0即说明空值均已被填充

转自:https://www.jianshu.com/p/2c59147e1df1

Sklearn Impute SimpleImputer 处理缺失值相关推荐

  1. 数据缺失值补全方法 sklearn.impute.SimpleImputer 使用实例

    一.环境 Python 3.7.3(Anaconda 3) sklearn.version'0.20.3' 二.方法 对数据中的缺失值进行插补 官方说明:https://scikit-learn.or ...

  2. sklearn.impute.SimpleImputer

    官方:link class sklearn.impute.SimpleImputer(*, missing_values=nan, strategy='mean', fill_value=None, ...

  3. sklearn.impute.KNNImputer插值寻找近邻的原理

    前言 最近预处理数据需要使用插值来填充: 首先是sklearn.impute.SimpleImputer方法, strategy 只有mean, median等: 我需要相邻的邻居值来做插值, 所以选 ...

  4. 数据预处理2: impute.SimpleImputer来填补缺失值

    import numpy as np import pandas as pd import matplotlib.pyplot as plt data = pd.read_csv("trai ...

  5. sklearn与pandas的缺失值处理

    housing数据集中的total_bedrooms有部分缺失,对于缺失值,通常我们有以下几种方式处理: 放弃有缺失值的样本 放弃整个特征 将缺失值设置为某个默认值:0.平均值.中位数等. panda ...

  6. ModuleNotFoundError: No module named 'sklearn.impute'

    (- ̄▽ ̄)- 当我在 jupyter notebook 输入 from sklearn.impute import SimpleImputer 是它报错显示: ModuleNotFoundError ...

  7. 出现ModuleNotFoundError: No module named ‘sklearn.impute‘的问题

    在jupyter notebook上输入from sklearn.impute import SimpleImputer,出现ModuleNotFoundError: No module named ...

  8. No module named 'sklearn.impute',更新scikit-learn

    -------我错了,本篇作废,我把自己的包更新坏了,大家不要往下看了------------------最终我是把anaconda卸载重装的--------- 使用scikit-learn模块进行缺 ...

  9. ImportError: cannot import name ‘IterativeImputer‘ from ‘sklearn.impute‘ 解决思路

    一.报错信息 导入多特征变量包的时报错 ImportError: cannot import name 'IterativeImputer' from 'sklearn.impute' (C:\Pro ...

最新文章

  1. 谈谈相控阵雷达为何如此先进
  2. EF框架 对字段属性为NULL的空值处理 类型前面加上?保证EF列表读取显示数据不会报异常...
  3. 常用数据绑定控件详解
  4. 8-[多线程] 进程池线程池
  5. .NET Core 如何调试 CPU 爆高?
  6. 【Pre蓝桥杯嵌入式】【STM32】Unkown device
  7. c函数strstr和sscanf组合高级技巧
  8. mybatis 注解 动态SQL
  9. 简单的nios II 流水灯 软件部分
  10. (转)常见LCD接口
  11. 【Chia开发文档】Offer 类的属性、使用方法、作用及返回值
  12. python微信群聊机器人_python 群聊 机器人
  13. python 京东签到_Python实战—京东用户行为分析
  14. 数学建模上课(一)推导万有引力定律
  15. 【摄像头】图像传感器尺寸、像素大小和成像质量的关系
  16. 基于SRS的视频直播服务器搭建
  17. Java练手项目:点菜系统
  18. 机器学习特征工程--标准化和归一化
  19. 【计算机视觉】不来试试图片轮廓提取?
  20. python读书心得体会范文_读书心得体会600字_关于读书的心得体会范文(3篇)

热门文章

  1. Android Location specified by ndk.dir (D:\AndroidSDK\ndk-bundle) did not contain a valid NDK
  2. Hive常用函数、列转行与行转列、开窗函数、UDF、UDTF
  3. [Unity 3D] 物理引擎学习笔记(一)
  4. 生活随记 - 失眠的时候,你会怎么办?
  5. 倒计时setInterval和clearInterval
  6. Your license is already used on computer “*” using product “AltiumDesigner”(如何禁止Altium Designer联网)
  7. notepad++如何在运行里面添加打开方式
  8. 美的Java面经_四年Java开发,刚从美团、京东、阿里面试归来(已拿offer),分享个人面经...
  9. 修改 win10 右键“新建”菜单(原理、两种方法及注意事项)
  10. java 修改 request参数值_修改request请求参数