Sklearn Impute SimpleImputer 處理缺失值

Sklearn 有專門處理缺失值的模塊 sklearn.impute.SimpleImputer,本文將探究如何用 Sklearn 中的預處理模塊中的 Impute.SimpleImputer 處理缺失值。

一、模塊介紹

官網(wǎng)詳解在 part 6.4 Imputation of missing values:https://scikit-learn.org/stable/modules/impute.html

它包含四個重要參數(shù):

二、示例應用

接下來將用實例來講解如何使用填補缺失值:

1)數(shù)據(jù)來源及數(shù)據(jù)基本信息

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()

數(shù)據(jù)概要:實例使用的是泰坦尼克號數(shù)據(jù)集,查看數(shù)據(jù)集基本信息,發(fā)現(xiàn)Age、Cabin、Embarkde這三個字段均有數(shù)據(jù)缺失。其中Cabin缺失687條,Age缺失177條,Embarked缺少2條數(shù)據(jù)。下面示例應用將以填充數(shù)據(jù)集的[Age]字段為例。

2)缺失值處理應用

1、均值填充
age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的數(shù)值,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一步完成調(diào)取結(jié)果

data['Age']=imp_mean       #填充好的數(shù)據(jù)傳回到 data['Age']列

data['Age'].isnull().sum() #檢驗是否還有空值,為0即說明空值均已被填充
2、中值填充
age=data['Age'].values.reshape(-1,1)         #取出缺失值所在列的數(shù)值,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一步完成調(diào)取結(jié)果

data['Age']=imp_median       #填充好的數(shù)據(jù)傳回到 data['Age']列

data['Age'].isnull().sum()   #檢驗是否還有空值,為0即說明空值均已被填充
3、眾數(shù)填充
age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的數(shù)值,sklearn當中特征矩陣必須是二維才能傳入 使用reshape(-1,1)升維

from sklearn.impute import SimpleImputer #導入模塊
imp_most_frequent=SimpleImputer(missing_values=np.nan,strategy='most_frequent')  #實例化,眾數(shù)填充
imp_most_frequent=imp_most_frequent.fit_transform(age)     #fit_transform一步完成調(diào)取結(jié)果

data['Age']=imp_most_frequent       #填充好的數(shù)據(jù)傳回到 data['Age']列

data['Age'].isnull().sum()          #檢驗是否還有空值,為0即說明空值均已被填充
4、常數(shù)填充(填充0,填充1等常數(shù))
age=data['Age'].values.reshape(-1,1)  #取出缺失值所在列的數(shù)值,sklearn當中特征矩陣必須是二維才能傳入 使用reshape(-1,1)升維

from sklearn.impute import SimpleImputer       #導入模塊
imp_0=SimpleImputer(missing_values=np.nan,strategy='constant',fill_value=0)  #實例化,填充常數(shù)0,填充常數(shù)需strategy與fill_value一同使用
imp_0=imp_0.fit_transform(age)     #fit_transform一步完成調(diào)取結(jié)果

data['Age']=imp_0                   #填充好的數(shù)據(jù)傳回到 data['Age']列

data['Age'].isnull().sum()          #檢驗是否還有空值,為0即說明空值均已被填充
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容