数据缺失值处理一(sklearn)


在数据采集准备阶段,往往由于人为或数据本身的因素导致最终的数据集含有缺失值,此时我们就面临一个问题,缺失数据如何去处理?其实无非就两种选择,一是删除缺失值所在的样本数据或列列数据,二是填充缺失数据的样本,使其数据保持完整。

 

 

删除方案:

首先要明确,对于数据量小的数据集,删除操作无疑不是最优的,因为数据量本身就不大。

至于是删除行数据还是列数据,一般会选择删除样本数据(行),因为特征属性是提前决定好的。但如果特征的缺失值过于严重,那么就应该考虑删除该特征数据了。

填充方案:

对于缺失的数据,是按照列数据填充呢还是按照行数据来填充呢?

答案其实很明显,按照特征(列)数据的(中位数、平均值)进行填充,因为在一个样本数据中,不同特征对应的数据值差异较大,采用样本平均值填充的话,其值明显是不符合特征数据的意义。


面借助机器学习工具模块sklearn来完成数据缺失值的填充处理(一般使用pandas处理缺失值较多)

【注】在处理缺失值时,缺失值的位置需使用pn.nan(float类型标记缺失值

 

# -*- coding:utf-8 -*-

# @Author: 数据与编程之美
# @File: deal_imputer.py
# @Time: 2021/01/02 16:54


from sklearn.impute import SimpleImputer
import numpy as np


def deal_im():
    """
    缺失值处理
    :return:
    """
    si = SimpleImputer(missing_values=np.nan, strategy='mean')
    data = si.fit_transform([[9, np.nan], [1, 5], [2, 4]])

    # 输出填充数据后的数据
    print(data)


if __name__ == "__main__":

    deal_im()

 

说明:strategy=’mean‘ 指定使用均值填充数据,missing_values=np.nan 指定缺失值使用np.nanfloat类型)来标记

 

 

输出结果

 


以上内容就是sklearn中使用SimpleImputer来解决数据缺失值的方法,后续会补充如何使用pandas处理缺失值的方法。

 

更多精彩内容请关注公众号:

 

【福利】pycharm、idea、全家桶正版激活

数据特征处理之字典型数据-特征抽取(One-hot编码)

0

评论0

请先

没有账号? 注册  忘记密码?