基本信息
编辑推荐
理解数据清洗在整个数据科学过程中的作用
掌握数据清洗的基础知识,包括文件清洗、数据类型、字符编码等
发掘电子表格和文本编辑器中与数据组织和操作相关的重要功能
学会常见数据格式的相互转换,如JSON、CSV和一些特殊用途的格式
采用三种策略来解析和清洗HTML文件中的数据
揭开PDF文档的秘密,提取需要的数据
借助一系列解决方案来清洗存放在关系型数据库里的坏数据
创建自己的干净数据集,为其打包、添加授权许可并与他人共享
使用书中的工具以及Twitter和Stack Overflow数据,完成两个真实的项目
内容简介
作译者
Megan Squire
依隆大学计算科学专业教授,主要教授数据库系统、Web开发、数据挖掘和数据科学课程。有二十年的数据收集与清洗经验。她还是FLOSSmole研究项目的领导者,致力于收集与分析数据,以便研究免费软件、自由软件和开源软件的开发。
译者简介:
任政委
辽宁滨城大连现役程序员一枚,长期从事一线软件开发工作,近年来为成为一名“思路清晰”“视角独特”“不搞办公室政治”“输出有生命力代码”“凭借技术知识普惠初中级IT从业者”的终身制全栈式程序员而不懈努力。曾经翻译《Oracle PL/SQL攻略》一书,并希望这本《干净的数据》能够为奋战在IT前线上的各界小伙伴们带来日常工作之外的另类体验。微信号:KNIGHTRCOM
目录
1.1 新视角 1
1.2 数据科学过程 2
1.3 传达数据清洗工作的内容 3
1.4 数据清洗环境 4
1.5 入门示例 5
1.6 小结 9
第2章 基础知识——格式、 类型与编码 11
2.1 文件格式 11
2.1.1 文本文件与二进制文件 11
2.1.2 常见的文本文件格式 14
2.1.3 分隔格式 14
2.2 归档与压缩 20
2.2.1 归档文件 20
2.2.2 压缩文件 21
2.3 数据类型、空值与编码 24
2.3.1 数据类型 25
2.3.2 数据类型间的相互转换 29
2.3.3 转换策略 30
2.3.4 隐藏在数据森林中的空值 37
前言
——查尔斯·巴贝奇(1864)
“错进,错出。”
——美国国税局(1963)
“压根儿就没有干净的数据集。”
——乔希·沙利文,《财富》杂志收录的博思艾伦咨询公司副总裁语录(2015)
世界上第一台计算机的发明者查尔斯·巴贝奇,在他1864年的随笔文集中记录了这样一件事,他曾经因为有人认为在输入错误数据的情况下计算机依然能够给出正确答案而错愕不止。100年以后,美国税务部门开始耐心地向人们解释“错进,错出”,以此来表达即便是能力再强的税收官,在用计算机处理数据时,依旧要依赖输入数据的质量。又过了50年,到了2015年,在这个看起来超级神奇的时代,有着机器学习、自动纠错、预想接口以及比我们本人更为了解我们自己的各种推荐系统。然而,这一切的算法背后,仍旧需要高质量的数据来保证学习的正确性,而我们往往会叹息道“压根儿就没有干净的数据集”。
本书正是为那些时常需要与数据打交道的人准备的,包括数据科学家、数据新闻记者、软件开发人员以及其他相关人士。无论你从事的是哪种职业,本书都会传授你一套快速而简便的实用策略,用来填补现有数据和期望数据之间的空白。人人都期盼能够拥有高质量的完美数据,但现实中的数据往往与我们的期盼相去甚远。我们是否正在饱受各种折磨呢?数据不是缺失就是格式不对,或者位置错误,还有各种异常情况,而这些问题导致的结果可以借用说唱歌手克里斯托弗·华莱士的一句歌词来表达,那就是“数据越多,麻烦越大”。
在本书中,我们始终把数据清洗当成数据科学过程中有着重要意义和重大价值的一步:轻松改进,不容忽视。我们的目标就是重新定义数据清洗,它不再是开始真正的工作之前所必须做的令人畏惧和乏味的工作。相反,我们会使用久经考验的过程与工具。我们会了解到,就好比在厨房中做菜,如果菜洗干净了,食物的色和味就不会差,我们自己也会倍感愉悦。如果再有良好的刀工,肉就会鲜嫩可口,菜也会入味均匀。就像手艺高超的大厨们都有他们钟爱的厨具和烹饪手法一样,数据科学家们也想在绝佳的条件下处理最为完美的数据。
本书内容
第1章,为什么需要清洗数据。这一章通过说明数据清洗在数据科学过程中的重要作用,激发我们对干净数据的追求。随后用一个简单的例子演示了现实世界中的脏数据。在充分衡量多种清洗过程的优缺点之后,讲述了如何将清洗所带来的变化告诉其他人。
第2章,基础知识——格式、类型与编码。这一章介绍关于文件格式、压缩和数据类型的基础知识,同时也讨论了数据缺失和空数据,以及字符编码方面的问题。每一节都配有一个真实的案例。这一章之所以重要,是因为后面几章的学习都以这一章的基本概念为基础。
第3章,数据清洗的老黄牛——电子表格和文本编辑器。这一章描述了如何从常见的电子表格和文本编辑器中,尽可能多地发掘出数据清洗功能。我们还介绍了一些常见问题的简便处理方法,包括如何使用函数、搜索和替换、正则表达式来实现数据纠错和转换。在这一章的结尾处,我们将利用已经掌握的技能,使用上述两种工具来完成一个与大学有关的数据清洗任务。
第4章,讲通用语言——数据转换。这一章着重讨论了如何把数据从一种格式转换成另一种格式。这是数据清洗工作的重要任务之一,而我们身边各种各样的工具能帮助我们轻松完成该项任务。我们首先在几种常见的格式之间来回进行转换,如逗号分隔值(CSV)、JSON和SQL。为了演示如何在实际中使用这些技术,我们会完成一个实验项目。我们会从Facebook上下载好友关系网络数据,并把它们转换成不同的数据格式,以形象化地展现数据之间的关系。
第5章,收集并清洗来自网络的数据。这一章描述了三种专门针对HTML页面的数据清洗方法。其中介绍了如何利用三种流行工具从标记文本中提取数据,同时介绍了一些基本概念,以便理解其他方法。在这一章的例子中,我们会建立起一系列的清洗步骤,专门用于从网络论坛中抽取数据。
第6章,清洗PDF文件中的数据。这一章介绍了几种最为常见的数据顽症处理方法:提取Adobe的PDF文件中的数据。我们先采用一些低成本的工具来完成这项任务,然后再选择一些容易上手并且门槛较低的工具,最后采用Adobe自己的付费软件。所有实验都会一如既往地使用真实数据,这能让我们在学会解决问题的同时积累宝贵的经验。
第7章,RDBMS清洗技术。在这一章里,我们使用对公众开放的推文数据来演示多种适用于关系型数据库的数据清洗策略。例子中使用的数据库是MySQL,但其中的许多概念,如基于正则表达式的文本提取和异常检测,可以轻而易举地应用到其他存储系统中。
第8章,数据分享的最佳实践。这一章描述了多种分享清洗过的数据的方法,以便他人轻松地使用你的数据。即使你暂时还没有分享数据的打算,这些方法和策略也会对你以后组织工作中的数据有所帮助。本章具体内容包括如何创建各种格式的理想数据包,如何在文档中对这些数据进行描述,如何为数据选择适合的许可协议,以及如何按需进行数据发布。
第9章,Stack Overflow项目。在这一章中我们将使用真实的数据来指导你完成一个完整的项目。在项目开始前,我们会提出一些与数据集有关的实实在在的问题。在回答这些问题期间,我们将完成第1章中所介绍的整个数据科学过程,并把在前面几章学过的清洗方法应用到其中。除此之外,为了应对庞大的数据量,我们还将采用一些新的技术来创建测试数据集。
第10章,Twitter项目。这一章描述的也是一个完整的项目,其目的是为了演示如何执行最热和变化最快的数据收集和清洗任务:Twitter挖掘。在演示中,我们将会查找并收集与某一时事相关的可公开获取的推文归档数据,同时遵守Twitter服务条款。数据采用的是目前网络API所支持的最为流行的JSON格式。在清洗和提取数据的同时,我们还将解答一个与数据集有关的简单问题。最后,我们将设计一个简单的数据模型,用它来长期存放已经抽取出来并且经过清洗的数据,并做一些简单的可视化实现。