书海网短评:
适读人群:了解基本的Python语法,想利用Python进行数据分析,数据挖掘的初学者这是一本务实之作,充分体现数据分析流程的各项环节,包含数据的采集、清洗和探索性分析,并通过大家耳熟能说的Python工具加以实操。
这是一本务实之作,充分体现数据分析流程的各项环节,包含数据的采集、清洗和探索性分析,并通过大家耳熟能说的Python工具加以实操。
《Python数据分析入门――从数据获取到可视化》作为数据分析的入门图书,以Python语言为基础,介绍了数据分析的整个流程。《Python数据分析入门――从数据获取到可视化》内容涵盖数据的获取(即网络爬虫程序的设计)、前期数据的清洗和处理、运用机器学习算法进行建模分析,以及使用可视化的方法展示数据及结果。首先,书中不会涉及过于高级的语法,不过还是希望读者有一定的语法基础,这样可以更好地理解《Python数据分析入门――从数据获取到可视化》的内容。其次,《Python数据分析入门――从数据获取到可视化》重点在于应用Python来完成一些数据分析和数据处理的工作,即如何使用Python来完成工作而非专注于Python语言语法等原理的讲解。《Python数据分析入门――从数据获取到可视化》的目的是让初学者不论对数据分析流程本身还是Python语言,都能有一个十分直观的感受,为以后的深入学习打下基础。最后,读者不必须按顺序通读《Python数据分析入门――从数据获取到可视化》,因为各个章节层次比较分明,可以根据兴趣或者需要来自行安排。例如第5章介绍了一些实战的小项目,有趣且难度不大,大家可以在学习前面内容之余来阅读这部分内容。
沈祥壮
自学Python两年,以数据分析为主线,系统学习了数据的采集,处理、分析和可视化。在研究统计机器学习理论的同时,使用Python语言实现了部分统计学习算法。研究方向包括数据采集,数据挖掘,统计机器学习及图像处理。
这是一本务实之作,充分体现数据分析流程的各项环节,包含数据的采集、清洗和探索性分析,并通过大家耳熟能说的Python工具加以实操。对Python的初学者来说,可以从《Python数据分析入门――从数据获取到可视化》学到数据分析的思维和实战。这是一本不错的入门指南。
——刘顺祥(公众号:数据分析1480)嘉桥信息科技有限公司高级数据分析师
1准备1
1.1开发环境搭建2
1.1.1在Ubuntu系统下搭建Python集成开发环境2
1.1.2在Windows系统下搭建Python集成开发环境13
1.1.3三种安装第三方库的方法16
1.2Python基础语法介绍19
1.2.1if__name__=='__main__'20
1.2.2列表解析式22
1.2.3装饰器23
1.2.4递归函数26
1.2.5面向对象27
1.3TheZenofPython28
参考文献30
2数据的获取31
2.1爬虫简介31
2.2数据抓取实践33
2.2.1请求网页数据33
2.2.2网页解析38
2.2.3数据的存储46
2.3爬虫进阶50
2.3.1异常处理50
2.3.2robots.txt58
2.3.3动态UA60
2.3.4代理IP61
2.3.5编码检测61
2.3.6正则表达式入门63
2.3.7模拟登录69
2.3.8验证码问题74
2.3.9动态加载内容的获取84
2.3.10多线程与多进程93
2.4爬虫总结101
参考文献102
3数据的存取与清洗103
3.1数据存取103
3.1.1基本文件操作103
3.1.2CSV文件的存取111
3.1.3JSON文件的存取116
3.1.4XLSX文件的存取121
3.1.5MySQL数据库文件的存取137
3.2NumPy145
3.2.1NumPy简介145
3.2.2NumPy基本操作146
3.3pandas158
3.3.1pandas简介158
3.3.2Series与DataFrame的使用159
3.3.3布尔值数组与函数应用169
3.4数据的清洗174
3.4.1编码问题174
3.4.2缺失值的检测与处理175
3.4.3去除异常值181
3.4.4去除重复值与冗余信息183
3.4.5注意事项185
参考文献187
4数据的分析及可视化188
4.1探索性数据分析189
4.1.1基本流程189
4.1.2数据降维197
4.2机器学习入门199
4.2.1机器学习简介200
4.2.2决策树――机器学习算法的应用202
4.3手动实现KNN算法205
4.3.1特例――最邻近分类器205
4.3.2KNN算法的完整实现213
4.4数据可视化215
4.4.1高质量作图工具――matplotlib215
4.4.2快速作图工具――pandas与matplotlib223
4.4.3简捷作图工具――seaborn与matplotlib226
4.4.4词云图230
参考文献232
5Python与生活234
5.1定制一个新闻提醒服务234
5.1.1新闻数据的抓取235
5.1.2实现邮件发送功能237
5.1.3定时执行及本地日志记录239
5.2Python与数学241
5.2.1估计π值242
5.2.2三门问题245
5.2.3解决LP与QP问题(选读)247
5.3QQ群聊天记录数据分析251
参考文献256
三门问题
三门问题,亦称为蒙提霍尔问题,出自美国的电视游戏节目Let’sMakeaDeal。问题的名字来自该节目的主持人蒙提·霍尔(MontyHall)。游戏规则是:参赛者会看见三扇关闭了的门,其中一扇后面有一辆汽车,选中后面有车的那扇门就可以赢得该汽车,而另外两扇门后面则各藏有一只山羊。当参赛者选定了一扇门,但未去开启它的时候,节目主持人会开启剩下两扇门的其中一扇,露出其中一只山羊。主持人其后会问参赛者要不要换另一扇仍然关上的门。
关于换不换的问题,就是计算换了之后能不能增加获得汽车的概率。答案是可以,不换的话获得汽车的概率是1∶3,但是换了之后的概率将提高到2∶3。关于理论上的证明有很多种方式,这里就不再一一介绍。下面直接看怎么用Python来模拟这个过程并得出结论,在这之前建议有点思路的读者先自己尝试一下看能不能写出来,这里给出一个参考程序。
首先是进行一次游戏,根据规则和做出的策略来看是否能赢。
#计算在第二次采取不同策略时,是否在游戏中获胜(选中汽车)
defgame(strategy):
win=0
#假定汽车在0号门(参赛者并不了解这一事实)
doors=[0,1,2]
#因为事先并不知道任何信息,所以第一次随机选取一扇门
first_choice=rnd.choice(doors)
#根据第一次的选择情况的不同,第二次决策面临两种不同的备选组合
#如果第一次选择了0号门,那么在主持人打开另外两扇门中的其中一扇门后
#第二次将在0号门和未打开的空门(1或2)中作出选择
iffirst_choice==0:
doors=[0,rnd.choice([1,2])]
#如果第一次没有选中0,那么此时被打开的必然是另一扇有山羊的门,那么
#在第二次选择时,将在0和自己现在所处的门(first_choice)作出选择
else:
doors=[0,first_choice]
#采取不同的策略进行第二次选择
#保持原来位置不变
ifstrategy=='stick':
second_choice=first_choice
#排除一扇空门后,放弃原来的选择,直接选择另一扇门
else:
doors.remove(first_choice)
second_choice=doors[0]
#记得,奖品在0号门
ifsecond_choice==0:
win=1
returnwin
之后进行一定次数的模拟,并计算不同策略获胜的概率,如下所示。
#对特定策略进行的一定次数的模拟
defMC(strategy,times):
wins=0
foriinrange(times):
wins+=game(strategy)
#计算获奖的概率值
p=wins/times
print('第二次选择采用'+strategy+'方法,
获奖的概率为:'+str(p)+'(模拟次数为'+str(times)+')')
模拟10000次,如下所示。
if__name__=='__main__':
MC('stick',10000)
MC('switch',10000)
运行输出如下。
第二次选择采用stick方法,获奖的概率为:0.3438(模拟次数为10000)
第二次选择采用switch方法,获奖的概率为:0.6658(模拟次数为10000)
可以清楚地看到转换的概率提升到了三分之二。该程序再次见证了蒙特卡罗方法的强大,我们不需要去理解问题本身深刻的机理,只需要将现象在一定的规则下进行尽量多的随机模拟,即可得到解决问题的办法。Python还可以利用现有的第三方库来解决较为复杂的优化问题,下面介绍LP、QP问题的解决。
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用Python便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。《Python数据分析入门――从数据获取到可视化》本着实用性的目的,着眼于整个数据分析的流程,介绍了从数据采集到可视化的大致流程。希望借此为Python初学者打开数据分析领域的大门,初窥数据分析的奥秘。
《Python数据分析入门――从数据获取到可视化》的主要内容
第1章主要讲解了在Ubuntu和Windows系统下,Python集成开发环境的搭建。考虑到初学者容易为安装第三方库犯难,又介绍了三种简单实用的方法来安装这些常见的库。接着对几个后面要用到的高级语法进行了简单介绍,为之后的应用打下基础。
第2章集中讲解了数据采集的流程,即网络爬虫程序的设计与实现。首先本章没有拘泥于使用Python的内置库urllib库进行实现,而是直接介绍了requests和其他更加简捷强大的库来完成程序的设计。在进阶内容中,对常见的编码问题、异常处理、代理IP、验证码、机器人协议、模拟登录,以及多线程等相关问题给出了解决的方案。
第3章讲解数据的清洗问题。在具体讲解清洗数据之前,先介绍了TXT、XLSX、JSON、CSV等各种文件的导入和导出的方法,并介绍了Python与MySQL数据库交互的方式。接着介绍了NumPy和pandas库的基本使用方法,这是我们用于数据处理和科学计算的两个强大的工具。最后综合以上的学习介绍了数据的去重、缺失值的填补等经典的数据清洗方法。
第4章首先讲解探索性数据分析的应用,并且简单介绍了机器学习基本知识。然后演示如何应用sklearn库提供的决策树和最邻近算法来处理分类问题,并尝试根据算法原理手动实现最邻近算法。最后介绍如何使用pandas、matplotlib和seaborn这三个库来实现数据的可视化。
第5章是综合性学习的章节,讲解了三个小项目的完整实现过程,旨在通过操作生活中真正的数据来强化前面基础内容的学习。
《Python数据分析入门――从数据获取到可视化》的读者对象
《Python数据分析入门――从数据获取到可视化》面向想从事数据工作的Python初学者。由于《Python数据分析入门――从数据获取到可视化》并不对Python的基础语法做详细的讲解,所以希望读者有一定的语法基础。
测试环境及代码
我们使用的语法是基于Python3的,具体是Python3.6,用到的第三方库也已经全面支持此版本,所以读者不必担心相关的版本问题;测试环境为Ubuntu16.04LTS64-Bit。《Python数据分析入门――从数据获取到可视化》中使用的全部代码及相关数据已经托管至Github,读者可以进入https://github.com/shenxiangzhuang/PythonDataAnalysis进行下载。
联系作者
虽然《Python数据分析入门――从数据获取到可视化》只是入门级图书,但是限于笔者水平有限,难免会存在一些错误,有些地方的表述可能也不是那么准确。非常欢迎读者指出《Python数据分析入门――从数据获取到可视化》的不当之处或提出建设性的意见。笔者的电子邮件地址是datahonor@gmail.com。
致谢
在《Python数据分析入门――从数据获取到可视化》的撰写过程中受到过很多人的帮助,这里特别感谢刘松学长,感谢学长对笔者本人长久以来的帮助,从他那里我学到了很多关于Python语言、机器学习以及计算机视觉等相关知识。另外,特别感谢IT工作者谢满锐先生对《Python数据分析入门――从数据获取到可视化》的细心审校,也感谢他为《Python数据分析入门――从数据获取到可视化》的进一步修改提出建设性意见。同时,感谢电子工业出版社石倩、杨嘉媛编辑的帮助。最后,《Python数据分析入门――从数据获取到可视化》参阅了大量的国内外的文献,这里对有关作者表示衷心的感谢。









