python数据清洗实例_python 数据清洗

前言

1. 删除重复

2. 异常值监测

3. 替换

4. 数据映射

5. 数值变量类型化

6. 创建哑变量

统计师的Python日记【第7天:数据清洗(1)】

前言

根据我的Python学习计划:

Numpy → Pandas → 掌握一些数据清洗、规整、合并等功能 → 掌握类似与SQL的聚合等数据管理功能 → 能够用Python进行统计建模、假设检验等分析技能 → 能用Python打印出100元钱 → 能用Python帮我洗衣服、做饭 → 能用Python给我生小猴子......

上一篇的数据合并,以及本篇的数据清洗,都是非常非常实用的技能。我们用Python做数据分析,其实会有80%的功夫花在这些操作上面。我曾经去德国专门学过如何用做SAS数据清洗,数据清洗有一个专门的流程,涉及到数据缺失处理、变量值覆盖、日期时间数据、异常值、多选题数据处理、文本处理等等。日常项目中,可能随时用到这里面的某个技能,今天,就来学习一下Python的数据清洗吧!

现在有一份心脏病患者的数据,经过问卷调查之后,最终录入数据如下:

0?wx_fmt=png

Age:年龄

Areas:来自哪里,有A/B/C/D四个地区

ID:患者的唯一识别编号

Package:每天抽几包烟,缺失的为-9,代表不抽烟

SHabit:睡眠习惯,1-早睡早起;2-晚睡早起;3-早睡晚起;4-晚睡晚起

为了学习方便,假设这里就这些变量吧。

看完这个变量说明我不淡定了,这个数据存在很多问题啊!Age是年龄?158是什么鬼??还有6岁小孩,每天抽1包烟?ID是唯一编号吗?为什么有3个1号、2个5号、2个9号、2个10号?

这个数据问题太多了,因此我要逐一来清洗一下,顺便学一下数据清洗方面的知识。

1. 删除重复

3个1号、2个5号、2个9号、2个10号。这是数据录入中经常出现的问题——重复录入了,所以首先我要把那么多占空间又没用的重复数据剔除。

介绍两个方法:data.duplicated()和 data.drop_duplicates(),前者标记出哪些是重复的(true),后者直接将重复删除。

0?wx_fmt=png

0?wx_fmt=png

所以drop.duplicates直接就将重复值删除了,默认保留第一条。

以上是按照“有两行数据,这两行数据的所有变量值都一样,这么这两行就算重复数据”,但有时候我们会只根据一个变量来剔除重复,比如值根据Areas这个变量,那么A/B/C/D四个地区只会保留第一条,传入take_last=True则保留最后一个:

0?wx_fmt=png

A/B/C/D每个地区值保留一条数据了。

2. 异常值检测

在第一步剔除重复值之后。得到了无重复数据的data_noDup:

0?wx_fmt=png

第二步,我想检测一下数据中有没有异常值。首先可以用 describe() 进行一个描述分析,在第五天的学习中(第5天:Pandas,露两手)已经学过如何对数据进行描述:

0?wx_fmt=png

有两个变量值得我们注意,一个是age,最大值158、最小值6,肯定有问题,另一个是package,最小值是-9,存在缺失。

用 data[条件] 的方式可以看一下有多少age大于100、age小于10,、package为-9的:

0?wx_fmt=png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值