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,进而真正地改变你所处理的数据集:

补充说明:

本篇涉及内容小结:

原文地址:https://www.cnblogs.com/tinglele527/p/11928470.html