• pandas-缺失值处理


       缺失值是指数据集中的某些观测存在遗漏的指标值,缺失值的存在同样会影响到数据分析和挖掘的结果。

    一般而言,当遇到缺失值是可以采三种方法处置:删除法,替换法和插补法。

    1.删除法使用情况:当确实的观测比例非常低是,如5%以内,可以直接删除这些缺失的变量。

    2.替换法:用某种直接替换缺失值,例如,对连续变量而言,可以使用均值或中位数替换,对于离散型变量,可以使用众数替换。

    3.插补法:是指根据其他非确实的变量或观测来预测缺失值,常用的插补法有回归插补法,K近邻法,拉格朗日插补法等。

     下面我们介绍两种比较常见的缺失值处理方法,删除法和替换法

    例:

    原数据:

    从表中可以看出,该数据集存在4条缺失观测,行号分别是4,6,7和9,11。接下来我们要做的是如何判断数据集是否存在缺失值(尽管记录少的时候可以清楚地发现)

    import pandas as pd
    df= pd.read_excel(r'd:/data_test05.xlsx')
    print('数据集中是否存在缺失值: ',any(df.isnull()))

    OUT:

    True

     删除操作:

    df.dropna()                          #删除缺失值所在的行
    df.drop('age',axis = 1)           #选择某具体的列删除

     替换操作:

    df.fillna(method = 'ffill')                 #用前一行的数据来替换空白   助记词:front
    df.fillna(method = 'bfill')                #用后一行数据来替换空内容  助记词:backward   fill填充

    df.fillna(value = 0)                            #指定用某个值来填充所有的空白内容 该方法慎用,典型的以点概面的方式,很容易造成数据混乱
    df.fillna(value = {'gender':df.gender.mode()[0],'age':df.age.mean(),              #这里面gender 使用的是众数替换,age 使用均值替换,income 使用中位数替换
            'income':df.income.median()})                                          #value =  后面用的是字典,   mode()[0]  因为众数可能存在多个,所以mode()返回的其                                                                                                                         #实是一个序列,mode(0)表示,取第一个众数。参考摘选的补充说明:

       ****  如上代码并没有实际改变df数据框的结果,因为dropna,drop和fillna方法并没有使inplace参数设置为True。因此我们在实际工作中,先预览处理效果,然后再把inplace参数设置为True,进而真正地改变你所处理的数据集:

    补充说明:

    本篇涉及内容小结:

  • 相关阅读:
    typeid抛出异常的解释
    [原创]公平数的解法
    [原创]我的北大ACM POJ 1012解答
    [原创]我的PKU ACM POJ1029题解
    asp.net 单用户登录经典解决方案
    [转]SQL事务回滚的问题及其解决的方法
    获取json数据
    js中Date对象的用法
    解决刷新后回到顶部的问题
    C#获取客户端及服务器端主机信息
  • 原文地址:https://www.cnblogs.com/tinglele527/p/11928470.html
Copyright © 2020-2023  润新知