Python数据分析入门与实战

978-7-115-59934-6
作者: 刘麟
译者:
编辑: 张天怡

图书目录:

详情

本书从数据分析的基本概念和Python的基础语法讲起,然后逐步深入到Python数据分析的编程技术方面,并结合实战重点讲解了如何使用主流Python数据分析库进行数据分析,让读者快速掌握Python的编程基础知识,并对Python数据分析有更加深入的理解。 本书分为13章,涵盖的主要内容有数据分析概述、Python的特点和编程基础、NumPy数组的基础和进阶用法、Pandas数据处理和数据分析、数据的导入导出、数据可视化,以及Python网络爬虫和Scikit-learn机器学习的入门知识。 本书内容丰富全面,语言简洁、通俗易懂,实用性强,还包含实战案例,特别适合Python的初学者和自学者,以及缺乏编程经验的数据分析从业人员阅读,也适合对数据分析编程感兴趣的爱好者阅读。   

图书摘要

版权信息

书名:Python数据分析入门与实战

ISBN:978-7-115-59934-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

编  著 刘 麟

责任编辑 张天怡

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315

读者服务:

微信扫码关注【异步社区】微信公众号,回复“e59934”获取本书配套资源以及异步社区15天VIP会员卡,近千本电子书免费畅读。

内 容 提 要

本书从数据分析的基本概念和Python的基础语法讲起,然后逐步深入到Python数据分析的编程技术方面,并结合实战重点讲解了如何使用主流Python数据分析库进行数据分析,让读者快速掌握Python的编程基础知识,并对Python数据分析有更加深入的理解。

本书分为13章,涵盖的主要内容有数据分析概述、Python的特点和编程基础、NumPy数组的基础和进阶用法、Pandas数据处理和数据分析、数据的导入导出、数据可视化,以及Python网络爬虫和Scikit-learn机器学习的入门知识。

本书内容丰富全面,语言简洁、通俗易懂,实用性强,还包含实战案例,特别适合Python的初学者和自学者,以及缺乏编程经验的数据分析从业人员阅读,也适合对数据分析编程感兴趣的爱好者阅读。

前  言

Python数据分析的前景

我们身处一个信息爆炸的时代,每时每刻都会有新的数据产生,各行各业都在用数据说话。数据分析被广泛应用在诸多领域,如生物信息领域通过分析基因序列可以发现致病基因、研究物种的亲缘性;金融行业可以基于数据分析的结果制订投资计划、评估投资风险;城市规划人员更是要综合分析经济、文化和社会生活等多方面的数据。随着云计算、大数据技术的快速发展,以及5G时代的到来,数据量级在急剧增长,数据传播的速度已经十分惊人,如何从海量数据中获取有价值的信息成为很多企业考虑的问题。挖掘数据背后的价值对于企业来说是非常有意义的,它可以为企业的业务决策和未来发展规划提供数据支撑,可用来评估团队的综合能力、发掘新的市场机会、刻画用户群像等。人们越来越重视数据背后价值的同时,企业对数据分析人员的需求也越来越大。

数据分析学是一门综合性的学科,它不仅需要从业者结合业务背景知识和数据分析方法论,更需要强大的分析工具。Python作为开源的解释型编程语言,已经成为数据分析工作中的一种重要工具。Python拥有丰富的第三方库,其中包括目前流行的数据分析库,这些库提供了数据存储、清洗、分析、可视化等功能。随着自身的发展,Python发展了活跃的数据分析社区,社区里不仅有系统性的学习资料,还有数据分析领域的前沿动态。此外,Python处理大数据的高效率、对Web开发框架的良好支持,都让它成为搭建涵盖从数据收集到数据分析的数据应用的热门语言。

笔者的使用体会

数据分析往往就在我们的身边,与我们的生活息息相关,如音乐推荐、导航软件的实时数据报告,都与数据分析密不可分。其实,生活中的数据分析并不是深奥的课题,例如,根据消费记录制订下一年的消费计划,通过统计关键词从而初步了解一个新事物,甚至还可以用数据报表呈现你的工作成果。简而言之,掌握一些数据分析的技巧可以让你的生活更加多姿多彩。

