Python作为一种程序设计语言,凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。同时,Python语言的数据分析功能也逐渐为大众所认可。
本书就是一本介绍如何用Python进行数据分析的学习指南。全书共12章,从Python程序库入门、NumPy数组和Pandas入门开始,陆续介绍了数据的检索、数据加工与存储、数据可视化等内容。同时,本书还介绍了信号处理与时间序列、应用数据库、分析文本数据与社交媒体、预测性分析与机器学习、Python生态系统的外部环境和云计算、性能优化及分析、并发性等内容。在本书的最后,还采用3个附录的形式为读者补充了一些重要概念、常用函数以及在线资源等重要内容。
本书延续了上一版示例丰富、简单易懂的优点,非常适合对Python语言感兴趣或者想要使用Python语言进行数据分析的读者参考阅读。
Python拥有许多强大的程序库,已经成为进行各种数据分析和预测建模任务的流行平台。Python的应用范围很广,拓展性很大。本书介绍了众多的Python模块,例如Matplotlib、statsmodels、scikit-learn和NLTK。同时,本书还介绍了Python如何与外部环境(例如R、Fortran、C/C++和Boost库)进行交互。
通过阅读本书,你将学会如何使用Python处理和操作数据,并完成复杂的分析和建模。我们将借助NumPy和Pandas来学习数据的各种操作。本书将介绍如何从各种数据源(例如SQL、NoSQL、CSV文件和HDF5)中存储和检索数据。此外,我们还将学习如何通过可视化库实现数据的可视化,以及信号处理、时间序列、文本数据分析、机器学习和社交媒体分析等主题。
Armando Fandango是Epic工程咨询集团知名数据科学家,负责与国防和政府机构有关的保密项目。Armando是一位技术精湛的技术人员,拥有全球创业公司和大型公司的工作经历和管理经验。他的工作涉及金融科技、证券交易所、银行、生物信息学、基因组学、广告技术、基础设施、交通运输、能源、人力资源和娱乐等多个领域。
Armando在预测分析、数据科学、机器学习、大数据、产品工程、高性能计算和云基础设施等项目中工作了十多年。他的研究兴趣横跨机器学习、深度学习和科学计算等领域。
第 1章 Python程序库入门 1
1.1 安装Python 3 3
1.1.1 安装数据分析程序库 3
1.1.2 Linux平台或Mac OS X平台 3
1.1.3 Windows平台 4
1.2 将IPython用作shell 4
1.3 学习手册页 6
1.4 Jupyter Notebook 7
1.5 NumPy数组 8
1.6 一个简单的应用 8
1.7 从何处寻求帮助和参考资料 11
1.8 查看Python库中包含的模块 12
1.9 通过Matplotlib实现数据的可视化 12
1.10 小结 14
第 2章 NumPy数组 15
2.1 NumPy数组对象 16
2.2 创建多维数组 17
2.3 选择NumPy数组元素 17
2.4 NumPy的数值类型 18
2.4.1 数据类型对象 20
2.4.2 字符码 20
2.4.3 dtype构造函数 21
2.4.4 dtype属性 22
2.5 一维数组的切片与索引 23
2.6 处理数组形状 23
2.6.1 堆叠数组 25
2.6.2 拆分NumPy数组 28
2.6.3 NumPy数组的属性 30
2.6.4 数组的转换 34
2.7 创建数组的视图和拷贝 35
2.8 花式索引 36
2.9 基于位置列表的索引方法 38
2.10 用布尔型变量索引NumPy数组 39
2.11 NumPy数组的广播 41
2.12 小结 44
2.13 参考资料 44
第3章 Pandas入门 45
3.1 Pandas的安装与概览 46
3.2 Pandas数据结构之DataFrame 47
3.3 Pandas数据结构之Series 49
3.4 利用Pandas查询数据 52
3.5 利用Pandas的DataFrame进行统计计算 56
3.6 利用Pandas的DataFrame实现
数据聚合 58
3.7 DataFrame的串联与附加
操作 62
3.8 连接DataFrames 63
3.9 处理缺失数据问题 65
3.10 处理日期数据 67
3.11 数据透视表 70
3.12 小结 71
3.13 参考资料 71
第4章 统计学与线性代数 72
4.1 用NumPy进行简单的描述性统计计算 72
4.2 用NumPy进行线性代数运算 75
4.2.1 用NumPy求矩阵的逆 75
4.2.2 用NumPy解线性方程组 77
4.3 用NumPy计算特征值和特征向量 78
4.4 NumPy随机数 80
4.4.1 用二项式分布进行博弈 81
4.4.2 正态分布采样 83
4.4.3 用SciPy进行正态检验 84
4.5 创建掩码式NumPy数组 86
4.6 忽略负值和极值 88
4.7 小结 91
第5章 数据的检索、加工与存储 92
5.1 利用NumPy和pandas对CSV文件进行写操作 92
5.2 二进制.npy与pickle格式 94
5.3 使用PyTables存储数据 97
5.4 Pandas DataFrame与HDF5仓库之间的读写操作 99
5.5 使用Pandas读写Excel文件 102
5.6 使用REST Web服务和JSON 103
5.7 使用Pandas读写JSON 105
5.8 解析RSS和Atom订阅 106
5.9 使用Beautiful Soup解析HTML 108
5.10 小结 114
5.11 参考资料 114
第6章 数据可视化 115
6.1 Matplotlib的子库 116
6.2 Matplotlib绘图入门 116
6.3 对数图 118
6.4 散点图 119
6.5 图例和注解 121
6.6 三维图 123
6.7 Pandas绘图 125
6.8 时滞图 127
6.9 自相关图 129
6.10 Plot.ly 130
6.11 小结 132
第7章 信号处理与时间序列 133
7.1 statsmodels模块 134
7.2 移动平均值 134
7.3 窗口函数 136
7.4 协整的定义 138
7.5 自相关 140
7.6 自回归模型 142
7.7 ARMA模型 145
7.8 生成周期信号 147
7.9 傅里叶分析 149
7.10 谱分析 152
7.11 滤波 153
7.12 小结 155
第8章 应用数据库 156
8.1 基于sqlite3的轻量级访问 157
8.2 通过Pandas访问数据库 159
8.3 SQLAlchemy 161
8.3.1 SQLAlchemy的安装和配置 161
8.3.2 通过SQLAlchemy填充数据库 162
8.3.3 通过SQLAlchemy查询数据库 164
8.4 Pony ORM 166
8.5 Dataset:懒人数据库 167
8.6 PyMongo与MongoDB 168
8.7 利用Redis存储数据 170
8.8 利用memcache存储数据 171
8.9 Apache Cassandra 172
8.10 小结 174
第9章 分析文本数据和社交媒体 176
9.1 安装NLTK 177
9.2 NLTK简介 177
9.3 滤除停用字、姓名和数字 178
9.4 词袋模型 180
9.5 词频分析 181
9.6 朴素贝叶斯分类 183
9.7 情感分析 186
9.8 创建词云 189
9.9 社交网络分析 193
9.10 小结 195
第 10章 预测性分析与机器学习 197
10.1 预处理 198
10.2 基于逻辑回归的分类 201
10.3 基于支持向量机的分类 202
10.4 基于ElasticNetCV的回归分析 205
10.5 支持向量回归 207
10.6 基于相似性传播算法的聚类
分析 210
10.7 均值漂移算法 211
10.8 遗传算法 213
10.9 神经网络 217
10.10 决策树 219
10.11 小结 222
第 11章 Python生态系统的外部环境和云计算 223
11.1 与MATLAB/Octave交换
信息 224
11.2 安装rpy2 225
11.3 连接R 225
11.4 为Java传递NumPy数组 228
11.5 集成SWIG和NumPy 229
11.6 集成Boost和Python 233
11.7 通过f2py使用Fortran代码 235
11.8 PythonAnywhere云 236
11.9 小结 238
第 12章 性能优化、性能分析与并发性 239
12.1 代码的性能分析 240
12.2 安装Cython 245
12.3 调用C代码 248
12.4 利用multiprocessing创建进程池 252
12.5 通过Joblib提高for循环的并发性 254
12.6 比较Bottleneck函数与NumPy函数 255
12.7 通过Jug实现MapReduce 257
12.8 安装MPI for Python 259
12.9 IPython Parallel 260
12.10 小结 263
附录A 重要概念 264
附录B 常用函数 269