一、读取文件,预处理数据集
数据清洗就是对数据的质量进行检查和处理。
脏数据
定义:由于记录或者储存的原因,导致部分数据缺失、重复、异常、错误,没有分析意义,就叫做“脏数据”。
脏数据存在三种情况:
- 缺失值:由于记录或读取的原因,在应该有数据的地方,出现了空白
- 重复值:在不该重复的地方,出现了异常的重复
- 异常值:不合理的数据
处理思路
- 拿到一份数据集,首先要导入pandas模块,读取文件
- 对数据集进行格式转换,做简单处理
- 识别并处理缺失值:
info()
判断哪一列存在缺失值,用法如:df.info()
,输出的结果有每一列的非空值结果,由此可以判断哪一列数据有缺失,注意info()
可以直接输出结果,不需要添加printisnull()
判断缺失值是在这一列的哪一行,而非直接输出缺失值所在的行,用法如:df["数据缺失列title"].isnull()
, 如果是缺失值,则返回True,注意需要添加print输出结果
- 识别并处理异常值:
- 对数据中的异常值进行检验和处理
- 识别并处理重复值
二、识别并处理【缺失值】
方法
- 删除所在行:如果缺失值的数量非常少,可以选择将缺失值所在的这一行删除,使用函数
drop()
- 先要用布尔索引和
isnull()
筛选出需要删除的行 - 用
drop()
函数删除筛选出的行drop()
函数的参数:index = "需要删除的行数据的index属性"
inplace =
默认等于True,表示删除数据
- 最后用
info()
查看非空值的结果,如果每一列的结果都一致,则完成了对缺失值的清洗
- 先要用布尔索引和
- 补全缺失值:如果缺失值的数量较多,并且缺失值所在的这一列(这个属性),并不是分析的重点时,可以对缺失值进行补全,使用函数
fillna()
fillna()
函数的参数:- 传入要填充的值,可以是字符,也可以是运算结果
inplace =
,用来指定操作是否对这个对象立即生效,一般默认True
- 重选数据集:如果缺失值的数量较多,并且这一列,这个属性是分析的重点时,就需要直接放弃这个数据集,重新采集数据
三、识别并处理【异常值】
方法
- 使用
isin()
函数及其逆函数 判断是否存在某数据,输出结果是布尔型的Series
- 写法:df["列名"].isin(要包含的值的列表)
- 因为是判断是否存在括号内的值,存在则返回True,如果想用布尔索引,将异常值,即不存在的筛选出来,则要使用~
进行取反,将原来输出为Fales的转为True - 使用
drop()
函数删除 - 使用
info()
函数查看每一列的结果是否一致
四、识别并处理【重复值】
方法
- 使用
duplicated()
函数对重复值进行处理,判断是否存在重复值
- 写法:df["列名"].duplicated()
- 判断法方式:会把出现相同值的第二个及以后的数据,判断为True, 即出现好几个1000,第二个及之后的1000都会被判断为True