笔者已经使用Python 10年有余,从学生时代的课题研究到现在的工作,Python已经成为笔者生活中非常重要的工具。笔者第一次接触Python,正是因为它入门简单、上手快。相比于Excel以及其他成熟的数据分析软件,也许你在刚接触Python时会感到沮丧,原本你在这些软件中可以轻松完成的工作,在Python中完成时却要先学习如何搭建开发环境、安装第三方库,要了解数据结构和函数用法等。但是,一旦你敲开了Python的大门,你就会发现这扇门后面的精彩世界。当你逐渐掌握了Python这门语言后,你将会发现它作为编程语言所拥有的极高的复用性能给你带来极大的便利。一个Python脚本可以用在不同的数据分析项目中,可以取代原本重复的手动操作,并且还能避免在手动操作中的人为错误。笔者在数据分析工作中使用Python的另一感受,就是它强大的融合性。在实际工作中,无论是个人还是团队,一个工程项目往往都不会只用一种数据分析工具,而Python作为项目中的黏合剂可以对不同的分析工具进行融合。并且,Python允许调用底层类库,这大大提高了它在处理大数据时的运行效率。

本书特色

内容丰富、全面。本书浅谈数据分析的理论知识,重点讲解Python在数据分析中所用到的编程技术;知识点覆盖全面,包括数据爬取、数据存储、数据访问、数据预处理和数据分析,以及与Scikit-learn机器学习相关的内容。

循序渐进、由浅入深。本书从数据分析的基本概念开始,以Python的基础知识作为过渡,再深入探讨Python作为数据分析工具的使用方法。本书根据工具库之间的依赖性和知识点的关联性进行章节编排,讲解的内容层层递进,从基础知识到进阶用法,再到实战演练,符合一般初学者的认识和学习规律。

具象化表达。本书在涉及抽象概念时,通常会借助图表以更直观、具象的方式进行描述,通过空间联想、类比等方法让读者更轻松地理解这些概念。

实战教学。本书在介绍Python的数据分析工具库时结合了真实数据进行实战教学,一方面能帮助读者快速上手,另一方面也为读者今后的实际工作提供了参考范例。

开放源代码。读者可通过QQ:1743995008获取本书配套代码和脚本。

本书的主要内容

本书旨在打造一份使用Python进行数据分析的基础指南,重点介绍数据分析领域主流的Python库,以及与网络爬虫和机器学习相关的工具库。本书共13章,具体的内容划分可参见下图。

本书的前3章涉及前期的准备工作,介绍数据分析的基本概念,引导读者思考为什么选择Python,并介绍安装配置、Python解释器以及Python的基础语法等内容。从第4章开始进入本书的核心内容,重点讲解包括NumPy、Pandas和Matplotlib在内的主流数据分析库,涵盖数据存储、数据访问、数据预处理、数据分析、数据导入导出和数据可视化各方面的知识点。第10章和第11章是实战演练,基于真实数据将前面所学的内容应用到实战中,同时使读者在实战中掌握新的知识。最后两章属于延展性的内容,以抛砖引玉的方式浅谈如何使用Python实现网络爬虫和创建机器学习模型。

本书读者对象

Python的初学者和自学者。

数据分析的初学者和自学者。

欠缺编程经验的数据分析人员。

研发工程师、数据库工程师。

数据处理相关工作者,如产品经理、教育工作者等。

对数据分析编程感兴趣的各类从业者。

刘 麟

2023年1月

第1章 数据分析概述

1.1 数据分析的含义

数据分析是指运用适当的方法和技巧对数据(一般数据量较大)进行分析,从看似杂乱无序或毫无关联的数据中挖掘出有价值的信息,总结出隐藏在数据背后的规律。概括地说,数据分析就是通过分析手段将原始数据提炼成有价值的信息。数据分析一般是带有目的性的,它可能是为了制订解决方案或研究某个对象,也可能是为了预测事物的发展趋势。因此,要有针对性地分析数据、提炼信息,因为分析相同的数据如果目的不同,得到的信息也可能会大不相同。数据分析只有与实际问题相结合,才能体现出自身的价值。

