《R数据科学实战:工具详解与案例分析 》 —2 数据清理工具
第2章
数据清理工具
无论是人工还是传感器采集的数据,都或多或少地存在一些错误或者瑕疵。比如说,不同采样人员记录数据方式的不同会导致数据值重复或不准确,录入数据时的失误会导致数据输入错误,传感器断电会造成大段的数据默认,不同国家和地区对时间日期制式的不同标准等,各种各样的原因造成数据无法直接用来分析、可视化的情况非常普遍。一般来讲,在从数据收集到最后报告的整个 过程中,数据清理会占用整个流程80%的时间。如此耗时的原因是数据清理并非一次性工作,数据清理、计算、可视化是一个动态的循环,根据分析需求的不同,需要应用不同的清理思路和方式。例如,对于默认值的处理,在探索性数据分析阶段,一般都会尝试各种不同的处理方式,完全移除、部分移除或替换成其他数值,并参考分析的目的来决定如何清理默认值。
本章会向读者分享数据清理的一些基本原则,作为框架来指导数据清理工作,以帮助读者逐步形成一套属于自己的数据清理思路。本章还将重点介绍如何使用tibble、tidyr、lubridate和stringr这4个包来进行数据清理。希望读者在浏览过本章之后,会对以下3点有所了解。
1)“脏”数据和“干净”数据的标准是什么。
2)数据清理的指导原则。
3)可以使用的工具包。
2.1 基本概念
“脏”数据没有任何标准,只要是不能满足分析要求的数据集都将打上“脏”的标签。所以弄清楚与之相对的“干净”数据可以使我们更容易理解数据清理的概念。目前国际上公认的“干净”数据可以总结为如下3点。
1)属性相同的变量自成一列。
2)单一观测自成一行。
3)每个数据值必须独立存在。
表2-1中显示的数据不符合第1条原则,因为男、女都属于性别,所以可以归为一个变量,归为一个变量后如表2-2中所示。但表2-2中显示的数据不符合第3条原则,因为体重和年龄两个变量放在了同一列中,虽然用反斜杠分隔后,人类按常识很容易理解,但计算机并不会懂,其只会将两列本来是数字类型的数据当成是字符串来处理。表2-3中展示了一个3条原则都不满足的样本数据集,在完成清理之前,计算机无法对表2-3中的数据进行任何有效的数据分析。
表2-1 “脏”数据样本一
表2-2 “脏”数据样本二
表2-3 “脏”数据样本三
表2-4中列出了清理后的数据集。对单一数据清理的第一个指导原则就是,按照上文介绍的3点将数据集清理成相应的形式。第2个原则需要按照实际需求进行,表2-5中的数据集是将“宽”数据(一般指多个同类或不同类型变量并存)转换成了“长”数据(同类型变量单独成列)。“宽”数据更符合人们日常对Excel格式数据的理解,而“长”数据对计算机来讲则更易进行数据存储和计算,在R环境中,计算“长”数据的速度优于“宽”数据。将表2-4中的数据转换成表2-5的形式只需一个函数gather,相关内容详见2.3节。
表2-4 “干净”数据样本一
表2-5 “干净”数据样本二
数据清理的第三个指导原则同样需要视情况而定,不同来源的数据应单独成表,独立存在。比如,元数据(解释变量名称或数据背景的数据,英文为metadata)与原始数据应同时存在一个文件或一个工作表中(参考第1章不规则数据读取)。简单来说,元数据通常会包含坐标、指标的具体含义等解释性信息,这类信息不应与原始数据本身同时存在一个数据集中,而应单独成为一个数据集,只在需要解释原始数据本身时才调用元数据。
- 点赞
- 收藏
- 关注作者
评论(0)