MOOC上的课程《用Python玩转数据分析》的学习笔记。
数据探索与预处理之数据清洗
数据探索包括检查数据错误,了解数据分布特征和内在规律
数据预处理包括数据清洗,数据集成(integration),数据变换,数据规约(reduction)
本次主要讲解数据清洗,包括缺失值和异常值的检测和处理。
缺失值处理首先可以用 导入后的数据对象名.isnull() 来查看是否存在缺失值
删除:当多个属性的值缺失或者关键属性缺失时,可将该条记录删除
>>>导入后的数据对象名.dropna(axis=0/1, how='any/all',其他参数设置可在help中查看)
第一个数字0表示删除有缺失值的行(默认),1表示删除有缺失值的列。第二个any表示这一行/列有一个缺失值就删除(默认),all表示这一行/列全部是缺失值再删除。
填充:可考虑用均值、众数、中位数填充,也可用缺失值上下的数据、插值函数、最近邻或者回归建模得到的极大似然估计来填充。
>>>导入后的数据对象名.fillna(导入后的数据对象名.mean(), inplace=True) (用均值填充,且直接更改了原始的DataFrame)
>>>导入后的数据对象名.fillna(method = 'ffill / bfill') (用上一个/下一个非缺失值填充)
异常值处理如何观察异常值?
简单统计,绘图,基于密度、最近邻和聚类等方法。这里介绍几种简单实用的。
describe方法
>>>导入后的数据对象名.describe() (可以显示最大值、最小值、四分位数和方差等结果)
箱形图方法
>>>导入后的数据对象名.boxplot()
3sigma方法
原理:如果数据服从正态分布,那么在均值上下3倍标准差之外的数就很可能是异常值。
可利用DataFrame的布尔索引来编写程序
>>>导入后的数据对象名.[abs(数据对象名 - 数据对象名.mean())>3*数据对象名.std()]
然后dropna(how = 'all')就可以显示包含异常值的记录。
异常值处理
可以用和缺失值处理一样的方法,删除或者填充;也可以不处理;还可以用分箱法binning等方式处理。需要根据实际情况具体分析。