通过数据分析,你能够发现数据中的模式及其变化趋势,并从中获取有价值的信息。Python是流行的数据分析工具之一。本书由浅入深地讲解使用Python进行数据分析的相关知识,以及如何使用Python中的各种库来创建有效的数据管道,以便更好地进行数据分析和预测。
本书共4个部分。第1部分讲解Python的基础数据知识和相关数学知识,包括Python和相关库、软件的安装与使用,以及统计学和线性代数知识。第2部分讲解探索性数据分析和数据清洗,包括数据可视化、数据检索、数据处理、数据存储、数据清洗、信号处理和时间序列分析。第3部分讲解如何使用机器学习算法进行数据分析,包括回归分析、分类技术、主成分分析和聚类算法。第4部分通过实际案例,讲解如何使用自然语言处理(NLP)和图像分析技术来分析文本和图像,以及如何使用Dask进行并行计算。
本书适合想要通过Python完成数据分析的读者阅读。
阿维纳什·纳夫拉尼(Avinash Navlani)在数据科学和人工智能方面拥有超过10年的工作经验。目前,他是一位高级数据科学家,使用高级分析技术部署大数据分析工具、创建和维护模型,并采用引人注目的新数据集来为客户改善产品和服务。在此之前,他曾是一名大学讲师,对数据科学领域的人员进行培训和教育,授课的内容包括用Python进行数据分析、数据挖掘、机器学习、数据库管理等。他一直参与数据科学领域的研究活动,并在印度的许多会议上担任主题发言人。 阿曼多·凡丹戈(Armando Fandango)利用其在深度学习、机器学习、分布式计算和计算方法方面的专业知识创造人工智能产品,曾在初创企业和大型企业担任首席数据科学家和总监。他曾为基于人工智能的高科技初创企业提供咨询服务。他撰写了《Python数据分析(第2版)》和《精通TensorFlow》等图书。他还在国际期刊和会议上发表过研究成果。 伊万·伊德里斯(Ivan Idris)拥有实验物理学硕士学位。他的毕业论文注重应用计算机科学。毕业后,他曾在多家公司工作,担任Java开发人员、数据仓库开发人员和QA分析师。他的兴趣包括商业智能、大数据和云计算。他喜欢编写简洁、可测试的代码和撰写有趣的技术文章。他是《Python数据分析基础教程:NumPy学习指南(第2版)》和《NumPy攻略:Python科学计算与数据分析》的作者。
第 1 部分 数据基础
第 1 章 Python 库入门 2
1.1 理解数据分析 3
1.2 数据分析的标准流程 4
1.3 KDD 流程 4
1.4 SEMMA 流程 5
1.5 CRISP-DM 6
1.6 数据分析与数据科学的比较 7
1.7 数据分析师和数据科学家应掌握的工具和技能 8
1.8 Python 3 的安装 9
1.8.1 在 Windows 操作系统中安装 Python 3 10
1.8.2 在 Linux 操作系统中安装Python 3 10
1.8.3 使用安装文件在 macOS中安装 Python 3 10
1.8.4 使用 brew 命令在 macOS中安装 Python 3 10
1.9 使用 Anaconda 11
1.10 使用 IPython 12
1.10.1 使用帮助功能 13
1.10.2 查找 Python 库的参考资料 14
1.11 使用 JupyterLab 14
1.12 使用 Jupyter Notebook 15
1.13 Jupyter Notebook 的高级功能 16
1.13.1 快捷命令 16
1.13.2 安装其他内核 16
1.13.3 执行 shell 命令 17
1.13.4 Jupyter Notebook 的扩展 17
1.14 总结 21
第 2 章 NumPy 和 pandas 22
2.1 技术要求 23
2.2 了解 NumPy 数组 23
2.2.1 数组特征 25
2.2.2 选择数组元素 26
2.3 NumPy 数组中数值的数据类型 27
2.3.1 dtype 对象 29
2.3.2 数据类型字符代码 30
2.3.3 dtype()构造函数 30
2.3.4 dtype 属性 31
2.4 NumPy 数组的操作 31
2.5 NumPy 数组的堆叠 33
2.6 拆分 NumPy 数组 36
2.7 改变 NumPy 数组的数据类型 37
2.8 创建 NumPy 视图和副本 38
2.9 NumPy 数组的切片 40
2.10 布尔索引和花式索引 41
2.11 广播数组 42
2.12 创建 DataFrame 对象 44
2.13 理解 Series 数据结构 45
2.14 读取和查询 Quandl数据包 48
2.15 DataFrame 对象的统计函数 51
2.16 DataFrame 对象的分组和连接 53
2.17 处理缺失值 56
2.18 创建数据透视表 57
2.19 处理日期 58
2.20 总结 60
第 3 章 统计学 61
3.1 技术要求 62
3.2 数据的属性及其类型 62
3.2.1 属性类型 62
3.2.2 离散和连续属性 63
3.3 测量集中趋势 63
3.3.1 平均值 63
3.3.2 众数 64
3.3.3 中位数 65
3.4 测量分散 65
3.5 偏度和峰度 67
3.6 使用协方差和相关系数理解关系 68
3.6.1 皮尔逊相关系数 68
3.6.2 斯皮尔曼等级相关系数 69
3.6.3 肯德尔等级相关系数 69
3.7 中心极限定理 69
3.8 收集样本 70
3.9 参数检验 71
3.10 非参数检验 76
3.11 总结 80
第 4 章 线性代数 81
4.1 技术要求 82
4.2 用 NumPy 库进行多项式拟合 82
4.3 行列式 83
4.4 求解矩阵的秩 83
4.5 使用 NumPy 库求逆矩阵 84
4.6 使用 NumPy 库求解线性方程 85
4.7 使用 SVD 分解矩阵 85
4.8 特征向量和特征值 86
4.9 生成随机数 87
4.10 二项分布 88
4.11 正态分布 89
4.12 用 SciPy 库测试数据的正态性 90
4.13 使用 numpy.ma 子程序包创建掩码数组 93
4.14 总结 94
第 2 部分 探索性数据分析和数据清洗
第 5 章 数据可视化 96
5.1 技术要求 96
5.2 使用 Matplotlib 库实现数据可视化 96
5.2.1 图的附件 98
5.2.2 散点图 99
5.2.3 折线图 100
5.2.4 饼图 101
5.2.5 柱状图 102
5.2.6 直方图 103
5.2.7 气泡图 104
5.2.8 使用 pandas 库绘图 106
5.3 使用 Seaborn 库实现高级的数据可视化 108
5.3.1 lm 图 108
5.3.2 柱状图 110
5.3.3 分布图 111
5.3.4 箱形图 112
5.3.5 KDE 图 112
5.3.6 小提琴图 113
5.3.7 计数图 114
5.3.8 联合图 115
5.3.9 热力图 116
5.3.10 配对图 117
5.4 使用 Bokeh 库实现交互式数据可视化 118
5.4.1 绘制简单的图 119
5.4.2 标志符 120
5.4.3 布局 121
5.4.4 多重图 124
5.4.5 交互 125
5.4.6 注释 128
5.4.7 悬停工具 129
5.4.8 小部件 131
5.5 总结 135
第 6 章 数据的检索、处理和存储 136
6.1 技术要求 137
6.2 用 NumPy 库读取和写入 CSV文件 137
6.3 用 pandas 库读取和写入 CSV文件 138
6.4 Excel 文件的数据读取和写入 139
6.5 JSON 文件的数据读取和写入 140
6.6 HDF5 文件的数据读取和写入 141
6.7 HTML 表的数据读取和写入 142
6.8 Parquet 文件的数据读取和写入 142
6.9 pickle 文件的数据读取和写入 143
6.10 用 SQLite3 库进行轻量级访问 144
6.11 MySQL 数据库的数据读取和写入 145
6.12 MongoDB 数据库的数据读取和写入 148
6.13 Cassandra 数据库的数据读取和写入 149
6.14 Redis 数据库的数据读取和写入 150
6.15 PonyORM 151
6.16 总结 152
第 7 章 清洗混乱的数据 153
7.1 技术要求 154
7.2 探索数据 154
7.3 过滤数据 156
7.3.1 列式过滤 157
7.3.2 行式过滤 158
7.4 处理缺失值 161
7.4.1 删除缺失值 161
7.4.2 填补缺失值 162
7.5 处理异常值 164
7.6 特征编码 165
7.6.1 独热编码 166
7.6.2 标签编码 167
7.6.3 顺序编码 168
7.7 特征缩放 169
7.8 特征转换 171
7.9 特征分割 173
7.10 总结 173
第 8 章 信号处理和时间序列分析 174
8.1 技术要求 175
8.2 Statsmodels 库 175
8.3 移动平均数 175
8.4 窗口函数 177
8.5 协整法 179
8.6 STL 分解 181
8.7 自相关 182
8.8 自回归模型 184
8.9 ARMA 模型 186
8.10 生成周期性信号 188
8.11 傅里叶分析 191
8.12 频谱分析滤波 192
8.13 总结 194
第 3 部分 深入研究机器学习
第 9 章 监督学习回归分析 196
9.1 技术要求 197
9.2 线性回归 197
9.3 多重共线性 198
9.4 虚拟变量 200
9.5 建立线性回归模型 201
9.6 评估回归模型的性能 203
9.6.1 决定系数 203
9.6.2 均方误差 203
9.6.3 平均绝对误差 204
9.6.4 均方根误差 204
9.7 拟合多项式回归 205
9.8 分类回归模型 207
9.9 逻辑回归 207
9.9.1 逻辑回归模型的特点 208
9.9.2 逻辑回归算法的类型 209
9.9.3 逻辑回归模型的优缺点 209
9.10 使用 Scikit-learn 库实现逻辑回归 209
9.11 总结 211
第 10 章 监督学习分类技术 212
10.1 技术要求 213
10.2 分类 213
10.3 朴素贝叶斯分类 214
10.4 决策树分类 217
10.5 k 近邻分类 219
10.6 支持向量机分类 221
10.7 拆分训练集和测试集 223
10.7.1 Holdout 法 223
10.7.2 k 折交叉验证法 224
10.7.3 Bootstrap 法 224
10.8 分类模型的性能评估指标 225
10.8.1 混淆矩阵 225
10.8.2 准确率 227
10.8.3 精确度 227
10.8.4 召回率 228
10.8.5 F1值 228
10.9 ROC 曲线和 AUC 229
10.10 总结 230
第 11 章 无监督学习PCA 和聚类 231
11.1 技术要求 232
11.2 无监督学习 232
11.3 降低数据的维度 232
11.4 聚类 236
11.5 使用 k 均值聚类法对数据进行分区 241
11.6 层次聚类 243
11.7 DBSCAN 方法 246
11.8 谱聚类 248
11.9 评估聚类性能 250
11.9.1 内部性能评估 251
11.9.2 外部性能评估 252
11.10 总结 255
第 4 部分 NLP、图像分析和并行计算
第 12 章 分析文本数据 258
12.1 技术要求 259
12.2 安装 NLTK 和 SpaCy 259
12.3 文本规范化 260
12.4 标记化 260
12.5 去除停用词 263
12.6 词干提取和词形还原 265
12.7 POS 标签 266
12.8 识别实体 268
12.9 依赖解析 269
12.10 创建词云 269
12.11 词包 271
12.12 TF-IDF 272
12.13 使用文本分类进行情感分析 272
12.13.1 使用 BoW 进行分类 273
12.13.2 使用 TF-IDF 进行分类 276
12.14 文本相似性 279
12.14.1 Jaccard 相似性 280
12.14.2 余弦相似性 280
12.15 总结 281
第 13 章 分析图像数据 282
13.1 技术要求 283
13.2 安装 OpenCV 283
13.3 了解图像数据 283
13.3.1 二进制图像 284
13.3.2 灰度图像 284
13.3.3 彩色图像 285
13.4 颜色模型 285
13.5 在图像上绘图 288
13.6 在图像上书写 292
13.7 调整图像的大小 293
13.8 翻转图像 295
13.9 改变亮度 297
13.10 模糊图像 298
13.11 人脸检测 301
13.12 总结 304
第 14 章 使用 Dask 进行并行计算 305
14.1 认识 Dask 306
14.2 Dask 数据类型 307
14.2.1 Dask 数组 307
14.2.2 Dask DataFrame 308
14.2.3 Dask Bag 313
14.3 Dask 延迟 315
14.4 规模化的数据预处理 317
14.4.1 Dask 中的特征缩放 317
14.4.2 Dask 中的特征编码 319
14.5 规模化的机器学习 321
14.5.1 使用 Scikit-learn 进行并行计算 321
14.5.2 为 Dask 重新实现机器学习算法 323
14.6 总结 326