1.2 数据分析的基础流程

数据分析并不是毫无章法的,如果遵循一定的流程,可以提高工作效率,也能降低出错的概率。数据分析的整个流程大致可以分为5个相对独立又相互关联的阶段:明确需求、数据收集、数据处理、数据分析和数据展示。下面简单介绍各个阶段。

1.明确需求

数据分析不是无目的性的,否则在面对大量数据时我们会无从入手。只有明确需求,清楚我们想知道什么,才能有针对性地分析数据。明确需求和目标,可以帮助我们在后续的分析流程中选择适当的方法。对于需求本身,要定义它的范围,太宽泛则会导致收集数据时没有导向性,分析结果也会散乱且没有重点。

2.数据收集

数据收集指的是根据定义的范围和明确的目标,收集相关数据。通常要先提出需求,定义了分析范围后,再收集数据,否则没有边界会导致收集大量无效数据。收集的数据可以是一手数据,如企业内部的销售数据、实验室的试验结果;也可以是二手数据,如第三方机构发布的权威数据、利用爬虫技术获取的网络数据。根据收集方式的不同,数据收集又可分为线下收集和线上收集。数据收集为数据分析提供输入和素材,做好收集工作才能为数据分析打下坚实的基础。

3.数据处理

从不同渠道收集到的原始数据在大部分情况下都比较粗糙,无法直接拿来分析。因此,在进行数据分析之前需要对数据进行二次加工,降低原始数据的复杂度,清除干扰项,把数据处理成合适的形式和结构。这就好比制作一份佳肴之前,我们可能需要清洗食材、加工食材。数据处理包括数据过滤、数据筛选、数据清理、缺失数据填补、类型转换、数据排序等。

4.数据分析

这个阶段包括分析和挖掘:数据分析侧重于观察和描述数据本身的特征,通常依赖数据分析人员的个人经验和对业务的熟悉程度;数据挖掘侧重于知识发现,挖掘数据背后更深层次的规律,通常需要建立数学模型。

其实,整个数据分析的流程与烹饪有很多相似的地方。制作一道菜品,需要先了解品尝者的口味(明确需求),再购买食材(数据收集)、准备食材(数据处理)。数据分析则是最后烹制的过程,煎炸蒸煮,哪种是最合适的烹饪手段也同样是在数据分析中需要考虑的问题。因此,基于准备好的数据,我们要结合实际业务使用合理的策略和方法去分析数据的特征,选择恰当的模型去挖掘数据背后的信息。

5.数据展示

数据展示是将最终分析的结果以更直观、易懂的方式呈现出来,呈现方式可以是报告、报表、图表,甚至是更生动的动态演示。是否需要数据展示,主要根据项目需求而定,它并不是必要的阶段。

1.3 数据收集

1.3.1 线下收集

线下收集是比较传统的收集方式,在互联网技术成熟之前,很多企业和机构都会使用这种方式收集数据。常见的线下收集方式有问卷调查,通过发放纸质问卷向目标人群收集对某种事物或现象的看法。此外,还有基本信息的收集,包括录入企业员工信息、收集学生和家长的信息等。线下收集的方式操作起来简单方便,可以掌控数据样本的大小,但是具有一定的局限性,容易产生偏差和错误。

1.3.2 线上收集

线上收集是指利用互联网技术实现自动化数据采集。依赖不同的技术,线上收集可以演化出不同的数据采集方法。例如,数据埋点可以通过事件追踪的方法捕获并记录用户的行为,常被用来进行网站分析。数据埋点是一种私有化部署的采集方式,如果想获取公开的网站或第三方平台发布的网络数据,则可以利用网络爬虫技术。线上收集的方式效率高,错误率低,局限性小,也可以做到有针对性地采集数据。因为线上收集方式收集效率高,有时候获取的数据量较大,所以需要与大数据分析技术配合应用。

1.4 统计分析策略

1.4.1 描述性统计分析

描述性统计分析是比较基础的数据分析,主要是对目标数据集进行统计性描述。描述性统计分析通过统计指标描述数据的特征,主要包括数据的平均数、数据的分布、数据的集中趋势、数据的离散度等。

