Sklearn Impute SimpleImputer 处理缺失值

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

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

它包含四个重要参数:
Sklearn Impute SimpleImputer 处理缺失值_第1张图片

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

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 处理缺失值)