内容介绍
作为一种高级程序设计语言,Python凭借其简洁、易读及可扩展性日渐成为程序设计领域备受推崇的语言。同时,Python语言的数据分析功能也逐渐为大众所认可。 本书是一本介绍如何用Python进行数据分析的学习指南。全书共12章,从Python程序库入门、NumPy数组、matplotlib和pandas开始,陆续介绍了数据加工、数据处理和数据可视化等内容。同时,本书还介绍了信号处理、数据库、文本分析、机器学习、互操作性和性能优化等高级主题。在本书的最后,还采用3个附录的形式为读者补充了一些重要概念、常用函数以及在线资源等重要内容。 本书示例丰富、简单易懂,非常适合对Python语言感兴趣或者想要使用Python语言进行数据分析的读者参考阅读。
作者介绍
Ivan Idris,实验物理学硕士,学位论文侧重于应用计算机科学。毕业后,他曾经效力于多家公司,从事Java开发、数据仓库开发以及QA分析等方面的工作;目前,他的兴趣主要集中在商业智能、大数据和云计算等专业领域。 Ivan Idris以编写简洁可测试的程序代码以及撰写有趣的技术文章为乐,同时也是Packt出版社NumPy Beginner's Guide-Second Edition、NumPy Cookbook和Learning NumPy Array等书籍的作者。读者可以访问ivanidris.net获取更多关于他的信息。
目录
- 第1章 Python程序库入门 1
- 1.1 本书用到的软件 2
- 1.1.1 软件的安装和设置 2
- 1.1.2 Windows平台 2
- 1.1.3 Linux平台 3
- 1.1.4 Mac OS X平台 4
- 1.2 从源代码安装NumPy、SciPy、matplotlib和IPython 6
- 1.3 用setuptools安装 7
- 1.4 NumPy数组 7
- 1.5 一个简单的应用 8
- 1.6 将IPython用作shell 11
- 1.7 学习手册页 13
- 1.8 IPython notebook 14
- 1.9 从何处寻求帮助和参考资料 14
- 1.10 小结 15
- 第2章 NumPy数组 16
- 2.1 NumPy数组对象 16
- 2.2 创建多维数组 18
- 2.3 选择NumPy数组元素 18
- 2.4 NumPy的数值类型 19
- 2.4.1 数据类型对象 21
- 2.4.2 字符码 21
- 2.4.3 Dtype构造函数 22
- 2.4.4 dtype属性 23
- 2.5 一维数组的切片与索引 23
- 2.6 处理数组形状 24
- 2.6.1 堆叠数组 27
- 2.6.2 拆分NumPy数组 30
- 2.6.3 NumPy数组的属性 33
- 2.6.4 数组的转换 39
- 2.7 创建数组的视图和拷贝 40
- 2.8 花式索引 41
- 2.9 基于位置列表的索引方法 43
- 2.10 用布尔型变量索引NumPy数组 44
- 2.11 NumPy数组的广播 46
- 2.12 小结 49
- 第3章 统计学与线性代数 50
- 3.1 Numpy和Scipy模块 50
- 3.2 用NumPy进行简单的描述性统计计算 55
- 3.3 用NumPy进行线性代数运算 57
- 3.3.1 用NumPy求矩阵的逆 57
- 3.3.2 用NumPy解线性方程组 59
- 3.4 用NumPy计算特征值和特征向量 61
- 3.5 NumPy随机数 63
- 3.5.1 用二项式分布进行博弈 63
- 3.5.2 正态分布采样 66
- 3.5.3 用SciPy进行正态检验 67
- 3.6 创建掩码式NumPy数组 70
- 3.7 小结 75
- 第4章 pandas入门 76
- 4.1 pandas的安装与概览 77
- 4.2 pandas数据结构之DataFrame 78
- 4.3 pandas数据结构之Series 81
- 4.4 利用pandas查询数据 85
- 4.5 利用pandas的DataFrame进行统计计算 89
- 4.6 利用pandas的DataFrame实现数据聚合 91
- 4.7 DataFrame的串联与附加操作 95
- 4.8 连接DataFrames 96
- 4.9 处理缺失数据问题 99
- 4.10 处理日期数据 102
- 4.11 数据透视表 106
- 4.12 访问远程数据 107
- 4.13 小结 109
- 第5章 数据的检索、加工与存储 110
- 5.1 利用NumPy和pandas对CSV文件进行写操作 110
- 5.2 NumPy.npy与pandas DataFrame 112
- 5.3 使用PyTables存储数据 115
- 5.4 Pandas DataFrame与HDF5仓库之间的读写操作 118
- 5.5 使用pandas读写Excel文件 120
- 5.6 使用REST Web服务和JSON 123
- 5.7 使用pandas读写JSON 124
- 5.8 解析RSS和Atom订阅 126
- 5.9 使用Beautiful Soup解析HTML 127
- 5.10 小结 134
- 第6章 数据可视化 136
- 6.1 matplotlib的子库 137
- 6.2 matplotlib绘图入门 137
- 6.3 对数图 139
- 6.4 散点图 141
- 6.5 图例和注解 143
- 6.6 三维图 145
- 6.7 pandas绘图 148
- 6.8 时滞图 150
- 6.9 自相关图 151
- 6.10 Plot.ly 153
- 6.11 小结 155
- 第7章 信号处理与时间序列 156
- 7.1 statsmodels子库 157
- 7.2 移动平均值 157
- 7.3 窗口函数 159
- 7.4 协整的定义 161
- 7.5 自相关 164
- 7.6 自回归模型 166
- 7.7 ARMA模型 170
- 7.8 生成周期信号 172
- 7.9 傅里叶分析 174
- 7.10 谱分析 177
- 7.11 滤波 177
- 7.12 小结 179
- 第8章 应用数据库 180
- 8.1 基于sqlite3的轻量级访问 181
- 8.2 通过pandas访问数据库 183
- 8.3 SQLAlchemy 185
- 8.3.1 SQLAlchemy的安装和配置 186
- 8.3.2 通过SQLAlchemy填充数据库 188
- 8.3.3 通过SQLAlchemy查询数据库 189
- 8.4 Pony ORM 191
- 8.5 Dataset:懒人数据库 192
- 8.6 PyMongo与MongoDB 195
- 8.7 利用Redis存储数据 196
- 8.8 Apache Cassandra 197
- 8.9 小结 201
- 第9章 分析文本数据和社交媒体 203
- 9.1 安装NLTK 203
- 9.2 滤除停用字、姓名和数字 206
- 9.3 词袋模型 208
- 9.4 词频分析 209
- 9.5 朴素贝叶斯分类 211
- 9.6 情感分析 214
- 9.7 创建词云 217
- 9.8 社交网络分析 222
- 9.9 小结 224
- 第10章 预测性分析与机器学习 225
- 10.1 scikit-learn概貌 226
- 10.2 预处理 228
- 10.3 基于逻辑回归的分类 230
- 10.4 基于支持向量机的分类 232
- 10.5 基于ElasticNetCV的回归分析 235
- 10.6 支持向量回归 237
- 10.7 基于相似性传播算法的聚类分析 240
- 10.8 均值漂移算法 242
- 10.9 遗传算法 244
- 10.10 神经网络 249
- 10.11 决策树 251
- 10.12 小结 253
- 第11章 Python生态系统的外部环境和云计算 255
- 11.1 与MATLAB/Octave交换信息 256
- 11.2 Installing rpy2安装rpy2 257
- 11.3 连接R 257
- 11.4 为Java传递NumPy数组 260
- 11.5 集成SWIG和NumPy 261
- 11.6 集成Boost和Python 264
- 11.7 通过f2py使用Fortran代码 266
- 11.8 配置谷歌应用引擎 267
- 11.9 在PythonAnywhere上运行程序 269
- 11.10 使用Wakari 270
- 11.11 小结 271
- 第12章 性能优化、性能分析与并发性 272
- 12.1 代码的性能分析 272
- 12.2 安装Cython 277
- 12.3 调用C代码 281
- 12.4 利用multiprocessing创建进程池 283
- 12.5 通过Joblib提高for循环的并发性 286
- 12.6 比较Bottleneck函数与NumPy函数 287
- 12.7 通过Jug实现MapReduce 289
- 12.8 安装MPI for Python 292
- 12.9 IPython Parallel 292
- 12.10 小结 296
- 附录A 重要概念 298
- 附录B 常用函数 303
- 附录C 在线资源 309