Python简单易学,拥有丰富的库,并且具有极强的包容性。本书展示了如何利用Python语言的强大功能,以*小的编程代价对数据进行提取、处理和分析。这一版除了介绍数据分析和Python基础知识、NumPy库和pandas库,使用pandas读写和处理数据,用matplotlib库实现数据可视化,用scikit-learn库进行机器学习,D3库嵌入和识别手写体数字,还新增了用TensorFlow进行深度学习,用NLTK分析文本数据,用OpenCV分析图像及实现计算机视觉等内容。
Python提供了数据处理平台,拥有丰富的库,其算法的实现更具创新性,还能跟很多语言对接。这些特点使得Python在信息处理、管理和检索方面尤为出众。此外,Python还能用作脚本、操作数据库以及开发Web应用,这大大扩展了数据分析的应用场景。本书深入探究大量真实的Python数据分析案例,详细阐述如何利用Python及其衍生工具处理和分析数据,将理论与实践相结合,带领读者开启数据分析之旅。 阅读完本书,你将学到: -数据分析和Python基础知识 -NumPy库和pandas库简介 -使用pandas读写和处理数据 -用matplotlib库实现数据可视化 -用scikit-learn库进行机器学习 -用TensorFlow库进行深度学习 -用Jupyter Notebook分析气象数据 -Jupyter Notebook内嵌D3库 -用scikit-learn和TensorFlow识别手写体数字 -用NLTK分析文本数据 -用OpenCV分析图像及实现计算机视觉
法比奥·内利(Fabio Nelli),IRBM科学园IT科学应用专家,曾为IBM、EDS等企业提供咨询。目前从事Java应用开发,对接科学仪器和Oracle数据库,生成数据和Web服务器应用,为研究人员提供实时分析结果。他还是Meccanismo Complesso社区(www.meccanismocomplesso.org)的项目协调人。
版权声明
献词
译者序
第 1章 数据分析简介 1
1.1 数据分析 1
1.2 数据分析师的知识范畴 2
1.2.1 计算机科学 2
1.2.2 数学和统计学 3
1.2.3 机器学习和人工智能 3
1.2.4 数据来源领域 3
1.3 理解数据的性质 4
1.3.1 数据到信息的转变 4
1.3.2 信息到知识的转变 4
1.3.3 数据的类型 4
1.4 数据分析过程 4
1.4.1 问题定义 5
1.4.2 数据抽取 6
1.4.3 数据准备 6
1.4.4 数据探索和可视化 7
1.4.5 预测建模 7
1.4.6 模型验证 8
1.4.7 部署 8
1.5 定量和定性数据分析 9
1.6 开放数据 9
1.7 Python和数据分析 10
1.8 结论 11
第 2章 Python世界简介 12
2.1 Python编程语言 12
2.2 Python 2和Python 3 14
2.2.1 安装Python 15
2.2.2 Python发行版 15
2.2.3 使用Python 17
2.2.4 编写Python代码 18
2.2.5 IPython 22
2.3 PyPI仓库Python包索引 25
2.4 SciPy 29
2.4.1 NumPy 29
2.4.2 pandas 29
2.4.3 matplotlib 30
2.5 小结 30
第3章 NumPy库 31
3.1 NumPy简史 31
3.2 NumPy安装 31
3.3 ndarray:NumPy库的心脏 32
3.3.1 创建数组 33
3.3.2 数据类型 34
3.3.3 dtype选项 34
3.3.4 自带的数组创建方法 35
3.4 基本操作 36
3.4.1 算术运算符 36
3.4.2 矩阵积 37
3.4.3 自增和自减运算符 38
3.4.4 通用函数 39
3.4.5 聚合函数 39
3.5 索引机制、切片和迭代方法 40
3.5.1 索引机制 40
3.5.2 切片操作 41
3.5.3 数组迭代 42
3.6 条件和布尔数组 44
3.7 形状变换 44
3.8 数组操作 45
3.8.1 连接数组 45
3.8.2 数组切分 46
3.9 常用概念 48
3.9.1 对象的副本或视图 48
3.9.2 向量化 48
3.9.3 广播机制 49
3.10 结构化数组 51
3.11 数组数据文件的读写 52
3.11.1 二进制文件的读写 53
3.11.2 读取文件中的列表形式数据 53
3.12 小结 54
第4章pandas库简介 55
4.1 pandas:Python数据分析库 55
4.2 安装pandas 56
4.2.1 用Anaconda安装 56
4.2.2 用PyPI安装 56
4.2.3 在Linux系统的安装方法 57
4.2.4 用源代码安装 57
4.2.5 Windows模块仓库 57
4.3 测试pandas是否安装成功 57
4.4 开始pandas之旅 58
4.5 pandas数据结构简介 58
4.5.1 Series对象 59
4.5.2 DataFrame对象 65
4.5.3 Index对象 71
4.6 索引对象的其他功能 72
4.6.1 更换索引 72
4.6.2 删除 74
4.6.3 算术和数据对齐 75
4.7 数据结构之间的运算 76
4.7.1 灵活的算术运算方法 76
4.7.2 DataFrame和Series对象之间的运算 77
4.8 函数应用和映射 78
4.8.1 操作元素的函数 78
4.8.2 按行或列执行操作的函数 78
4.8.3 统计函数 79
4.9 排序和排位次 80
4.10 相关性和协方差 82
4.11 NaN数据 84
4.11.1 为元素赋NaN值 84
4.11.2 过滤NaN 84
4.11.3 为NaN元素填充其他值 85
4.12 等级索引和分级 85
4.12.1 重新调整顺序和为层级排序 87
4.12.2 按层级统计数据 88
4.13 小结 88
第5章 pandas:数据读写 89
5.1 I/O API工具 89
5.2 CSV和文本文件 90
5.3 读取CSV或文本文件中的数据 90
5.3.1 用RegExp解析TXT文件 92
5.3.2 从TXT文件读取部分数据 94
5.3.3 将数据写入CSV文件 94
5.4 读写HTML文件 96
5.4.1 写入数据到HTML文件 96
5.4.2 从HTML文件读取数据 98
5.5 从XML读取数据 99
5.6 读写Microsoft Excel文件 101
5.7 JSON数据 102
5.8 HDF5格式 105
5.9 picklePython对象序列化 106
5.9.1 用cPickle实现Python对象序列化 106
5.9.2 用pandas实现对象序列化 107
5.10 对接数据库 108
5.10.1 SQLite3数据读写 108
5.10.2 PostgreSQL数据读写 110
5.11 NoSQL数据库MongoDB数据读写 112
5.12 小结 113
第6章 深入pandas:数据处理 114
6.1 数据准备 114
合并 115
6.2 拼接 118
6.2.1 组合 121
6.2.2 轴向旋转 122
6.2.3 删除 124
6.3 数据转换 124
6.3.1 删除重复元素 125
6.3.2 映射 125
6.4 离散化和面元划分 129
6.5 排序 133
6.6 字符串处理 134
6.6.1 内置的字符串处理方法 134
6.6.2 正则表达式 135
6.7 数据聚合 137
6.7.1 GroupBy 137
6.7.2 实例 138
6.7.3 等级分组 139
6.8 组迭代 140
6.8.1 链式转换 140
6.8.2 分组函数 141
6.9 高级数据聚合 142
6.10 小结 145
第7章 用matplotlib实现数据可视化 146
7.1 matplotlib库 146
7.2 安装 147
7.3 IPython和Jupyter QtConsole 147
7.4 matplotlib架构 148
7.4.1 Backend层 149
7.4.2 Artist层 149
7.4.3 Scripting层(pyplot) 150
7.4.4 pylab和pyplot 150
7.5 pyplot 151
7.6 绘图窗口 152
7.6.1 设置图形的属性 153
7.6.2 matplotlib和NumPy 155
7.7 使用kwargs 157
7.8 为图表添加更多元素 159
7.8.1 添加文本 159
7.8.2 添加网格 162
7.8.3 添加图例 163
7.9 保存图表 165
7.9.1 保存代码 165
7.9.2 将会话转换为HTML文件 167
7.9.3 将图表直接保存为图片 168
7.10 处理日期值 168
7.11 图表类型 170
7.12 线性图 170
7.13 直方图 177
7.14 条状图 178
7.14.1 水平条状图 180
7.14.2 多序列条状图 181
7.14.3 为pandas DataFrame生成多序列条状图 182
7.14.4 多序列堆积条状图 183
7.14.5 为pandas DataFrame绘制堆积条状图 186
7.14.6 其他条状图 187
7.15 饼图 187
7.16 高级图表 190
7.16.1 等值线图 190
7.16.2 极区图 192
7.17 mplot3d工具集 194
7.17.1 3D曲面 194
7.17.2 3D散点图 195
7.17.3 3D条状图 196
7.18 多面板图形 197
7.18.1 在其他子图中显示子图 197
7.18.2 子图网格 199
7.19 小结 200
第8章 用scikit-learn库实现机器学习 201
8.1 scikit-learn库 201
8.2 机器学习 201
8.2.1 有监督和无监督学习 201
8.2.2 训练集和测试集 202
8.3 用 scikit-learn实现有监督学习 202
8.4 Iris数据集 202
8.5 K-近邻分类器 207
8.6 Diabetes数据集 210
8.7 线性回归:最小平方回归 211
8.8 支持向量机 214
8.8.1 支持向量分类 215
8.8.2 非线性 SVC 218
8.8.3 绘制SVM分类器对Iris数据集的分类效果图 220
8.8.4 支持向量回归 222
8.9 小结 224
第9章 用TensorFlow库实现深度学习 225
9.1 人工智能、机器学习和深度学习 225
9.1.1 人工智能 225
9.1.2 机器学习是人工智能的分支 226
9.1.3 深度学习是机器学习的分支 226
9.1.4 人工智能、机器学习和深度学习的关系 226
9.2 深度学习 227
9.2.1 神经网络和GPU 227
9.2.2 数据可用:开源数据资源、物联网和大数据 228
9.2.3 Python 228
9.2.4 Python深度学习框架 228
9.3 人工神经网络 229
9.3.1 人工神经网络的结构 229
9.3.2 单层感知器 230
9.3.3 多层感知器 232
9.3.4 人工神经网络和生物神经网络的一致性 232
9.4 TensorFlow 233
9.4.1 TensorFlow:Google开发的框架 233
9.4.2 TensorFlow:数据流图 233
9.5 开始TensorFlow 编程 234
9.5.1 安装TensorFlow 234
9.5.2 Jupyter QtConsole编程 234
9.5.3 TensorFlow的模型和会话 234
9.5.4 张量 236
9.5.5 张量运算 238
9.6 用 TensorFlow实现SLP 239
9.6.1 开始之前 239
9.6.2 待分析的数据 239
9.6.3 SLP模型定义 241
9.6.4 学习阶段 243
9.6.5 测试阶段和正确率估计 246
9.7 用TensorFlow实现MLP(含一个隐含层) 248
9.7.1 MLP模型的定义 249
9.7.2 学习阶段 250
9.7.3 测试阶段和正确率计算 253
9.8 用TensorFlow实现多层感知器(含两个隐含层) 255
9.8.1 测试阶段和正确率计算 259
9.8.2 实验数据评估 260
9.9 小结 262
第 10章 数据分析实例气象数据 263
10.1 待检验的假设:靠海对气候的影响 263
10.2 数据源 265
10.3 用Jupyter Notebook分析数据 266
10.4 分析预处理过的气象数据 269
10.5 风向频率玫瑰图 279
10.5 小结 283
第 11章 Jupyter Notebook 内嵌
JavaScript库D3 284
11.1 开放的人口数据源 284
11.2 JavaScript库D3 286
11.3 绘制簇状条状图 290
11.4 地区分布图 293
11.5 2014年美国人口地区分布图 296
11.6 小结 300
第 12章 识别手写体数字 301
12.1 手写体识别 301
12.2 用scikit-learn识别手写体数字 301
12.3 Digits数据集 302
12.4 使用估计器学习并预测 304
12.5 用TensorFlow识别手写体数字 306
12.6 使用神经网络学习并预测 307
12.7 小结 310
第 13章 用NLTK分析文本数据 311
13.1 文本分析技术 311
13.1.1 自然语言处理工具集 311
13.1.2 导入NLTK库和NLTK下载器 312
13.1.3 在NLTK语料库检索单词 314
13.1.4 分析词频 315
13.1.5 从文本选择单词 317
13.1.6 二元组和搭配 318
13.2 网络文本数据的应用 319
13.2.1 从HTML文档抽取文本 320
13.2.2 情感分析 320
13.3 小结 322
第 14章 用OpenCV库实现图像分析和视觉计算 323
14.1 图像分析和计算视觉 323
14.2 OpenCV和Python 324
14.3 OpenCV和深度学习 324
14.4 安装OpenCV 324
14.5 图像处理和分析的第 1类方法 324
14.5.1 开始之前 324
14.5.2 加载和显示图像 325
14.5.3 图像处理 326
14.5.4 保存新图 327
14.5.5 图像的基本操作 327
14.5.6 图像混合 330
14.6 图像分析 331
14.7 边缘检测和图像梯度分析 332
14.7.1 边缘检测 332
14.7.2 图像梯度理论 332
14.7.3 用梯度分析检测图像边缘示例 333
14.8 深度学习示例:面部识别 337
14.9 小结 339
附录A 用LaTeX编写数学表达式 340
附录B 开放数据源 350