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

它包含四个重要参数:

二、示例应用

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

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

import pandas as pd
import numpy as np
data=pd.read_csv("C:\\Users\\DRF\\Desktop\\tatanic\\datasets\\train.csv",index_col=0)
data.head()
data.info()

数据概要:实例使用的是泰坦尼克号数据集,查看数据集基本信息,发现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即说明空值均已被填充

你可能感兴趣的:(Sklearn Impute SimpleImputer 处理缺失值)