我们来看一个简单的例子,表1-1统计了两个城市的市民(成年人)身高信息。最小值和最大值表示市民的身高范围,A城市中市民的身高范围在172.3厘米到176.7厘米,B城市中市民的身高范围在160.2厘米到177.9厘米。表格中的平均值表示了两个城市市民的平均身高,A城市为173.2厘米,B城市为166.3厘米。标准差则体现出身高的波动性,A城市的身高标准差为1.16,B城市的标准差为4.34,大于A城市的标准差。

表1-1 A城市和B城市的身高统计指标

统计指标

A城市

B城市

最小值(厘米)

172.3

160.2

最大值(厘米)

176.7

177.9

平均值(厘米)

173.2

166.3

标准差(厘米)

1.16

4.34

通过比较几个简单的统计指标,我们可以看出两个数据集的特征:首先,从最大和最小值可以看出,B城市的市民身高分布范围更广;标准差则体现出B城市的市民身高波动范围较大,分布更分散;平均值直观地表明A城市市民的平均身高要高于B城市。因此,通过描述数据的特征,我们可以快速地掌握数据的概貌,对数据有一个初步的认知。

1.4.2 推断性统计分析

推断性统计分析是根据样本数据推断总体的特征,并对总体特征进行估计、检验和分析。推断性统计分析是经典的统计分析方法,常用于探索数据背后所呈现的规律。通过分析样本数据,可以推断总体的很多数据特征,如推断数据分布,检验总体是否服从正态分布;分析样本数据的多个特征属性,判断属性之间的关联性;通过比较样本数据之间的差异,推测总体受外部因素影响的变化规律。

同样,我们通过一个例子来了解推断性统计分析方法。表1-2所示是抽检的20把座椅的最大承重数据,假如普通座椅的标准是平均最大承重为150千克,那么通过T检验可以验证这批产品是否合格。T检验是通过样本的平均值推断差异发生的概率,按照如下步骤进行检验。

表1-2 抽检的座椅的最大承重

编号

最大承重(千克)

编号

最大承重(千克)

编号

最大承重(千克)

编号

最大承重(千克)

编号

最大承重(千克)

1

149.1

5

152.8

9

153.4

13

145.5

17

148.9

2

154.1

6

150.5

10

147.2

14

148.3

18

150.6

3

150.6

7

151.7

11

150.1

15

152.1

19

153.1

4

152.7

8

151.1

12

152.1

16

150.6

20

151.2

(1)提出假设、确定检验标准。

H0:产品合格,平均值为150千克(零假设)。

H1:产品不合格,平均值不为150千克(备择假设)。

检验标准:P值(P值用来判定假设检验结果的发生概率)不低于0.05。

(2)计算T检验统计量。

这个问题选择单总体T检验,该检验用于检验一个样本平均数与一个已知的总体平均数的差异是否显著。根据表1-2中的数据,借助统计分析工具计算的T检验统计量为2.09。

(3)查询P值。

根据计算的T检验统计量,查询T检验界值表,找到对应的概率P值。查询的结果为0.12,高于检验标准(0.05),表明原假设成立,即产品合格。

如示例所示,推断性统计分析通常是通过假设检验的方式,计算统计量和概率P值,再根据检验标准验证假设是否成立。推断性统计分析中,常用的检验方法除了T检验,还包括卡方检验、Z检验、F检验等。

1.4.3 探索性统计分析

探索性统计分析也是一种挖掘数据内在规律的分析方法,但更具有探索性。不同于推断性统计分析,探索性统计分析是在尽量少的先验假设下,通过数据分析探索数据背后的模式或规律。在实际应用中,很多数据并不符合假设的统计模型分布,从先假设再分析得出的结果中往往挖掘不到有意义的信息。探索性统计分析则更侧重于用数据本身解释隐藏在背后的真相,通过数据可视化、制表或拟合等手段去观察和发现数据的特征及其内在联系。

