Python数据处理:如何又快又好
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.1 什么是数据整理

数据整理是一种把“原始”(raw)数据或“已经得到的”(found)数据变成某个东西的过程,这样的东西可以让我们产生某种想法并让我们感受到某种意义。要想有效地整理数据,我们必须搞清楚自己想要研究的或者自己想要从中详细探寻的是一个什么样的领域。当然,有些读者之所以拿起这本书,可能是因为本身特别想学编程。没错,对于初学者来说,数据整理确实是一个很好的入门途径,但笔者必须马上提醒你注意,先别急着跳过介绍如何保证数据质量的那些章节,而直接看跟编程有关的内容。编程技巧确实能给数据整理带来很大帮助,但这项工作并不是仅仅学会怎样访问并操纵数据就行了,还得知道如何做出判断、推理与筛选。大家后面就会看到,凡是那种拿过来就能用的数据,其质量几乎都不是特别高。因此,要想整理数据,我们必须做出相应的选择,而这种选择会影响到数据整理出来的结果。抛开数据质量去整理数据就好比拿掉方向盘去开车,这样确实能把车开走,而且还能开得很快,但问题是可能到达不了你想去的地方。如果你打算花些时间整理并分析数据,那么应该设法保证数据的质量,这样至少能确保这些时间似乎不会白花。

学习一种新技术的时候,还有一个比较重要的地方在于,你最好从自己真正感兴趣的领域入手,也就是从那种你特别想要做好的事情出发,因为你在学习的过程中会遇到一些挫折,而兴趣将会帮助你克服挫折情绪。这当然不是说你必须选择某个全球性的大事。你可以从喜欢的电子游戏、乐队或某种茶饮入手,也可以从学校、邻居或社交网站入手,还可以从经济、政治、信仰或金钱等问题入手。总之,只要是你真正关心的话题就行。

把自己要研究的问题选好之后,就可以进入数据整理的流程了。该流程的具体步骤可能需要根据项目来调整(其中某些步骤可能还要重复执行),但总的来说,数据整理都要经历下面这些步骤(或者至少要经历其中的某些步骤):

• 定位数据或收集数据

• 审阅数据

• “清洗”数据,规范数据,转换数据或者增强数据

• 分析数据

• 可视化数据

• 传递数据

其中每一步所花的时间与精力会因具体情况而有所变化。如果你在工作中整理过数据,现在想学一种更快的整理技术,那么你可能已经有了一个数据集,而且也知道这个数据集大概包含哪些信息,在这种情况下,与此有关的步骤,就可以少花一点功夫。但如果你想要做的这个项目,是为了搞清楚你们街区在城市建设方面的开支情况,那么收集数据这个环节或许会是整个流程中最费时的一步。

另外要说的是,刚才那些步骤虽然都有编号,但数据整理其实更像是一套循环执行的步骤,而不是一套单纯按先后顺序来执行的步骤。如果我们对正在处理的数据所具备的意义以及数据之间的相互关系理解得比原来更为深刻,那么通常会回过头来执行早前做过的步骤。比如,我们在分析一个比较大的数据集时,可能突然观察到某种模式或某种意义,并意识到以前在“审阅数据”这个步骤所做的假设似乎有问题。在这种情况下,我们总是会从原始数据源或者全新数据源寻找更多的信息,我们必须先把刚才观察到的模式或意义理解清楚,然后才能继续分析并可视化数据。最后还要注意,其实每一个步骤前面都应该补充“研究并”这三个字,例如,“研究并分析数据”。数据整理关注的主要是我们所面对的这个数据集本身,而数据质量则是要研究并搞清楚数据之间的联系,这两方面在数据整理的每个环节中都是必不可少的。也就是说,不能单纯地整理数据,而是要在整理的过程中确保数据质量。

这些现在听起来似乎有点儿抽象,别担心,这本书中的例子都基于真实数据集,大家能够参照这些实例编写代码并执行质量评估流程,到时,这些步骤就会显得更加具体而直观。如果你正在做自己的数据整理项目,那么书中的某些章节可能会让你稍微有点迷茫。为此,你应该经常提醒自己想要通过这个项目解答什么问题,并试着把书里讲的知识跟自己的问题联系起来。这样,你就不会觉得那些详细讨论数据格式与API访问密钥的内容[1]很无趣了,而且你还能够意识到自己接下来该做数据整理流程中的哪一步,例如,你可能会意识到自己接下来应该可视化数据了,或是应该再做一点研究,以厘清数据之间的关联并提升数据质量。