Python数据挖掘 │利用Pandas进行数据清洗

在许多数据分析工作中,数据中经常会有缺失数据情况(www.ztfm.com.cn)。Pandas的目标之⼀就是尽量轻松地处理缺失数据。

01

检测与处理缺失值

Pandas对象的所有描述性统计默认都不包括缺失数据。对于数值数据,Pandas使用浮点值NaN表示缺失数据。

1

缺失值的检测与统计

函数isnull可以直接判断该列中的哪个数据为NaN。

【例4-1】利用isnull检测缺失值。

在Pandas中,缺失值表示为NA,它表示不可用(not available)。在统计应用中,NA数据可能是不存在的数据,或者存在却没有观察到的数据(例如数据采集中发生了问题)。当清洗数据用于分析时,最好直接对缺失数据进行分析,以判断数据采集问题或缺失数据可能导致的偏差。Python内置的None值也会被当做NA处理。

【例4-2】Series中的None值处理。

2

缺失值的统计

【例4-3】利用isnull.sum统计缺失值。

另外,通过info方法,也可以查看DataFrame每列数据的缺失情况。

【例4-4】用info方法查看DataFrame的缺失值。

02

缺失值的处理

1

删除缺失值

在缺失值的处理方法中,删除缺失值是常用的方法之一。通过dropna方法可以删除具有缺失值的行。

dropna方法的格式:

dropna(axis= 0, how=‘any’, thresh= None, subset= None, inplace= False)

dropna的参数及其使用说明见表4-1。

表4-1 dropna的参数及其使用说明

对于Series,dropna返回一个仅含非空数据和索引值的Series。

【例4-5】Series的dropna用法。

当然,也可以通过布尔型索引达到这个目的。

【例4-6】布尔型索引选择过滤非缺失值。

对于DataFrame对象,dropna默认丢弃任何含有缺失值的行。

【例4-7】DataFrame对象的dropna默认参数使用。

传入how=‘all’将只丢弃全为NA的那些行。

【例4-8】传入参数all。

如果用同样的方式丢弃dataframe的列,只需传入axis = 1即可。

【例4-9】dropna中的axis参数应用。

可以⽤thresh参数,当传入thresh = N时,表示要求一行至少具有N个非NaN才能保留。

【例4-10】dropna中的thresh参数应用。

2

填充缺失值

直接删除缺失值的样本并不是一个很好的方法,因此可以用一个特定的值替换缺失值。缺失值所在的特征为数值型时,通常利用其均值、中位数和众数等描述其集中趋势的统计量来填充;缺失值所在特征为类别型数据时,则选择众数来填充。Pandas库中提供了缺失值替换的方法fillna。

fillna的格式如下,参数及其说明见表4-2。

pandas.DataFrame.fillna(value= None,method= None,asxi= None,inplace= False,limit= None)

表4-2 fillna参数及其说明

通过一个常数调用fillna就会将缺失值替换为那个常数值,如df.fillna(0)用零代替空缺值,也可以通过一个字典调用fillna,就可以实现对不同的列填充不同的值。

【例4-11】通过字典形式填充缺失值。

fillna默认会返回新对象,但也可以通过参数inplace = True对现有对象进行就地修改。对reindex有效的那些插值方法也可用于fillna。

【例4-12】fillna中method的应用。

可以利用fillna实现许多别的功能。比如可以传入Series 的平均值或中位数。

【例4-13】用Series的均值填充。

【例4-14】DataFrame中用均值填充。

3

数据值替换

数据值替换是将查询到的数据替换为指定数据。在Pandas中通过replace进行数据值的替换。

【例4-15】replace替换数据值。

也可以同时对不同值进行多值替换,参数传入的方式可以是列表也可以是字典格式。传入列表是第一个列表为被替换的值,第二个列表中是对应替换的值。

【例4-16】replace传入列表实现多值替换。

【例4-17】replace传入字典实现多值替换。

4

利用函数或映射进行数据转换

在数据分析中,经常需要进行数据的映射或转换,在Pandas中可以自定义函数,然后通过map方法实现。

【例4-18】map方法映射数据。

5

异常数据检测

异常值是指数据中存在的数值明显偏离其余数据的值。异常值的存在会严重干扰数据分析的结果,因此经常要检验数据中是否有输入错误或含有不合理的数据。在利用简单的数据统计方法中一般常用散点图、箱线图和3σ法则。

1

散点图方法

通过数据分布的散点图发现异常数据。

【例4-19】利用散点图检测异常值。

2

箱线图分析

箱线图利用数据中的五个统计量(最小值、下四分位数、中位数、上四分位数和最大值)来描述数据,它也可以粗略地看出数据是否具有对称性、分布的分散程度等信息。

【例4-20】利用箱线图分析异常值。

3

3σ法则

若数据服从正态分布,在3σ原则下,异常值被定义为一组测定值中与平均值的偏差超过3倍标准差的值,因为在正态分布的假设下,距离平均值3σ之外的值出现的概率小于0.003。因此根据小概率事件,可以认为超出3σ之外的值为异常数据。

【例4-21】利用3σ法则检测异常值。

03

视频讲解

04

参考书籍

《Python数据数据挖掘与机器学习-微课视频版》

ISBN:9787302572992

魏伟一 编著

定价:59.8 元

内容简介

本书内容丰富,循序渐进,以数据挖掘框架为主线,系统地介绍了数据挖掘技术的基本原理、方法和实践应用,全面反映了数据挖掘的理论体系和应用的最新进展。课程既讨论数据挖掘的基本理论知识和框架体系结构,又介绍了数据挖掘算法的Python实现与应用,强调了理论与实践相结合,基础知识与前沿发展相结合。本书可作为计算机数据科学相关专业高年级本科生、硕士研究生的软件挖掘教材,同时也可以作为对Python数据挖掘感兴趣读者的自学参考书。

扫码京东优惠购书

配套资源

本书配套资源丰富,包括教学大纲教学课件电子教案程序源码习题答案教学进度表,作者还为本书精心录制了微课视频。

05

精彩文章回顾

  • Python数据挖掘 │泰坦尼克号乘客生还预测

  • Python数据分析 │ Matplotlib与Jupyter结合(附代码)

  • Python实训:用贪婪算法分析业务员路径问题|附源码

  • 算法竞赛专题解析│二分法、三分法

  • Spark算法实例:词频统计
  • 大数据集群的部署实例|附视频

  • 用Excel制作工资条实例|附素材+视频

  • 真题解析│2017年蓝桥杯软件类省赛传统“送分题”

  • Java 15新增类Record的工作实例|附代码

  • Dart应用Bloc设计模式实例|附代码

  • 从火种到能源,华为做AI的逻辑链

  • 华为 AI,建造中的全景图

  • 逻辑回归的MATLAB实践|附代码

  • Python爬虫实例:采集微博博文|附视频

  • MySQL利用E-R模型的数据库概念设计|附视频

  • Django REST项目实战:在线中文字符识别

公司名称:乐清市硕宝防爆科技有限公司