描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111566526丛书名: 大数据技术丛书
内容简介
本书分为三大部分,其中第1~4章是Python基础,这个部分会介绍阅读本书所必须掌握的Python知识。第5~7章是讲解Python直接提供的数据处理工具,这些工具包括一些易用的数据结构、标准库和第三方工具。第8~12章是一些实际的案例,将会涉及Python主要擅长的几个领域。后的三个附录分别介绍了关于Python的一些扩展知识。
目 录
目录 Contents
前言
第0章 发现、出发1
0.1 何谓数据科学1
0.1.1 海量的数据与科学的方法2
0.1.2 数据科学并不是新概念3
0.1.3 数据科学是一个系统工程3
0.2 如何成为数据科学家4
0.3 为什么是Python6
0.4 一个简单的例子8
第1章 Python介绍9
1.1 Python的版本之争10
1.2 Python解释器11
1.2.1 Mac OS X系统11
1.2.2 Linux系统11
1.2.3 Windows系统12
1.3 段Python程序14
1.4 使用Python shell调试程序15
第2章 Python基础知识19
2.1 应当掌握的基础知识19
2.1.1 基础数据类型19
2.1.2 变量和赋值21
2.1.3 操作符及表达式22
2.1.4 文本编辑器23
2.2 字符串27
2.3 获取键盘输入29
2.4 流程控制30
2.4.1 条件判断30
2.4.2 循环31
2.4.3 缩进、空白和注释33
第3章 函数及异常处理35
3.1 函数和函数的参数36
3.1.1 定义函数37
3.1.2 关键字参数和默认参数38
3.1.3 可变数量的参数39
3.1.4 递归40
3.2 闭包41
3.3 异常和断言44
第4章 高级字符串处理47
4.1 字符集和字符编码47
4.1.1 ASCII字符集和编码48
4.1.2 Unicode字符集及UTF-8编码49
4.2 字符串操作和格式化51
4.2.1 字符串的基本操作51
4.2.2 字符串分割52
4.2.3 字符串格式化52
4.3 正则表达式53
4.3.1 正则表达式入门54
4.3.2 在Python中使用正则表达式57
第5章 容器和collections60
5.1 元组60
5.2 列表62
5.2.1 引用传递64
5.2.2 列表解析式65
5.3 字典66
5.4 collections69
5.4.1 namedtuple69
5.4.2 Counter70
5.4.3 defaultdict71
5.4.4 OrderedDict71
第6章 Python标准库简介73
6.1 math模块73
6.1.1 常见常量73
6.1.2 无穷74
6.1.3 整数转换75
6.1.4 值和符号76
6.1.5 常用计算77
6.1.6 指数和对数77
6.2 time79
6.3 random82
6.3.1 随机数生成器82
6.3.2 取样84
6.4 glob和fileinput85
6.5 bz2和gzip87
6.6 pprint88
6.7 traceback90
6.8 JSON91
第7章 用Python读写外部数据93
7.1 CSV文件的读写94
7.1.1 读取CSV文件94
7.1.2 创建CSV文件95
7.1.3 处理方言96
7.1.4 将读取的结果转换成字典97
7.2 Excel文件的读写98
7.2.1 读取Excel文件98
7.2.2 写Excel文件99
7.3 MySQL的读写101
7.3.1 写入MySQL103
7.3.2 读取MySQL105
第8章 统计编程106
8.1 描述性统计106
8.1.1 人口普查数据106
8.1.2 均值和中位数110
8.1.3 方差和标准差111
8.1.4 分布113
8.2 数据可视化入门116
8.2.1 pyplot基础116
8.2.2 柱状图和饼图119
8.3 概率122
第9章 爬虫入门124
9.1 网络资源及爬虫的基本原理124
9.2 使用request模块获取HTML内容127
9.2.1 关于HTTP协议127
9.2.2 使用requests的get方法获取HTML内容129
9.3 使用Xpath解析HTML中的内容133
9.3.1 HTML的层级和Xpath的基本概念134
9.3.2 使用谷歌浏览器快速创建Xpath路径137
9.3.3 使用谷歌浏览器复制需要JS渲染的HTML页面138
9.4 实战:爬取商品品类及品牌列表144
第10章 数据科学的第三方库介绍149
10.1 Numpy入门和实战149
10.1.1 Numpy基础150
10.1.2 Numpy基本运算153
10.1.3 Numpy高级特性159
10.1.4 kNN实战162
10.2 Pandas的入门和实战167
10.2.1 Pandas基础168
10.2.2 泰坦尼克号生存率分析实战176
10.3 Scikit-learn入门和实战180
10.3.1 机器学习术语181
10.3.2 Scikit-learn基础183
10.3.2 实战186
第11章 利用Python进行图数据分析193
11.1 图基础193
11.2 NetworkX入门194
11.2.1 基本操作194
11.2.2 为图中的元素添加属性196
11.2.3 有向图及节点的度数197
11.2.4 构建图及图的操作197
11.3 使用NetworkX进行图分析199
11.3.1 利用联通子图发现社区199
11.3.2 通过三角计算强化社区发现201
11.3.3 利用PageRank发现影响力中心202
第12章 大数据工具入门204
12.1 Hadoop204
12.1.1 Hadoop的计算原理205
12.1.2 在Hadoop上运行Python程序208
12.2 Spark211
12.2.1 为什么需要Spark211
12.2.2 如何学习Spark212
12.3 大数据与数据科学的区别215
附录A 编写Python 2与Python 3兼容的代码217
附录B 安装完整的Python开发环境225
附录C 常用的Python技巧235
前言
第0章 发现、出发1
0.1 何谓数据科学1
0.1.1 海量的数据与科学的方法2
0.1.2 数据科学并不是新概念3
0.1.3 数据科学是一个系统工程3
0.2 如何成为数据科学家4
0.3 为什么是Python6
0.4 一个简单的例子8
第1章 Python介绍9
1.1 Python的版本之争10
1.2 Python解释器11
1.2.1 Mac OS X系统11
1.2.2 Linux系统11
1.2.3 Windows系统12
1.3 段Python程序14
1.4 使用Python shell调试程序15
第2章 Python基础知识19
2.1 应当掌握的基础知识19
2.1.1 基础数据类型19
2.1.2 变量和赋值21
2.1.3 操作符及表达式22
2.1.4 文本编辑器23
2.2 字符串27
2.3 获取键盘输入29
2.4 流程控制30
2.4.1 条件判断30
2.4.2 循环31
2.4.3 缩进、空白和注释33
第3章 函数及异常处理35
3.1 函数和函数的参数36
3.1.1 定义函数37
3.1.2 关键字参数和默认参数38
3.1.3 可变数量的参数39
3.1.4 递归40
3.2 闭包41
3.3 异常和断言44
第4章 高级字符串处理47
4.1 字符集和字符编码47
4.1.1 ASCII字符集和编码48
4.1.2 Unicode字符集及UTF-8编码49
4.2 字符串操作和格式化51
4.2.1 字符串的基本操作51
4.2.2 字符串分割52
4.2.3 字符串格式化52
4.3 正则表达式53
4.3.1 正则表达式入门54
4.3.2 在Python中使用正则表达式57
第5章 容器和collections60
5.1 元组60
5.2 列表62
5.2.1 引用传递64
5.2.2 列表解析式65
5.3 字典66
5.4 collections69
5.4.1 namedtuple69
5.4.2 Counter70
5.4.3 defaultdict71
5.4.4 OrderedDict71
第6章 Python标准库简介73
6.1 math模块73
6.1.1 常见常量73
6.1.2 无穷74
6.1.3 整数转换75
6.1.4 值和符号76
6.1.5 常用计算77
6.1.6 指数和对数77
6.2 time79
6.3 random82
6.3.1 随机数生成器82
6.3.2 取样84
6.4 glob和fileinput85
6.5 bz2和gzip87
6.6 pprint88
6.7 traceback90
6.8 JSON91
第7章 用Python读写外部数据93
7.1 CSV文件的读写94
7.1.1 读取CSV文件94
7.1.2 创建CSV文件95
7.1.3 处理方言96
7.1.4 将读取的结果转换成字典97
7.2 Excel文件的读写98
7.2.1 读取Excel文件98
7.2.2 写Excel文件99
7.3 MySQL的读写101
7.3.1 写入MySQL103
7.3.2 读取MySQL105
第8章 统计编程106
8.1 描述性统计106
8.1.1 人口普查数据106
8.1.2 均值和中位数110
8.1.3 方差和标准差111
8.1.4 分布113
8.2 数据可视化入门116
8.2.1 pyplot基础116
8.2.2 柱状图和饼图119
8.3 概率122
第9章 爬虫入门124
9.1 网络资源及爬虫的基本原理124
9.2 使用request模块获取HTML内容127
9.2.1 关于HTTP协议127
9.2.2 使用requests的get方法获取HTML内容129
9.3 使用Xpath解析HTML中的内容133
9.3.1 HTML的层级和Xpath的基本概念134
9.3.2 使用谷歌浏览器快速创建Xpath路径137
9.3.3 使用谷歌浏览器复制需要JS渲染的HTML页面138
9.4 实战:爬取商品品类及品牌列表144
第10章 数据科学的第三方库介绍149
10.1 Numpy入门和实战149
10.1.1 Numpy基础150
10.1.2 Numpy基本运算153
10.1.3 Numpy高级特性159
10.1.4 kNN实战162
10.2 Pandas的入门和实战167
10.2.1 Pandas基础168
10.2.2 泰坦尼克号生存率分析实战176
10.3 Scikit-learn入门和实战180
10.3.1 机器学习术语181
10.3.2 Scikit-learn基础183
10.3.2 实战186
第11章 利用Python进行图数据分析193
11.1 图基础193
11.2 NetworkX入门194
11.2.1 基本操作194
11.2.2 为图中的元素添加属性196
11.2.3 有向图及节点的度数197
11.2.4 构建图及图的操作197
11.3 使用NetworkX进行图分析199
11.3.1 利用联通子图发现社区199
11.3.2 通过三角计算强化社区发现201
11.3.3 利用PageRank发现影响力中心202
第12章 大数据工具入门204
12.1 Hadoop204
12.1.1 Hadoop的计算原理205
12.1.2 在Hadoop上运行Python程序208
12.2 Spark211
12.2.1 为什么需要Spark211
12.2.2 如何学习Spark212
12.3 大数据与数据科学的区别215
附录A 编写Python 2与Python 3兼容的代码217
附录B 安装完整的Python开发环境225
附录C 常用的Python技巧235
前 言
Foreword 前言为什么要写这本书我接触大数据技术的时间算是比较早的,四五年前当大数据这个词火遍互联网的时候,我就已经在实验室里学习编程及算法的知识。那个时候我一心想要做学术,每天阅读大量的英文文献,主要兴趣更多的是在机器人和人工智能上。研究生毕业时我本来想实现早先的愿望,继续攻读博士学位,不过思来想去觉得不应该错过大数据这个机会,所以毅然决定投入大数据行业中。
在工作之初,市面上已经存在一些介绍大数据相关技术的权威著作,其中很多还是很底层的或特定领域的专著。但即使是我这种自诩为“学院派”的人看这些书,头脑也会经常开小差。而大数据相关的技术又特别庞杂,包括计算框架、网络爬虫、机器学习算法、编程语言、数据库、文本分析、数据流水线的架构,甚至还包括前端可视化等众多方面,只有对它们都有涉猎,才能更好地胜任相关的工作。所以我读过很多的相关图书,这确实为我以后的工作打下了坚实的基础,不过随着工作内容的增加,以及新同事的到来,更多的问题相继涌现。首当其冲的就是,并不是每个人都有足够的基础来阅读这些专业著作,而且每个人的情况各不相同,有的是编程基础差,有的是数学基础差,有的是英语基础差,这也导致我的这套学习方法难以推广开来。所以我想写一本关于大数据技术的手册,其目的并不是为读者讲明白所有技术背后的原理,而是告诉读者某项技术可以用于哪些工作中,哪些工作需要哪些工具。
读完这本手册,可以帮助读者建立一个相对完整的大数据生态的概念,其中所讲的每一个工具都值得读者进行更深入的研究(你也可以像我一样,对其中的两三项进行非常深入的研究),也许在研究过程中,你会成为该领域的专家。如果现在正在看这本书的你是一位技术决策者,那么我希望本书的介绍能帮助你下定决心使用其中的某项技术,比如写作全书的Python语言就是一门非常好的数据处理语言,它能快速编码,且具有强大的字符串处理能力,拥有大量成熟的大数据类库,这些都使Python成为数据科学领域无可争议的No. 1语言;或许你的团队可以仅用Python编写大规模分布式爬虫程序(虽然本书介绍的是单机的简化版)就能大幅度地提升工作的效率。Scrapy可能是爬虫领域有名的框架了,你也可以像我一样实现属于你自己的版本。当然这本书也是一本Python入门书,所以读者无须担心阅读门槛,你可以从零基础开始学习,并体验整个学习过程所带来的愉悦。
读者对象根据工作职责的不同,我为本书划分出了一些可能的读者,具体如下。
想要了解大数据生态的学生。
需要快速入门大数据的技术人员。
需要了解技术细节以做决策的技术管理者。
希望入门Python但不知如何下手的编程爱好者。
如何阅读本书本书分为三部分,其中第1~4章是Python基础,这个部分会介绍阅读本书所必须掌握的Python知识,但并不会包含很复杂的编程知识,比如面向对象编程就不是必要的,因为Python支持过程式编程,可以直接编写函数,使用这种方式编程更适合教学,因为所有的执行步骤都是线性的,方便逐步讲解。第5~7章讲解的是Python直接提供的数据处理工具,这些工具包括一些易用的数据结构、标准库和第三方工具。学习这些工具可以让我们快速地实现某些简单的算法,而不用花费大量的时间“重复造轮子”,Python处理数据的高效性在此处将体现得淋漓尽致。第8~12章是一些实际的案例,将会涉及Python主要擅长的几个领域:统计、爬虫、科学计算、Hadoop&Spark中的集成、图计算等。后的三个附录分别介绍了关于Python的一些扩展知识,比如如何编写同时兼容Python 2和Python 3的代码,如何安装完整Python开发环境,以及一些常用的Python技巧,如处理时间、文件I/O等。
勘误和支持由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。另外本书的部分代码会上传到Github上,其网址为:https://github.com/magigo/data_science_tool_book_code。你可以将书中的错误发布在Issues中,或者向我提问,我会尽可能地回答你的问题。当然如果是比较好的问题我也希望你能在知乎上邀请我回答,这样就能有更多的人受益于你的问题,我的知乎主页为:https://www.zhihu.com/people/ji-lu-15-70。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱[email protected],我很期待能够听到你们的真挚反馈。
致谢首先要感谢“仁慈的独裁者”吉多·范罗苏姆(Guido van Rossum),他在我出生的那一年(1989年)发明了Python编程语言,不仅为我带来了一份全职的工作,还为我带来了无尽的乐趣。而且我与Python似乎真的有着某种缘分,不仅出生年份相同,生肖也相同,不知道吉多是否知道1989年正好也是我国的农历蛇年呢。
感谢机械工业出版社华章公司的编辑Lisa邀请我写作本书,刚开始时我乐观地估计本书很快就能写作完成。不过就像大多数软件项目一样——它延期了。感谢Lisa在百忙中适时地督促我写作,没有她我想这本书与读者见面的时间还会延后。
后我要特别感谢我的爸爸、妈妈和前女友(你知道我要强调“前”这个字)
在工作之初,市面上已经存在一些介绍大数据相关技术的权威著作,其中很多还是很底层的或特定领域的专著。但即使是我这种自诩为“学院派”的人看这些书,头脑也会经常开小差。而大数据相关的技术又特别庞杂,包括计算框架、网络爬虫、机器学习算法、编程语言、数据库、文本分析、数据流水线的架构,甚至还包括前端可视化等众多方面,只有对它们都有涉猎,才能更好地胜任相关的工作。所以我读过很多的相关图书,这确实为我以后的工作打下了坚实的基础,不过随着工作内容的增加,以及新同事的到来,更多的问题相继涌现。首当其冲的就是,并不是每个人都有足够的基础来阅读这些专业著作,而且每个人的情况各不相同,有的是编程基础差,有的是数学基础差,有的是英语基础差,这也导致我的这套学习方法难以推广开来。所以我想写一本关于大数据技术的手册,其目的并不是为读者讲明白所有技术背后的原理,而是告诉读者某项技术可以用于哪些工作中,哪些工作需要哪些工具。
读完这本手册,可以帮助读者建立一个相对完整的大数据生态的概念,其中所讲的每一个工具都值得读者进行更深入的研究(你也可以像我一样,对其中的两三项进行非常深入的研究),也许在研究过程中,你会成为该领域的专家。如果现在正在看这本书的你是一位技术决策者,那么我希望本书的介绍能帮助你下定决心使用其中的某项技术,比如写作全书的Python语言就是一门非常好的数据处理语言,它能快速编码,且具有强大的字符串处理能力,拥有大量成熟的大数据类库,这些都使Python成为数据科学领域无可争议的No. 1语言;或许你的团队可以仅用Python编写大规模分布式爬虫程序(虽然本书介绍的是单机的简化版)就能大幅度地提升工作的效率。Scrapy可能是爬虫领域有名的框架了,你也可以像我一样实现属于你自己的版本。当然这本书也是一本Python入门书,所以读者无须担心阅读门槛,你可以从零基础开始学习,并体验整个学习过程所带来的愉悦。
读者对象根据工作职责的不同,我为本书划分出了一些可能的读者,具体如下。
想要了解大数据生态的学生。
需要快速入门大数据的技术人员。
需要了解技术细节以做决策的技术管理者。
希望入门Python但不知如何下手的编程爱好者。
如何阅读本书本书分为三部分,其中第1~4章是Python基础,这个部分会介绍阅读本书所必须掌握的Python知识,但并不会包含很复杂的编程知识,比如面向对象编程就不是必要的,因为Python支持过程式编程,可以直接编写函数,使用这种方式编程更适合教学,因为所有的执行步骤都是线性的,方便逐步讲解。第5~7章讲解的是Python直接提供的数据处理工具,这些工具包括一些易用的数据结构、标准库和第三方工具。学习这些工具可以让我们快速地实现某些简单的算法,而不用花费大量的时间“重复造轮子”,Python处理数据的高效性在此处将体现得淋漓尽致。第8~12章是一些实际的案例,将会涉及Python主要擅长的几个领域:统计、爬虫、科学计算、Hadoop&Spark中的集成、图计算等。后的三个附录分别介绍了关于Python的一些扩展知识,比如如何编写同时兼容Python 2和Python 3的代码,如何安装完整Python开发环境,以及一些常用的Python技巧,如处理时间、文件I/O等。
勘误和支持由于笔者的水平有限,编写的时间也很仓促,书中难免会出现一些错误或不准确的地方,恳请读者批评指正。另外本书的部分代码会上传到Github上,其网址为:https://github.com/magigo/data_science_tool_book_code。你可以将书中的错误发布在Issues中,或者向我提问,我会尽可能地回答你的问题。当然如果是比较好的问题我也希望你能在知乎上邀请我回答,这样就能有更多的人受益于你的问题,我的知乎主页为:https://www.zhihu.com/people/ji-lu-15-70。如果你有更多的宝贵意见,也欢迎你发送邮件至我的邮箱[email protected],我很期待能够听到你们的真挚反馈。
致谢首先要感谢“仁慈的独裁者”吉多·范罗苏姆(Guido van Rossum),他在我出生的那一年(1989年)发明了Python编程语言,不仅为我带来了一份全职的工作,还为我带来了无尽的乐趣。而且我与Python似乎真的有着某种缘分,不仅出生年份相同,生肖也相同,不知道吉多是否知道1989年正好也是我国的农历蛇年呢。
感谢机械工业出版社华章公司的编辑Lisa邀请我写作本书,刚开始时我乐观地估计本书很快就能写作完成。不过就像大多数软件项目一样——它延期了。感谢Lisa在百忙中适时地督促我写作,没有她我想这本书与读者见面的时间还会延后。
后我要特别感谢我的爸爸、妈妈和前女友(你知道我要强调“前”这个字)
评论
还没有评论。