中科易研:如何做好数据清洗?


中科易研:如何做好数据清洗?
文章图片

文章图片
大数据本身是一座金矿、一种资源 , 沉睡的资源是很难创造价值的 , 它必须经过清洗、分析、建模、可视化等过程加工处理之后 , 才真正产生价值 。
数据加工、清洗的过程与机械加工的流水线生产过程相似 。例如 , 从各个渠道采集到的数据质量很差 , 于是就需要对数据进行“脱敏”以及“包装” , 最终呈现在用户面前时是一个个数据产品 , 这样才能提供给消费者 , 进行数据交易 。
数据清洗的目的——发现并纠正数据文件
数据清洗是发现并纠正数据文件中可识别错误的一道程序 , 该步骤针对数据审查过程中发现的明显错误值、缺失值、异常值、可疑数据 , 选用适当方法进行“清理” , 使“脏”数据变为“干净”数据 , 有利于后续的统计分析得出可靠的结论 。当然 , 数据清理还包括对重复记录进行删除、检查数据一致性 。如何对数据进行有效的清理和转换使之成为符合数据挖掘要求的数据源是影响数据挖掘准确性的关键因素 。
中科易研:如何做好数据清洗?
文章图片

文章图片
赵刚博士:中国数据加工清洗产业趋势分析
数据清洗经验分享
数据分析的第一步是洗数据 , 原始数据可能有各种不同的来源 , 包括:
1.Web服务器的日志
2.某种科学仪器的输出结果
3.在线调查问卷的导出结果
4.1970s的政府数据
5.企业顾问准备的报告
这些来源的共同点是:你绝对料想不到他们的各种怪异的格式 。数据给你了 , 那就要处理 , 但这些数据可能经常是:
(1)、不完整的(某些记录的某些字段缺失)
(2)、前后不一致(字段名和结构前后不一)
(3)、数据损坏(有些记录可能会因为种种原因被破坏)
因此 , 你必须经常维护你的清洗程序来清洗这些原始数据 , 把他们转化成易于分析的格式 , 通常称为datawrangling 。接下来会介绍一些关于如何有效清洗数据 , 所有介绍的内容都可以由任意编程语言实现 。
一、使用断言
这是最重要的一点经验:使用断言(Assertions)揪出代码中的bug 。用断言的形式写下你对代码格式的假设 , 如果一旦发现有数据跟你的断言相悖 , 就修改这些断言 。
记录是有序的?如果是 , 断言之!每一条记录都是有7个字段么?如果是 , 断言之 。每一个字段都是0-26之间的奇数么?如果是 , 断言之!总之 , 能断言的都断言!
在理想世界中 , 所有记录都应该是整整齐齐的格式 , 并且遵循某种简洁的内在结构 。但是实际当中可不是这样 。写断言写到你眼出血 , 即便是出血还得再写 。
洗数据的程序肯定会经常崩溃 。这很好 , 因为每一次崩溃都意味着你这些糟糕的数据又跟你最初的假设相悖了 。反复的改进你的断言直到能成功的走通 。但一定要尽可能让他们保持严格 , 不要太宽松 , 要不然可能达不到你要的效果 。最坏的情况不是程序走不通 , 而是走出来不是你要的结果 。
二、不要默默的跳过记录
原始数据中有些记录是不完整或者损坏的 , 所以洗数据的程序只能跳过 。默默的跳过这些记录不是最好的办法 , 因为你不知道什么数据遗漏了 。因此 , 这样做更好:
(1)、打印出warning提示信息 , 这样你就能够过后再去寻找什么地方出错了
(2)、记录总共跳过了多少记录 , 成功清洗了多少记录 。这样做能够让你对原始数据的质量有个大致的感觉 , 比如 , 如果只跳过了0.5% , 这还说的过去 。但是如果跳过了35% , 那就该看看这些数据或者代码存在什么问题了 。