1.数据错误:
错误类型
– 脏数据或错误数据
• 比如, Age = -2003
– 数据不正确
• ‘0’ 代表真实的0,还是代表缺失
– 数据不一致
• 比如收入单位是万元,利润单位是元,或者一个单位是
美元,一个是人民币
– 数据重复
2.缺失值处理:
处理原则
1)缺失值少于20%
•连续变量使用均值或中位数填补
•分类变量不需要填补,单算一类即可,或者用众数填补
2)缺失值在20%-80%
•填补方法同上
•另外每个有缺失值的变量生成一个指示哑变量,参与后续的建模
3)缺失值在大于80%
•每个有缺失值的变量生成一个指示哑变量,参与后续的建模,原始变量不使用。
3.离群值
3.1单变量离群值处理:
.绘图。
在图中找出离群的异常值,根据情况对其进行删除或者对数据进行变换从而在数值上使其不离群或者不明显。
学生化(标准化)
•用变量除以他们的标准误就可得到学生化数值
建议的临界值:
–|SR| >2 ,用于观察值较少的数据集
–|SR| >3,用于观察值较多的数据集
3.2多变量离群值
1.绘图。
在图中找出明显的离群值
2.聚类法确定离群值(不要对原有数据进行改变)
聚类效果评判指标:(群内方差(距离)最小化,群间方差(距离)最大化;这里方差可以理解为一种距离(欧式距离的平方—欧式距离))
了解清洗后,接下来,就来学习一下Python的数据清洗吧!
现在有一份心脏病患者的数据,经过问卷调查之后,最终录入数据如下:
- 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),后者直接将重复删除。