数据准备之所以困难,是因为这个过程并非客观,至少感觉上不是。诸如“什么样的数据形式最适合描述问题?”之类的问题并非客观。你必须从你想解决的问题的角度出发,并通过你的处理流程尝试几种不同的数据表示方式。
Hadley Wickham 是莱斯大学的客座教授,同时也是 RStudio 的首席科学家,他对这个问题非常关注。他编写了一些最流行的用于整理和呈现数据的 R 包,例如 reshape、plyr 和 ggplot2。在他的期刊文章 《整洁数据》 中,Wickham 提出了他对数据清洗的看法,并定义了他所说的“整洁数据”。
立即开始您的项目,阅读我的新书 《机器学习数据准备》,书中包含分步教程以及所有示例的Python源代码文件。
让我们开始吧。

整洁数据,摄影:Andrew King
数据清洗
大量的数据分析时间都花在了数据清洗和数据准备上,高达 80% 的时间。Wickham 指出,这不是一次性过程,而是一个迭代过程,随着你对问题的理解不断深入,你在每一次迭代中都会有新的发现。其目标是构建数据的结构,以方便你进行设定的数据分析。
整洁数据
Wickham 的理念借鉴了计算机科学中的关系数据库和数据库规范化思想,尽管他的受众是统计学家和数据分析师。他首先定义了术语,认为谈论行和列的说法不够充分。
- 数据是给定类型的值的集合
- 每个值都属于一个变量
- 每个变量都属于一个观测
- 观测是某个单位(如对象或事件)的变量。
变量是列,观测是行,而观测的类型则是表。经典地,Wickham 将此与关系数据库理论中的第三范式相关联。他还将变量类型描述为固定变量和测量变量,并建议在表中将固定变量放在测量变量之前。
- 固定变量:这是实验设计的一部分,在实验进行之前就已经确定(如人口统计学信息)。
- 测量变量:这是在研究中测量的变量。
整洁数据的目标是将数据的含义(语义)映射到数据的结构上。
想开始学习数据准备吗?
立即参加我为期7天的免费电子邮件速成课程(附示例代码)。
点击注册,同时获得该课程的免费PDF电子书版本。
实际示例
Wickham 说,真实的数据集会违反整洁数据的原则。他描述了 5 种常见问题:
- 列标题是值,而不是变量名
- 多个变量存储在同一列中
- 变量同时存储在行和列中
- 多种类型的观测单位存储在同一个表中
- 单个观测单位存储在多个表中
然后,他接着为每种问题提供了实际操作示例。他为每个问题提供了实际的真实世界数据样本,并演示了如何修复它以使其变得整洁。
这些示例非常有启发性,单凭这些示例就非常值得阅读这篇论文。他随后提供了一个更大的案例研究,使用了墨西哥的死亡率数据。
整洁数据工具
只有当数据整洁后,才能有效地用于数据分析。整洁数据使得使用为整洁数据设计的工具执行数据分析任务变得容易。
- 数据处理:变量处理,如聚合、过滤、重新排序、转换和排序。
- 数据可视化:使用图形和图表总结数据,用于探索和展示。
- 模型构建:这是整洁数据的驱动灵感,模型构建是我们最终的目标。
Wickham 谨慎地指出,整洁数据只是数据清洗过程的一部分。整洁数据之外的其他方面包括解析变量类型(日期和数字)、处理缺失值、字符编码、拼写错误和异常值。
他评论说,这项工作基于他自己咨询和教学的经验,他的经验非常丰富,因为他的 R 包是一些下载量最大的。
资源
Wickham 在 2011 年似乎发布了这些想法。你可以在 Vimeo 上观看一个名为《整洁数据》的演示文稿,并回顾幻灯片(PDF)。
Wickham 还于 2011 年在 Google 进行了关于相同思想的技术讲座,题为《工程数据分析(使用 R 和 ggplot2)》。我也推荐观看这个讲座。他强调了领域特定语言在此工作中的重要性,如 ggplot2(图形语法)等。他还强调了使用编程语言(而不是 Excel)完成此工作的必要性,以获得透明性、可重复性和自动化等特性。讲座中使用了相同的死亡率案例研究。
Wickham 在其论文中引用的一些您可能想了解的优秀书籍包括:
- 《关系数据库模型》:关于关系数据库理论和数据规范化。
- 《探索性数据挖掘和数据清洗》:关于数据清洗和数据准备的最佳实践。
- 《图形语法》 :关于现在著名的图形语法,该语法用于 R 和 Python 的图表库 ggplot。
- 《Lattice:使用 R 进行多元数据可视化》:关于用于数据绘图的 Lattice R 包。
非常感谢您的分享。
兄弟,谢谢。真的很有帮助。
此致
Zaily。
很高兴听到这个消息。
Jason,非常感谢您关于数据清洗的精彩内容系列。非常感谢您对学习者的社区支持。
谢谢。