P y t h o n 数 据 分 析 实 战 学 习 \displaystyle\boxed{Python数据分析实战学习} Python数据分析实战学习
第1章 数据分析简介
欢迎来到数据分析世界。作为后续章节的铺垫,本章介绍数据分析的主要概念和流程。学完本章,你就能在数据分析的世界中迈出坚实的一步。 其余章节会陆续介绍如何借助Pyton库
,把在这里学到的概念和流程转化为Python代码。
1.1 数据分析
当今世界对信息技术的依赖程度日渐加深,每天都会产生和存储海量的数据。数据的来源多种多样自动检测 系统、传感器和科学仪器等。不知你有没有意识到, 你每次从银行取钱、买东西、写博客、发微博也会产生新的数据。
什么是数据呢?数据实际上不同于信息,至少在形式上不同。对于没有任何形式可言的字节流,除了其数量、用词和发送的时间外,其他一无所知,一 眼看 上去,很难理解其本质。信息实际上是对数据集进行处理,从中提炼出可用于其他场合的结论,即它是处理数据后得到的结果。从原始数据中抽取信息的这个过程叫作数据分析
。
数据分析的目的正是抽取不易推断的信息,而一旦理解了这些信息,就能对产生数据的系统的运行机制进行研究,从而对系统可能的响应和演变做出预测。
数据分析最初用作数据保护,现已发展成为数据建模
的方法论,从而完成了到-门真正学科的蜕变。模型实际上是指将所研究的系统转化为数学形式。一旦建 立数学或逻辑模型,对系统的响应能做出不同精度的预测,就可以预测在给定输人的情况下,系统会给出怎样的输出。这样看来,数据分析的目标不止于建模,更重要的是其预测能力
。
模型的预测能力不仅取决于建模技术的质量,还取决于选择构建整个数据分析工作流所需的优质数据集的能力。因此数据搜寻
、数据提取
和数据准备
等预处理工作也属于数据分析的范畴,它们对最终结果有重要影响。
前面一直在讲数据、数据的准备及数据处理。在数据分析的各个阶段,还有各种各样的数据可视化
方法。无论是孤立地看数据,还是将其放到整个数据集来看,理解数据的最好方法莫过于将其绘制成可视化图形,从而传达出数字中蕴含(或隐藏)的信息。到目前为止,已经有很多可视化模式:类型多样的图表。
数据分析的产出为模型和图形化展示,据此可预测所研究系统的响应。随后进人测试阶段,用己知输出结果的一个 数据集对模型进行测试。这些数据不是用来定义模型,而是用来检验系统能否重现实际观察到的输出,从而掌握模型的误差,了解其有效性和局限。
拿新模型的测试结果与既有模型进行对比便可知优劣。如果新模型胜出,即可进行数据分析的最后一步:部署
。部署阶段需要根据模型给出的预测结果,实现相应的决策,同时还要防范模型预测到的潜在风险。
很多工作都离不开数据分析。了解数据分析及实际操作方法,对工作中做出可靠决策大有裨益。有了它,人们可以检验假说,加深对系统的理解。
1.2 数据分析师的知识范畴
数据分析学科研究的问题面很广”。数据分析过程要用到多种工具和方法,它们对计算、数学和统计思维要求较高。
因此,一名优秀的数据分析师必须具备多个学科的知识和实际应用能力。这些学科中有的是数据分析方法的基础,熟练掌握它们很有必要。根据应用领域、研究项目的不同,数据分析师可能还需要掌握其他相关学科的知识。总的来说,这些知识可以帮助分析师更好地理解研究对象以及需要什么样的数据。
通常,对于大的数据分析项目,最好组建一个由 各个相关领域的专家组成的团队,他们要能在各自擅长的领域发挥出最大作用。对于小点的项目,- .名优秀的分析师就能胜任,但是他必须善于识别数据分析过程中遇到的问题,知道解决问题需要哪些学科的知识和技能,并能及时学习这些学科,有时甚至需要向相关领域的专家请教。简言之,分析师不仅要知道怎么搜寻数据,更应该懂得怎么寻找处理数据的方法。
- 1.2.1 计算机科学
不论从事什么领域的数据分析工作,掌握计算机科学知识对分析师来说都是最基本的要求。只有具备良好的计算机科学知识及实际应用经验,才能熟练掌握数据分析必备工具。实际上,数据分析的各个步骤都离不开计算机技术,比如用于计算的软件( IDL、MATLAB
等)和编程语言(C++、Java、 Python
等)。
要高效地处理随信息技术迅猛发展而产生的海量数据,就必须使用特定技能。数据研究和抽取,要求分析师掌握各种常见格式的处理技巧。数据通常以某种结构组织在一起, 存储于文件或数据库表中,格式多样。常见的数据存储格式有XML、JSON、 XLS、CSV
等。很多应用都能处理这些格式的数据文件。从数据库中获取数据要稍微麻烦些,需要掌握SQL
数据库查询语言,或使用专门为从某种数据库抽取数据而开发的软件。
此外,一些特定类型的数据研究任务中,分析师所能拿到的不是立刻就能用的干净数据,而是文本文件(文档、日志)或网页。需要的数据则来自这些文件中的图表、测量值、访客量或者HTML表格,而解析文件、抽取数据(数据抓取
)需要专业知识。
因此,学习信息技术知识很有必要,只有这样才能掌握在当代计算机科学基础上发展起来的各种工具,比如软件和编程语言。数据分析和可视化离不开它们。
本书尽可能全面地介绍用Python 编程语言及专业的库进行数据分析所需的全部知识。针对数据分析的各个阶段,从数据研究、数据挖掘到预测模型研究结果的部署,Pyhon 都有专门的库。
1.2.2数学和统计学
数据分析涉及大量数学知识,本书全篇都少不了它们的身影。数据处理和分析过程涉及的数学知识可能会很复杂。因此具备扎实的数学功底显得尤为重要,至少要能理解正在做的事。熟采常用的统计学概念也很有必要,因为所有对数据进行的分析和解释都以这些概念为基础。如果说计算机科学提供的是数据分析工具,那么统计学提供的就是基础概念。
统计学为分析师提供了很多工具和方法,全部掌握它们需要多年的磨练。数据分析领域最常用到的统计技术有:
■ \blacksquare ■ 贝叶斯方法
■ \blacksquare ■ 回归
■ \blacksquare ■ 聚类
用到这些方法时,会发现其中数学和统计学知识紧密结合,且对两者都有很高的要求。但是借助本书所讲述的Python库,读者将能驾驭它们。
- 1.2.3 机器学习和人工智能
数据分析领域最先进的工具之一就是机器学习 方法。实际上,尽管数据可视化以及聚类和回归等技术对分析师发现有价值的信息有很大帮助,但在数据分析过程中,分析师经常需要查询数据集中的各种模式,这些步骤专业性很强。
机器学习这门学科所研究的正是如何把一系列步 骤和算法结合起来,分析数据,识别数据中存在的模式,找出不同的簇,发现趋势,从数据中抽取有用信息用于数据分析,并实现整个过程的自动化。
机器学习日渐成为数据分析的基础工具,因此了解它(至少也要知道个大概)对数据分析工作的重要性不言而喻。
- 1.2.4 数据来源领域
数据来源领域(生物、物理、金融、材料试验和人口统计等)的知识也是非常重要的一块。实际上,分析师虽然受过统计学的专业训练,但也必须深人应用领域,记录原始数据,以便更好地理解数据生成过程。此外,数据不仅仅是干巴巴的字符串或数字,还是实际观测参数的表达式,更确切地说是其度量值。因此,对数据来源领域有深人的理解,能提升解释数据的能力。当然,即使是对乐意学习的分析师来说,学习特定领域的知识也是要下一番功夫的。因此最好能找到相关领域的专家,以便有问题时及时咨询。
1.3 理解数据的性质
数据分析所研究的对象自然是数据。在数据分析的各个阶段,数据都是主要关注对象。要分析、处理的原材料由数据构成。经过处理、分析数据后,最终可能会从中得到有用的信息。这些信息能增加对研究对象,也就是产生原始数据的系统理解。
- 1.3.1 数据到信息的转变
数据是对世界万物的记录。任何可以被测量或分类的事物都能用数据来表示。采集完数据后,可以对其进行研究和分析,以理解事物的性质。人们也常常借助它们进行预测,或者即使做不到预测,至少也能让推测更有根据。
- 1.3.2 信息到知识的转变
当信息转化为-组有 助于更好地理解特定机制的规则时,信息便转化为了知识, 因而可以用这些知识预测事件的演变。
- 1.3.3 数据的类型
数据可以分为两类:
■ \blacksquare ■ 类别型(定类和定序)
■ \blacksquare ■ 数值型(离散和连续)
类别型数据
指可以被分成不同组或类别的值或观察结果。类别型数据有两种:定类
( nominal )和定序
(ordinal)。定类型变量的各类别没有内在的顺序,而定序型变量有预先指定的顺序。
数值型数据
指通过测量得到的数值或观察结果。数值型数据有两种:离散型
和连续型
。离散值的个数是可数的,每个值都与其他值区别开来。相反,连续值产生于结果属于某一确定范围的测量或观察。
1.4 数据分析过程
数据分析过程可以用以下几步来描述:转换和处理原始数据,以可视化方式呈现数据,建模做预测。因此,数据分析无外乎由几步组成,其中每一步所起的作用对后面几步而言都至关重要。因此数据分析几乎可以概括为由以下几个阶段组成的过程链:
■ \blacksquare ■ 问题定义
■ \blacksquare ■ 数据抽取
■ \blacksquare ■ 数据准备 -------- 数据清洗
■ \blacksquare ■ 数据准备 -------- 数据转换
■ \blacksquare ■ 数据探索和可视化
■ \blacksquare ■ 预测建模
■ \blacksquare ■ 模型验证/测试
■ \blacksquare ■ 部署 -------- 结果可视化和阐释
■ \blacksquare ■ 部署 -------- 解决方案部署
图1-1为数据分析各步骤的示意图。
- 1.4.1 问题定义
采集原始数据前,数据分析过程实际上早已开始。实际上,数据分析总是始于要解决的问题,而这个问题需要事先定义。
只有深人探究作为研究对象的系统之后,才有可能准确定义问题:这个系统可能是一种机制、应用或是一般意义上的过程。通常研究工作是为了更好地理解系统的运行方法,尤其是为了理解其运行规则,因为这此规则有助于预测或选择( 在知情的基础上进行选择)。
问题定义这一-步 及产生的相关文档(可交付成果
),无论是对于科研还是商业问题都很重要,因为这两项能严格保证分析过程是朝着目标结果前进的。实际上,对系统进行全面或详尽的研究有时会很复杂,一开 始可能没有足够的信息。因此问题的定义,尤其是问题的规划,将唯一决定整个数据分析项目所遵循的指导方针。
定义好问题并形成文档后,接下来就可以进人数据分析的项目规划环节。该环节要弄清楚高效完成数据分析项目需要哪些专业人士和资源。因此就得考虑解决方案相关领域的一些事项。 你需要寻找各个领域的专家,安装数据分析软件。
因此,在项目规划过程中,应组建起高效的数据分析团队。通常这个团队应该是跨学科的,因为从不同角度研究数据有助于解决问题。因此,-个优秀的团队必然是成功完成数据分析工作的关键因素之一。
- 1.4.2 数据抽取
问题定义步骤完成之后,在分析数据前,首先要做的就是获取数据。数据的选取一定要本着创建预测模型的目的,数据选取对数据分析的成功起着至关重要的作用。所采集的样本数据必须尽可能多地反映实际情况,也就是能描述系统对来自现实刺激的反应。实际上,如果原始数据采集不当,即使数据量很大,这些数据描述的情境往往也是与现实相左或存在偏差。
因此,如果对选取不当的数据,或是对不能很好地代表系统的数据集进行数据分析,得到的模型将会偏离作为研究对象的系统。
数据的查找和检索往往要凭借一种直觉, 超乎单纯的技术研究和数据抽取。该过程还要求对数据的内在特点和形式有细致人微的理解,而只有对问题的来源领域有丰富的经验和知识,才能做到这-一点。
除了所需数据的质量和数量,另个问题 是使用最佳的数据源
。
如果工作室环境为(技术或科学)实验室,数据源生成的数据是用来做实验的。这种情况下就很容易鉴别数据源的优劣,这时唯一要 注意的就是实验过程的设置。
无论是对于哪个领域的应用,都不可能采用严格的实验方法来重建数据源所属的系统。很多领域的应用需要从周边环境搜寻数据,往往依赖外部实验数据,甚至常通过采访或调查来收集数据。这种情况下,寻找包含数据分析所需全部信息的优质数据源难度很大。这时往往需要从多种数据源搜集信息,以弥补缺陷,识别矛盾之处,使数据集尽可能具有普遍性。
当你想找些数据来用时,Web
是个不错的起点。但Web
中的大多数数据获取起来具有一定难度。实际上,不是所有的数据都是以文件或是数据库形式存在的,有些数据以这样或那样的格式存在于HTML
页面中;有的内容很明确,有的则不然。为了获取网页中的内容,人们研究出了Web抓取(Web scraping)
方法,通过识别网页中特定的HTML
标签采集数据。有些软件就是专门用来抓取网页的。它们找到符合条件的标签,从中抽取目标数据。查找、抽取完成后,就得到了用于数据分析的数据。
- 1.4.3 数据准备
在数据分析的所有步骤中,数据准备虽然看上去不太可能出问题,但实际上,这一步需要投人更多的资源和时间才能完成。数据往往来自不同的数据源,有着不同的表现形式和格式。因此,在分析数据之前,所有这些数据都要处理成可用的形式。
数据准备阶段关注的是数据失取、清洗和规范化处理,以及把数据转换为优化过的,也就足准备好的形式,通常为表格形式,以便使用在规划阶段就定好的分析方法处理这些数据。数据中存在的很多问题都必须解决,比如存在无效的、模棱两可的数据,值缺失,字段重复以及有些数据超出范围等。
- 1.4.4 数据探索和可视化
探索数据本质上是指从图形或统计数字中搜寻数据,以发现数据中的模式、联系和关系。数据可视化是突出显示可能的模式的最佳工具。
近年来,数据可视化发展迅猛,已成为门真正的学科。实际上,专门用来呈现数据的技术有很多,从数据集中抽取最佳信息的可视化技术也不少。
数据探索包括初步检验数据,这对于理解采集到的数据的类型和含义很重要。再结合问题定义阶段所获得的信息,确定数据类型,这决定着选用哪种数据分析方法定义模型最合适。
通常,在这个阶段,除了细致研究用数据可视化方法得到的图表外,可能还包括以下一种或多种活动:
■ \blacksquare ■ 总结数据
■ \blacksquare ■ 为数据分组
■ \blacksquare ■ 探索不同属性之间的关系
■ \blacksquare ■ 识别模式和趋势
■ \blacksquare ■ 建立回归模型
■ \blacksquare ■ 建立分类模型
通常来讲,数据分析需要总结与研究数据相关的各种表述。总结
( summarization)过程,在不损失重要信息的情况下,将数据浓缩为对系统的解释。
聚类这种数据分析方法用来找出由共同的属性所组成的组( grouping,分组
)。
数据分析的另外一个重要步骤关注的是识别
( identification)数据中的关系、趋势和异常现象。为了找到这些信息,需要使用合适的工具,同时还要分析可视化后得到的图像。
其他数据挖掘方法,比如决策树和关联规则挖掘,则是自动从数据中抽取重要的事实或规则。这些方法可以和数据可视化配合使用,以便发现数据之间存在的各种关系。
- 1.4.5 预测建模
数据分析的预测建模阶段,则要创建或选择合适的统计模型来预测某个结果的概率。
探索完数据后,就掌握了用来开发数学模型,为数据中所存在的关系编码的全部信息。这些模型有助于我们理解作为研究对象的系统。具体而言,模型主要有以下两个方面的用途: -是预测系统所产生的数据的值,使用回归模型
;二是将新数据分类,使用分类模型
或聚类模型
。实际上,根据输出结果的类型,模型可分为以下3种。
■ \blacksquare ■ 分类模型:模型输出结果为类别型。
■ \blacksquare ■ 回归模型:模型输出结果为数值型。
■ \blacksquare ■ 聚类模型:模型输出结果为描述型。
生成这些模型的简单方法包括线性回归
、逻辑回归
、分类
、回归树
和K-近邻算法
。但是分析方法有多种,且每一-种都有 自己的特点,擅长处理和分析特定类型的数据。每一种方法都能生成一种特定的模型,选取哪种方法跟模型的自身特点有关。
有些模型输出的预测值与系统实际表现一致,这些模型的结构使得它们能以一 种简洁清晰的方式解释我们所研究的系统的某些特点。另外一些模型也能给出正确的预判值,但是它们的结构为“黑箱”,对系统特点的解释能力有限。
- 1.4.6 模型验证
模型验证阶段也就是测试阶段,对数据分析很重要。在该阶段,会验证用先前采集的数据创建的模型是否有效。该阶段之所以重要,是因为直接与真实系统数据比较,可评估模型所生成的数据的有效性。但其实该阶段是从整个数据分析过程所使用的初始数据集中取一部分用于验证。
通常用于建模的数据称为训练集
,用来验证模型的数据称为验证集
。
通过比较模型和实际系统的输出结果,就能评估错误率。使用不同的测试集,就可以得出模型的有效性区间。实际上,预测结果只在一-定范围内才 有效,或因预测值取值范围而异,预测值和有效性之间存在不同层级的对应关系。
模型验证过程,不仅可以得到模型的确切有效程度(其形式为数值),还可以比较它跟其他模型有什么不同。模型验证技巧有不少,其中最著名的是交叉验证
。它的基础操作是把训练集分成不同部分,每一部分轮流作 为验证集,同时其余部分用作训练集。通过这种迭代的方式,可以得到最佳模型。
- 1.4.7 部署
数据分析的最后步一部署, 旨在展示结果,也就是给出数据分析的结论。若应用场景为商业领城,部署过程将分析结果转换为对购买数据分析服务的客户有益的方案。若应用场景为科技领域,则将成果转换为设计方案或科技出版物。也就是说,部署过程基本上就是把数据分析的结果应用于实践。
数据分析或挖据的结果有多种部署方式。通常,数据分析师会在这个阶段为管理层或是客户提写报告,从概念上描述数据分析结果。报告应上星经理,以便他们读后做出相应决策,真正用分析结果指导实践。
数据分析师提交的报告通常应该详细论述以下 4 4 4 点:
■ \blacksquare ■ 分析结果
■ \blacksquare ■ 决策部署
■ \blacksquare ■ 风险分析
■ \blacksquare ■ 商业影响评估
如果项目的产出包括生成预测模型,那么这些模型就可以以单独应用的形式进行部署或集成到其他软件中。
1.5 定量和定性数据分析
数据分析过程都是以数据为中心,根据数据的特点,其实还可以进行细分。
如果如果所分析的数据有着严格的数值型或类别型结构,这种分析称为定量分析
;如果数据要用自然语言来描述,则称为定性分析
。
由于所处理的对象具有不同的特点,这两种数据分析方法也有所不同。
定量分析所处理的数据具有内在逻辑顺序或者能分成不同的类别。这样,数据就有了不同的结构。顺序、类别和结构可以提供更多信息,从而可以以更加严格的数学形式进一步 处理数据。用这种数据产生的模型能做出定量预测
,因此分析师也就可以得出更加客观的结论
。
而定性分析处理的数据通常没有内在结构,至少结构没那么明显,这些数据既不是数值型也不是类别型。例如,适合定性分析研究的数据包括文本、视频和音频。分析这类数据时,往往需要根据实际情况,开发特殊方法来抽取信息。用这些信息创建的模型能做出定性预测
,而数据分析师给出的结论可能还包括主观解释
。从另一方面来讲,定性分析可用来探索更加复杂的系统,而且它所能得到的结论,严格的数学方法可能无法给出。定性分析通常用来研究社会现象或复杂结构等测量难度很大的系统。
图1-2展示了这两种分析方法的不同之处。
1.6 开放数据
为了满足日益增长的数据需求,人们把很多数据资源放到了网上。这些被称为开放数据( OpenData)
的数据资源向任何有数据需求的人免费开放。
下面是网上的一些开放数据资源站点。 更完整、详细的开放数据资源请见附录B。
■ \blacksquare ■ DataHub网站
■ \blacksquare ■ 世界卫生组织
■ \blacksquare ■ Data.gov网站
■ \blacksquare ■ 欧盟开放数据门户
■ \blacksquare ■ 亚马逊AWS开放数据集
■ \blacksquare ■ Facebook Graph
■ \blacksquare ■ Healthdata.gov网站
■ \blacksquare ■ 谷歌趋势
■ \blacksquare ■ 谷歌金融
■ \blacksquare ■ 谷歌图书Ngrams项目
■ \blacksquare ■ UCI机器学习数据库
就开放数据而言,可以通过LOD云图了解网上都有哪些开放数据资源可用。从云图中能看到当前网上有哪些开放数据资源,以及这些资源之间的关系( 见图1-3 )。
1.7 Python和数据分析
本书的主要特点是用 Pyhon
语言介绍数据分析的所有概念。Pyhon
大量的库为数据分析相处理提供了完整的工具集,因此它广泛应用于科学计算领域。
比起 R
和 MATLAB
等主要用于数据分析的编程语言,Python
不仅提供数据处理平台,而且还有其他语言和专业应用所没有的特点。Python库
一直在增加,算法的实现采用更具创新性的方法,再加上它能跟很多语言 (C和Fortran)
相对接,这些特点都使得 Python
在所有可用于数据分析的语言中与众不同。
进一步来说,Python
其实不是专用于数据分析的,它还有很多其他方面的用途。比如它本身是一门通用型编程语言,也可以作脚本来用,还能操作数据库;而且由于 Django
等框架的问世,Python
近些年还用来开发 Web
应用。因此,使用 Python
开发的数据分析项目,完全可以跟 Web
服务器相兼容,也就可以整合到 Web
应用中。
因此,对于想从事数据分析的读者,Python
以及它众多的包,在可以预见的将来会是最佳选择。
1.8 小结
本章介绍了何为数据分析、它由哪些步骤组成、数据在创建预测模型过程中的作用,以及甄选数据是数据分析结果准确可靠的基础。
下一 章将基于Python及其各种库,开始数据分析之旅。
参考书目
1. [意] 法比奥 ⋅ \cdot ⋅ 内利 著 杜春晓 译
P y t h o n Python Python D a t a Data Data A n a l y t i c s Analytics Analytics
With P a n d a s Pandas Pandas, N u m p y Numpy Numpy,and M a t p l o t l i b Matplotlib Matplotlib,Second Edition
P y t h o n Python Python 数 据 分 析 实 战 ( 第 2 版 ) 数据分析实战_{(第2版)} 数据分析实战(第2版)