描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111576402丛书名: 数据分析与决策技术丛书
内容简介
数据分析是一个快速发展的领域,而Python已经演变成数据科学的主要语言,广泛应用于数据分析、可视化和机器学习等领域。本书从数据分析的基础内容入手,比如matplotlib、NumPy和Pandas库,介绍如何通过选择色彩图和调色板来创建可视化,之后深入统计数据分析,将帮助你掌握Spark和HDFS,为网络挖掘创建可迁移脚本。本书还详细阐述如何评价股票,检测市场有效性,使用指标和聚类等,并且还将使用多线程实现并行性,并加速你的代码。在本书结束时,读者将能够运用各种Python中的数据分析技术,并针对问题场景设计解决方案。
目 录
Contents?目 录
译者序
前 言
第1章为可重复的数据分析奠定基础 1
1.1 简介 1
1.2 安装Anaconda 2
1.3 安装数据科学工具包 3
1.4 用virtualenv和virtualenvwrapper创建Python虚拟环境 5
1.5 使用Docker镜像沙盒化Python应用 6
1.6 在IPython Notebook中记录软件包的版本和历史 8
1.7 配置IPython 11
1.8 学习为鲁棒性错误校验记录日志 13
1.9 为你的代码写单元测试 16
1.10 配置pandas 18
1.11 配置matplotlib 20
1.12为随机数生成器和NumPy打印选项设置种子 23
1.13使报告、代码风格和数据访问标准化 24
第2章 创建美观的数据可视化 28
2.1 简介 28
2.2 图形化安斯库姆四重奏 28
2.3 选择Seaborn的调色板 31
2.4 选择matplotlib的颜色表 33
2.5 与IPython Notebook部件交互 35
2.6 查看散点图矩阵 38
2.7通过mpld3使用d3.js进行可视化 40
2.8 创建热图 41
2.9把箱线图、核密度图和小提琴图组合 44
2.10 使用蜂巢图可视化网络图 45
2.11 显示地图 47
2.12 使用类ggplot2图 49
2.13 使用影响图高亮数据 51
第3章 统计数据分析和概率 53
3.1 简介 53
3.2 将数据拟合到指数分布 53
3.3 将聚合数据拟合到伽马分布 55
3.4 将聚合计数拟合到泊松分布 57
3.5 确定偏差 59
3.6 估计核密度 61
3.7确定均值、方差和标准偏差的置信区间 64
3.8 使用概率权重采样 66
3.9 探索极值 68
3.10使用皮尔逊相关系数测量变量之间的相关性 71
3.11使用斯皮尔曼等级相关系数测量变量之间的相关性 74
3.12使用点二列相关系数测量二值变量和连续变量的相关性 77
3.13评估变量与方差分析之间的关系 78
第4章 处理数据和数值问题 81
4.1 简介 81
4.2 剪辑和过滤异常值 81
4.3 对数据进行缩尾处理 84
4.4 测量噪声数据的集中趋势 85
4.5 使用Box-Cox变换进行归一化 88
4.6 使用幂阶梯转换数据 90
4.7 使用对数转换数据 91
4.8 重组数据 93
4.9 应用logit()来变换比例 95
4.10 拟合鲁棒线性模型 97
4.11 使用加权小二乘法考虑方差 99
4.12 使用任意精度进行优化 101
4.13 使用任意精度的线性代数 103
第5章网络挖掘、数据库和大数据 107
5.1 简介 107
5.2 模拟网页浏览 108
5.3 网络数据挖掘 110
5.4处理非ASCII文本和HTML实体 112
5.5 实现关联表 114
5.6 创建数据库迁移脚本 117
5.7 在已经存在的表中增加一列 117
5.8 在表创建之后添加索引 118
5.9 搭建一个测试Web服务器 120
5.10实现具有事实表和维度表的星形模式 121
5.11 使用Hadoop分布式文件系统 126
5.12 安装配置Spark 127
5.13 使用Spark聚类数据 128
第6章 信号处理和时间序列 132
6.1 简介 132
6.2 使用周期图做频谱分析 132
6.3使用Welch算法估计功率谱密度 134
6.4 分析峰值 136
6.5 测量相位同步 138
6.6 指数平滑法 140
6.7 评估平滑法 142
6.8 使用Lomb-Scargle周期图 145
6.9 分析音频的频谱 146
6.10 使用离散余弦变换分析信号 149
6.11 对时序数据进行块自举 151
6.12 对时序数据进行动态块自举 153
6.13 应用离散小波变换 155
第7章利用金融数据分析选择股票 159
7.1 简介 159
7.2 计算简单收益率和对数收益率 159
7.3使用夏普比率和流动性对股票进行排名 161
7.4使用卡玛和索提诺比率对股票进行排名 162
7.5 分析收益统计 164
7.6 将个股与更广泛的市场相关联 166
7.7 探索风险与收益 169
7.8 使用非参数运行测试检验市场 170
7.9 测试随机游走 173
7.10 使用自回归模型确定市场效率 175
7.11 为股票价格数据库建表 177
7.12 填充股票价格数据库 178
7.13 优化等权重双资产组合 183
第8章 文本挖掘和社交网络分析 186
8.1 简介 186
8.2 创建分类的语料库 186
8.3 以句子和单词标记化新闻文章 189
8.4词干提取、词形还原、过滤和TF-IDF得分 189
8.5 识别命名实体 193
8.6 提取带有非负矩阵分解的主题 194
8.7 实现一个基本的术语数据库 196
8.8 计算社交网络密度 200
8.9 计算社交网络接近中心性 201
8.10 确定中介中心性 202
8.11 评估平均聚类系数 203
8.12 计算图的分类系数 204
8.13 获得一个图的团数 205
8.14 使用余弦相似性创建文档图 206
第9章 集成学习和降维 209
9.1 简介 209
9.2 递归特征消除 210
9.3 应用主成分分析来降维 211
9.4 应用线性判别分析来降维 213
9.5 多模型堆叠和多数投票 214
9.6 学习随机森林 217
9.7使用RANSAC算法拟合噪声数据 220
9.8 使用Bagging来改善结果 222
9.9 用于更好学习的Boosting算法 224
9.10 嵌套交叉验证 227
9.11 使用joblib重用模型 229
9.12 层次聚类数据 231
9.13 Theano之旅 232
第10章评估分类器、回归器和聚类 235
10.1 简介 235
10.2 直接使用混淆矩阵分类 235
10.3 计算精度、召回率和F1分数 23
译者序
前 言
第1章为可重复的数据分析奠定基础 1
1.1 简介 1
1.2 安装Anaconda 2
1.3 安装数据科学工具包 3
1.4 用virtualenv和virtualenvwrapper创建Python虚拟环境 5
1.5 使用Docker镜像沙盒化Python应用 6
1.6 在IPython Notebook中记录软件包的版本和历史 8
1.7 配置IPython 11
1.8 学习为鲁棒性错误校验记录日志 13
1.9 为你的代码写单元测试 16
1.10 配置pandas 18
1.11 配置matplotlib 20
1.12为随机数生成器和NumPy打印选项设置种子 23
1.13使报告、代码风格和数据访问标准化 24
第2章 创建美观的数据可视化 28
2.1 简介 28
2.2 图形化安斯库姆四重奏 28
2.3 选择Seaborn的调色板 31
2.4 选择matplotlib的颜色表 33
2.5 与IPython Notebook部件交互 35
2.6 查看散点图矩阵 38
2.7通过mpld3使用d3.js进行可视化 40
2.8 创建热图 41
2.9把箱线图、核密度图和小提琴图组合 44
2.10 使用蜂巢图可视化网络图 45
2.11 显示地图 47
2.12 使用类ggplot2图 49
2.13 使用影响图高亮数据 51
第3章 统计数据分析和概率 53
3.1 简介 53
3.2 将数据拟合到指数分布 53
3.3 将聚合数据拟合到伽马分布 55
3.4 将聚合计数拟合到泊松分布 57
3.5 确定偏差 59
3.6 估计核密度 61
3.7确定均值、方差和标准偏差的置信区间 64
3.8 使用概率权重采样 66
3.9 探索极值 68
3.10使用皮尔逊相关系数测量变量之间的相关性 71
3.11使用斯皮尔曼等级相关系数测量变量之间的相关性 74
3.12使用点二列相关系数测量二值变量和连续变量的相关性 77
3.13评估变量与方差分析之间的关系 78
第4章 处理数据和数值问题 81
4.1 简介 81
4.2 剪辑和过滤异常值 81
4.3 对数据进行缩尾处理 84
4.4 测量噪声数据的集中趋势 85
4.5 使用Box-Cox变换进行归一化 88
4.6 使用幂阶梯转换数据 90
4.7 使用对数转换数据 91
4.8 重组数据 93
4.9 应用logit()来变换比例 95
4.10 拟合鲁棒线性模型 97
4.11 使用加权小二乘法考虑方差 99
4.12 使用任意精度进行优化 101
4.13 使用任意精度的线性代数 103
第5章网络挖掘、数据库和大数据 107
5.1 简介 107
5.2 模拟网页浏览 108
5.3 网络数据挖掘 110
5.4处理非ASCII文本和HTML实体 112
5.5 实现关联表 114
5.6 创建数据库迁移脚本 117
5.7 在已经存在的表中增加一列 117
5.8 在表创建之后添加索引 118
5.9 搭建一个测试Web服务器 120
5.10实现具有事实表和维度表的星形模式 121
5.11 使用Hadoop分布式文件系统 126
5.12 安装配置Spark 127
5.13 使用Spark聚类数据 128
第6章 信号处理和时间序列 132
6.1 简介 132
6.2 使用周期图做频谱分析 132
6.3使用Welch算法估计功率谱密度 134
6.4 分析峰值 136
6.5 测量相位同步 138
6.6 指数平滑法 140
6.7 评估平滑法 142
6.8 使用Lomb-Scargle周期图 145
6.9 分析音频的频谱 146
6.10 使用离散余弦变换分析信号 149
6.11 对时序数据进行块自举 151
6.12 对时序数据进行动态块自举 153
6.13 应用离散小波变换 155
第7章利用金融数据分析选择股票 159
7.1 简介 159
7.2 计算简单收益率和对数收益率 159
7.3使用夏普比率和流动性对股票进行排名 161
7.4使用卡玛和索提诺比率对股票进行排名 162
7.5 分析收益统计 164
7.6 将个股与更广泛的市场相关联 166
7.7 探索风险与收益 169
7.8 使用非参数运行测试检验市场 170
7.9 测试随机游走 173
7.10 使用自回归模型确定市场效率 175
7.11 为股票价格数据库建表 177
7.12 填充股票价格数据库 178
7.13 优化等权重双资产组合 183
第8章 文本挖掘和社交网络分析 186
8.1 简介 186
8.2 创建分类的语料库 186
8.3 以句子和单词标记化新闻文章 189
8.4词干提取、词形还原、过滤和TF-IDF得分 189
8.5 识别命名实体 193
8.6 提取带有非负矩阵分解的主题 194
8.7 实现一个基本的术语数据库 196
8.8 计算社交网络密度 200
8.9 计算社交网络接近中心性 201
8.10 确定中介中心性 202
8.11 评估平均聚类系数 203
8.12 计算图的分类系数 204
8.13 获得一个图的团数 205
8.14 使用余弦相似性创建文档图 206
第9章 集成学习和降维 209
9.1 简介 209
9.2 递归特征消除 210
9.3 应用主成分分析来降维 211
9.4 应用线性判别分析来降维 213
9.5 多模型堆叠和多数投票 214
9.6 学习随机森林 217
9.7使用RANSAC算法拟合噪声数据 220
9.8 使用Bagging来改善结果 222
9.9 用于更好学习的Boosting算法 224
9.10 嵌套交叉验证 227
9.11 使用joblib重用模型 229
9.12 层次聚类数据 231
9.13 Theano之旅 232
第10章评估分类器、回归器和聚类 235
10.1 简介 235
10.2 直接使用混淆矩阵分类 235
10.3 计算精度、召回率和F1分数 23
前 言
前 言?Preface数据分析是Python的杀手锏。
——匿名本书是《Python Data Analysis》的后续。那么在《Python Data Analysis》已经足够优秀(我愿意这么认为)的情况下,这本书有哪些新的内容吗?本书是针对那些有一定经验的Python程序员写的。一年时间过去了,因此,我们将使用在《Python Data Analysis》中没有用到的一些更新版本的软件和软件库。另外,经过深入反思和调研,我做出了以下的总结:
为了减轻自己的负担,同时提高代码的可重复使用率,我需要一个工具箱,我将这个工具箱命名为dautil并将它发布到了Pypi上(可以通过pip/easy_install安装)。
通过反省,我深信需要简化获取和安装所需要的软件的过程,因此我通过DockerHub发布了一个包含了我们需要用到的软件的Docker容器(pydacbk),在本书的第1章和线上章节中你将了解更多关于如何安装的细节。这个Docker容器还是不够理想,因为它的体积已经相当大,所以我需要做出一些艰难的决定。因为这个容器并不是本书的一部分,所以如果你有任何问题可以直接与我联系,但是请记住我不会对镜像做很大的修改。
本书会使用IPython Notebook,这个工具已经成为数据分析时的标准工具。在线上章节以及我写的其他书中,我已经给出了一些和IPython Notebook相关的建议。
除了极少数案例外,本书中我主要使用的是Python 3,因为2020年后官方将不再支持Python 2。
为什么需要这本书有人会说你并不需要书籍,你只需要去做一个感兴趣的项目,然后在做项目的同时就会搞明白那些东西。但是尽管接触到大量的资源,这个过程可能还是会令你感到沮丧。打个比方,如果想烹调一碗美味的汤,你可以去向朋友和家人寻求帮助,上网搜索或者收看烹饪节目,但是朋友和家人不会一直在你身边,网络上的内容也是良莠不齐。以我的浅见,出版社、审稿人和作者都在这本书上花费了大量的时间和精力,如果你不能从中有所收获我会感到很诧异。
数据分析、数据科学、大数据——有什么了不起的你应该看过将数据科学用数学/统计学、计算机科学以及专业领域的知识进行描述的维恩图(Venn diagram)。数据分析是永恒的,它出现在数据科学之前,甚至是计算机科学之前。你可以用笔和纸或者更先进的便携计算器进行数据分析。
数据分析体现在很多方面,比如说以做出决策或提出新的假设和问题为目的进行数据分析。数据科学以及大数据的热潮、高待遇以及经济回报让我想起了当数据存储和商业智能还是时髦词的年代。商业智能和数据存储的终极目标是构建应用于管理的可视化图表。这涉及很多政治和组织方面的利益,但是从技术的角度来看,这主要还是和数据库相关。数据科学则不是以数据库为中心,而是很大程度上依赖于机器学习。由于数据的量在不断地变多,机器学习变得越来越不可或缺。数据大量增长的背后是人口的快速增长以及新技术的层出不穷,比如说社交媒体和移动设备的出现。事实上,数据增长可能是我们可以肯定的将一直持续的趋势。构建可视化图表和应用机器学习的区别就类似于搜索引擎的演进。
搜索引擎(如果可以这么称呼)初只是手动创建的组织良好的链接集合。而终,纯自动的方式取代了前者。当下,更多的数据将会被创建(而不是被销毁),我们可以预见自动化数据分析领域的增长。
Python数据分析的简要历程各个Python软件库的历史十分有趣,但我不是一个历史学家,所以下面的记录主要从我的视角来写:
1989年:Guido Van Rossum在荷兰的CWI实现了Python的个版本,当时是作为一个圣诞节的“兴趣”项目。
1995年:Jim Hugunin创建了Numeric——Numpy的前身。
1999年:Pearu Peterson写了f2py作为连接Fortran和Python的桥梁。
2000年:Python 2.0发布。
2001年:SciPy库发布,同期创建的还有与Numeric竞争的库Numarray。Fernando Perez发布了IPython,它初是以“午后黑客”(afternoon hack)的名义发布的。NLTK(自然语言工具包)发布且用于研究项目。
2002年:John Hunter创建了Matplotlib库。
2005年:Travis Oliphant发布了NumPy,NumPy初是受Numarray启发而对Numeric进行扩展的库。
2006年:NumPy 1.0发布,第1版SQLAlchemy发布。
2007年:David Cournapeau将scikit-learn作为Google Summer of Code的项目,Cy-thon在Pyrex的基础上开始开发,Cython后来集中用在了pandas和scikit-learn上以提升性能。
2008年:Wes McKinney开始开发pandas,Python 3.0发布。
2011年:IPython 0.12发行版本中引入了IPython Notebook,Packt出版社出版了《NumPy 1.5 Beginners Guide》。
2012年:Packt出版社出版了《NumPy Cookbook》。
2013年:Packt出版社出版了第2版的《NumPy Beginners Guide》。
2014年:Fernando Perez宣布了Jupyter项目,致力于开发与语言无关的Notebook,Packt出版社出版了《Learning NumPy Array》和《Python Data Analysis》。
2015年:Packt出版社出版了第3版的《NumPy Beginners Guide》以及第2版的《NumPy Cookbook》。
——匿名本书是《Python Data Analysis》的后续。那么在《Python Data Analysis》已经足够优秀(我愿意这么认为)的情况下,这本书有哪些新的内容吗?本书是针对那些有一定经验的Python程序员写的。一年时间过去了,因此,我们将使用在《Python Data Analysis》中没有用到的一些更新版本的软件和软件库。另外,经过深入反思和调研,我做出了以下的总结:
为了减轻自己的负担,同时提高代码的可重复使用率,我需要一个工具箱,我将这个工具箱命名为dautil并将它发布到了Pypi上(可以通过pip/easy_install安装)。
通过反省,我深信需要简化获取和安装所需要的软件的过程,因此我通过DockerHub发布了一个包含了我们需要用到的软件的Docker容器(pydacbk),在本书的第1章和线上章节中你将了解更多关于如何安装的细节。这个Docker容器还是不够理想,因为它的体积已经相当大,所以我需要做出一些艰难的决定。因为这个容器并不是本书的一部分,所以如果你有任何问题可以直接与我联系,但是请记住我不会对镜像做很大的修改。
本书会使用IPython Notebook,这个工具已经成为数据分析时的标准工具。在线上章节以及我写的其他书中,我已经给出了一些和IPython Notebook相关的建议。
除了极少数案例外,本书中我主要使用的是Python 3,因为2020年后官方将不再支持Python 2。
为什么需要这本书有人会说你并不需要书籍,你只需要去做一个感兴趣的项目,然后在做项目的同时就会搞明白那些东西。但是尽管接触到大量的资源,这个过程可能还是会令你感到沮丧。打个比方,如果想烹调一碗美味的汤,你可以去向朋友和家人寻求帮助,上网搜索或者收看烹饪节目,但是朋友和家人不会一直在你身边,网络上的内容也是良莠不齐。以我的浅见,出版社、审稿人和作者都在这本书上花费了大量的时间和精力,如果你不能从中有所收获我会感到很诧异。
数据分析、数据科学、大数据——有什么了不起的你应该看过将数据科学用数学/统计学、计算机科学以及专业领域的知识进行描述的维恩图(Venn diagram)。数据分析是永恒的,它出现在数据科学之前,甚至是计算机科学之前。你可以用笔和纸或者更先进的便携计算器进行数据分析。
数据分析体现在很多方面,比如说以做出决策或提出新的假设和问题为目的进行数据分析。数据科学以及大数据的热潮、高待遇以及经济回报让我想起了当数据存储和商业智能还是时髦词的年代。商业智能和数据存储的终极目标是构建应用于管理的可视化图表。这涉及很多政治和组织方面的利益,但是从技术的角度来看,这主要还是和数据库相关。数据科学则不是以数据库为中心,而是很大程度上依赖于机器学习。由于数据的量在不断地变多,机器学习变得越来越不可或缺。数据大量增长的背后是人口的快速增长以及新技术的层出不穷,比如说社交媒体和移动设备的出现。事实上,数据增长可能是我们可以肯定的将一直持续的趋势。构建可视化图表和应用机器学习的区别就类似于搜索引擎的演进。
搜索引擎(如果可以这么称呼)初只是手动创建的组织良好的链接集合。而终,纯自动的方式取代了前者。当下,更多的数据将会被创建(而不是被销毁),我们可以预见自动化数据分析领域的增长。
Python数据分析的简要历程各个Python软件库的历史十分有趣,但我不是一个历史学家,所以下面的记录主要从我的视角来写:
1989年:Guido Van Rossum在荷兰的CWI实现了Python的个版本,当时是作为一个圣诞节的“兴趣”项目。
1995年:Jim Hugunin创建了Numeric——Numpy的前身。
1999年:Pearu Peterson写了f2py作为连接Fortran和Python的桥梁。
2000年:Python 2.0发布。
2001年:SciPy库发布,同期创建的还有与Numeric竞争的库Numarray。Fernando Perez发布了IPython,它初是以“午后黑客”(afternoon hack)的名义发布的。NLTK(自然语言工具包)发布且用于研究项目。
2002年:John Hunter创建了Matplotlib库。
2005年:Travis Oliphant发布了NumPy,NumPy初是受Numarray启发而对Numeric进行扩展的库。
2006年:NumPy 1.0发布,第1版SQLAlchemy发布。
2007年:David Cournapeau将scikit-learn作为Google Summer of Code的项目,Cy-thon在Pyrex的基础上开始开发,Cython后来集中用在了pandas和scikit-learn上以提升性能。
2008年:Wes McKinney开始开发pandas,Python 3.0发布。
2011年:IPython 0.12发行版本中引入了IPython Notebook,Packt出版社出版了《NumPy 1.5 Beginners Guide》。
2012年:Packt出版社出版了《NumPy Cookbook》。
2013年:Packt出版社出版了第2版的《NumPy Beginners Guide》。
2014年:Fernando Perez宣布了Jupyter项目,致力于开发与语言无关的Notebook,Packt出版社出版了《Learning NumPy Array》和《Python Data Analysis》。
2015年:Packt出版社出版了第3版的《NumPy Beginners Guide》以及第2版的《NumPy Cookbook》。
评论
还没有评论。