探索性统计分析在实际生活中的应用较广泛,例如调查男性和女性在商品购买习惯方面的差异、探讨泳衣阻力与游泳成绩之间的关系等。数据分析中有一个经典的成功案例——啤酒与尿不湿的故事,这个故事将看似毫无关联的啤酒与尿不湿通过数据分析联系在一起。探索性统计分析就是拥有这样的魔力,可以探索和挖掘不易被察觉的规律和内在联系。

1.5 数据分析方法

随着科学计算的不断发展,越来越多的数据分析方法被提出来,如何选择合适的方法则是数据分析人员需要不断去学习的。本节我们介绍几种常用的数据分析方法。

1.5.1 公式拆解法

公式拆解法是指对某一指标用公式层层拆解并分析其影响因素。公式拆解法借助公式的形式,对影响指标的因素层层抽丝剥茧,最终找出核心问题的所在。使用公式拆解法时,需要先确定表明问题的关键指标,然后层层拆解。如分析某游戏产品利润低的原因,过程如下。

(1)纯利润=销售额-开发成本,分析发现是销售额较低。

(2)销售额=销售量×游戏产品单价,分析发现是销售量不理想。

(3)销售量=游戏平台A的销售量+游戏平台B的销售量,分析发现是游戏平台A的销售量明显减少。

(4)游戏平台A的销售量=老用户的购买量+新用户的购买量,分析发现是老用户流失严重。

通过这样层层深挖,我们最终可以找到核心问题是什么,从而进一步制订解决问题的方案。例如上面的例子,假设是平台A本身的问题导致老用户流失,那么可以考虑使用新的促销手段吸引更多的新用户。

1.5.2 对比分析法

对比分析法是指通过对比两组或多组数据来直观地体现事物的差异或变化,这是一种很常见的分析方法。对比分析法首先要根据问题确定对比的指标,例如分析一款软件在计算机和手机上的注册用户情况,可以比较注册用户数量的差异,也可以分析注册转化率(注册用户数量÷下载用户数量)的差异。对比的方式大致可以分为横向对比和纵向对比:横向对比通常是在同一范围内比较不同的事物,例如比较同一时期内某产品在不同销售渠道的销售占比;纵向对比通常是比较同一事物在不同范围的变化,例如分析某产品一年内每月销售额的变化,类似于“与自己比”。

AB测试分析法是在软件测试中常用的对比分析法,主要用于比较A和B两组对象在差异性上所呈现的不同效果。例如,某音乐软件在测试阶段发布了不同的用户交互界面,通过AB测试分析法推断哪种界面设计能够提高转发和评论数量。

1.5.3 预测分析法

预测分析法是指基于已知的数据对未知事物或事物在未来的发展趋势做出估计和测算,即用已知预测未知。这种方法常被用在一些特定领域里。例如,根据历年传染病的感染人数,结合实际情况制作流行病的传播模型,预测当下传染病在将来的传播情况,从而提前制订传染病防控策略;根据历史的股票涨跌数据,预测当前股市的趋势,降低投资风险;通过用户的音乐播放历史清单,推测用户的喜好,从而推荐用户可能喜欢的音乐作品。预测分析法根据预测方式大致分为两种:一种是基于时间序列的预测,基于历史数据预测未来的趋势;另一种是相关性预测,预测变量之间的关联性和因果关系,是一种回归类预测,常见于推荐系统。

1.5.4 漏斗分析法

漏斗分析法是一套流程式数据分析方法,侧重于分析事件在关键环节上的转化率。在互联网行业中,漏斗分析法被普遍用于用户行为分析和流量监控,反映各个阶段用户的流失和留存情况。以电商为例,用户购买商品要经过登录首页、浏览商品详情、加入购物车、进入支付页面、支付成功共5个阶段,每个阶段都可能有用户流失,形成倒三角的漏斗模型,如图1-1所示。

基于漏斗模型,我们可以进一步分析每个阶段用户流失的原因,并根据分析结果做出决策。例如,分析用户进入支付页面但最终不选择支付的原因,可能是优惠力度不够,或是用户惯用的支付方式不支持,也可能是账户余额不足等其他原因。只有了解了用户流失的原因,才能做出应对策略,从而提高用户转化率。

图1-1 网络购物的用户转化率漏斗模型

1.5.5 象限分析法

象限分析法是指以两个或多个维度为坐标并划分出不同象限,不同象限表示不同的价值导向。象限分析法是典型的策略驱动思维,常见于市场分析、产品分析、客户管理等。例如,图1-2所示为一个购物平台分析客户群体的例子,通过页面点击率和购买转化率两个维度来刻画客户群像。通过划分象限,可以了解购物平台的主要客户群体,也可以针对客户特点施行不同的促销活动和商品推荐。

图1-2 基于象限分析的客户群体

1.6 数据挖掘的标准流程(CRISP-DM模型)

数据挖掘是一个发现知识的过程,由SIG(Special Interest Group,共同利益组织)组织提出的CRISP-DM(Cross-Industry Standard Process for Data Mining,跨行业数据挖掘标准流程)模型正是知识发现模型的一种。CRISP-DM模型定义了数据挖掘的标准流程,将一个数据挖掘项目的生命周期划分为6个阶段。

商业理解:理解业务需求,确定挖掘的目标,制订初步计划。

数据理解:收集数据,再观察并描述数据,评估数据的质量。

数据准备:数据预处理,包括数据筛选、数据清洗、数据格式转化等。

建立模型:选择合适的模型,并进行参数调优。

模型评估:从业务角度对模型进行评估审核,确保模型没有重大错误。

模型部署:发布模型,可能是以报告形式呈现结果,也可能是将模型集成到业务系统中。

CRISP-DM模型定义了整个项目的生命周期,有些阶段在数据分析的基本流程中能找到对应的步骤。数据挖掘是一个循环的过程,图1-3所示的6个阶段组成的不是一个单向流程,而是需要不停迭代,进而不断优化。

图1-3 CRISP-DM模型流程图

1.7 数据分析工具

本节介绍几个被大家熟知的数据分析工具,了解它们的特点,有助于我们在实际业务场景中选择更合适的工具,从而提高效率、节省时间成本。

1.7.1 Microsoft Excel

Excel是日常办公中被人们广泛使用的电子表格工具,它拥有直观的界面,以表单形式存储并展示数据。Excel提供了强大的数据操作功能,支持数据选取、数据过滤、数据排序、数据插入、数据自动填充等,操作简单快捷。同时,Excel也支持丰富的数据图表,可绘制柱形图、折线图、散点图、箱形图等。Excel提供的函数库和分析工具库也支持简单的数据统计分析,函数库包括求和、平均数、标准差等函数,分析工具库支持T检验、F检验、协方差等功能。此外,Excel支持通过VBA(Visual Basic for Application,是Visual Basic的一种宏语言)开发工具编写宏脚本实现自动化操作,避免大量烦琐的重复工作。

1.7.2 R语言

R语言是在统计领域被广泛使用的统计分析软件,能运行在多个不同的操作系统上。R语言常被用于科研项目里,一方面是因为R语言的开源性;另一方面是因为R语言内嵌了不同类型的数据集,免去了研究初期的数据收集工作。R语言本身是可编程语言,作为开放的统计编程环境,它的语法易懂易学,且提供了友好的帮助系统。除了强大的统计分析功能,R语言也集成了数据可视化的功能,同样能够基于数据绘制不同的图表。

1.7.3 Python

Python是一门开源的计算机编程语言,并不是专门用于数据分析领域的工具。但是由于Python的开源性以及丰富的第三方库,它在科学计算领域慢慢崭露头角,发展成了一个可用于数据分析的成熟的开发环境。并且Python拥有极强的黏合性,能够集成其他工具和开发语言,完成更加有挑战性的数据分析项目。Python也是本书重点介绍的数据分析工具,在后面我们会展开更详细的讨论。

相关图书

Python极客项目编程(第2版)
Python极客项目编程(第2版)
动手学自然语言处理
动手学自然语言处理
Python财务应用编程
Python财务应用编程
深度学习的数学——使用Python语言
深度学习的数学——使用Python语言
Web应用安全
Web应用安全
Python自动化测试教程
Python自动化测试教程

相关文章

相关课程