9787121313363 Python金融衍生品大数据分析:建模、模拟、校准与对冲 99.00
9787121333590 Python 3爬虫、数据清洗与可视化实战 49.00
Python金融衍生品大数据分析:建模、模拟、校准与对冲
目 录
第 1 章 快速导览 1
1.1 基于市场的估价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 本书的结构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.3 为什么选择 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4 深入阅读 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
第 1 部分 市场 6
第 2 章 什么是基于市场的定价 6
2.1 期权及其价值 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.2 普通金融工具与奇异金融工具 . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.3 影响股权衍生工具的风险 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.1 市场风险 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.3.2 其他风险 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.4 对冲 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5 基于市场的定价过程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
第 3 章 市场典型事实 15
3.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 波动率、相关性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 基本案例:正态收益率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.4 指数和股票 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.1 典型事实 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.4.2 DAX 指数收益率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.5 期权市场 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.1 买卖价差 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5.2 隐含波动率曲面 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.6 短期利率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.7 结论 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.8 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.8.1 GBM 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.8.2 DAX 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.8.3 BSM 隐含波动率 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.8.4 EURO STOXX 50 隐含波动率 . . . . . . . . . . . . . . . . . . . . . 38
3.8.5 EURIBOR 分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
第 2 部分 理论定价 42
第 4 章 风险中性定价 42
4.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2 离散时间不确定性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 离散市场模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.1 基本元素 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.3.2 基础定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4.4 离散时间模型的主要结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.5 连续时间模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
4.6 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.7 证明 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7.1 引理 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7.2 命题 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.7.3 定理 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
第 5 章 完全市场模型 62
5.1 简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2 Black-Scholes-Merton 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.1 市场模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.2.2 基本 PDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.2.3 欧式期权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
5.3 BSM 模型的 Greeks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4 Cox-Ross-Rubinstein 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.5 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6 证明及 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6.1 伊藤引理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6.2 BSM 期权定价的脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . 74
5.6.3 BSM 看涨期权 Greeks 脚本 . . . . . . . . . . . . . . . . . . . . . . . 78
5.6.4 CRR 期权定价脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
第 6 章 基于傅里叶的期权定价 84
6.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.2 定价问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.3 傅里叶变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.4 基于傅里叶的期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.4.1 Lewis(2001) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
6.4.2 Carr-Madan(1999) . . . . . . . . . . . . . . . . . . . . . . . . . . 89
6.5 数值计算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.5.1 傅里叶级数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
6.5.2 快速傅里叶变换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.6 应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
6.6.1 Black-Scholes-Merton(1973)模型 . . . . . . . . . . . . . . . . . . . 94
6.6.2 Merton(1976)模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.6.3 离散市场模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
6.7 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.8 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
6.8.1 使用傅里叶方法的 BSM 看涨期权定价 . . . . . . . . . . . . . . . . . 101
6.8.2 傅里叶级数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.8.3 单位根 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.8.4 卷积 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.8.5 参数模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
6.8.6 卷积计算看涨期权价值 . . . . . . . . . . . . . . . . . . . . . . . . . . 110
6.8.7 卷积期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.8.8 DFT 期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.8.9 DFT 速度检验 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
第 7 章 利用模拟的美式期权定价 114
7.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.2 金融模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
7.3 美式期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.3.1 问题形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
7.3.2 定价算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
7.4 数值结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.4.1 美式看跌期权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
7.4.2 美式空头秃鹰式价差 . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.5 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
7.6 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.6.1 二项定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
7.6.2 LSM 蒙特卡罗定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
7.6.3 原始算法和对偶算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
第 3 部分 基于市场的定价 132
第 8 章 基于市场定价的第一个例子 132
8.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.2 市场模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
8.3 定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.4 校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
8.5 模拟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
8.6 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.7 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.7.1 数值积分定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
8.7.2 FFT 定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
8.7.3 根据三种到期日的期权报价校准模型 . . . . . . . . . . . . . . . . . . 145
8.7.4 根据到期时间较短的期权报价校准模型 . . . . . . . . . . . . . . . . . 147
8.7.5 MCS 定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
第 9 章 一般市场模型 154
9.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
9.2 框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
9.3 框架的特征 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
9.4 零息债券定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
9.5 欧式期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.5.1 PDE 方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
9.5.2 变换方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
9.5.3 蒙特卡罗模拟 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
9.6 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9.7 证明和 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9.7.1 伊藤引理 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
9.7.2 债券定价的 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . 163
9.7.3 欧式看涨期权定价的 Python 脚本 . . . . . . . . . . . . . . . . . . . 164
第 10 章 蒙特卡罗模拟 171
10.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.2 零息债券定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
10.3 欧式期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
10.4 美式期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
10.4.1 数值结果 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
10.4.2 高准确性与低速度 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
10.5 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
10.6 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
10.6.1 一般零息债券定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
10.6.2 CIR85 模拟和定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
10.6.3 通过蒙特卡罗模拟对欧式期权自动定价 . . . . . . . . . . . . . . . . . 193
10.6.4 通过蒙特卡罗模拟对美式看跌期权自动定价 . . . . . . . . . . . . . . 194
第 11 章 模型校准 202
11.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11.2 一般考量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11.2.1 为什么校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
11.2.2 模型的不同部分分别是什么角色 . . . . . . . . . . . . . . . . . . . . 204
11.2.3 什么是目标函数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
11.2.4 什么是市场数据 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
11.2.5 什么是最优化算法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.3 短期利率部分的校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.3.1 理论基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
11.3.2 根据 Euribor 校准模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 209
11.4 股权部分的校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
11.4.1 傅里叶变换方法定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . 212
11.4.2 根据 EURO STOXX 50 期权的报价进行校准 . . . . . . . . . . . . . 213
11.4.3 H93 模型校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.4.4 跳跃部分校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
11.4.5 BCC97 模型的完全校准 . . . . . . . . . . . . . . . . . . . . . . . . . 217
11.4.6 根据隐含波动率校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
11.5 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
11.6 COX-INGERSOLL-ROSS 模型的 PYTHON 脚本 . . . . . . . . . . . . . . . 222
11.6.1 CIR85 模型校准 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
11.6.2 H93 随机波动率模型校准 . . . . . . . . . . . . . . . . . . . . . . . . 225
11.6.3 隐含波动率的比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
11.6.4 模型跳跃扩散部分的校准 . . . . . . . . . . . . . . . . . . . . . . . . 230
11.6.5 BCC97 完全模型的校准 . . . . . . . . . . . . . . . . . . . . . . . . . 233
11.6.6 根据隐含波动率校准 BCC97 模型 . . . . . . . . . . . . . . . . . . . 236
第 12 章 一般模型框架下的模拟与定价 240
12.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.2 模拟 BCC97 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
12.3 股权期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.3.1 欧式期权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
12.3.2 美式期权 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
12.4 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.5 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.5.1 模拟 BCC97 模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
12.5.2 MCS 法对欧式看涨期权定价 . . . . . . . . . . . . . . . . . . . . . . 251
12.5.3 MCS 法对美式看涨期权定价 . . . . . . . . . . . . . . . . . . . . . . 252
第 13 章 动态对冲 256
13.1 概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
13.2 BSM 模型对冲研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257
13.3 BCC97 模型对冲研究 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262
13.4 总结 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
13.5 Python 脚本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265
13.5.1 BSM 的 LSM Delta 对冲(单一路径) . . . . . . . . . . . . . . . . . 265
13.5.2 BSM 的 LSM Delta 对冲(多条路径) . . . . . . . . . . . . . . . . . 269
13.5.3 BCC97 中美式看跌期权的 LSM 算法 . . . . . . . . . . . . . . . . . . 271
13.5.4 BCC97 的 LSM Delta 对冲(单一路径) . . . . . . . . . . . . . . . 277
第 14 章 摘要 280
附录 A 果壳里的 Python 281
A.1 Python 基础 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
A.1.1 安装 Python 包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281
A.1.2 Python 第一步 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282
A.1.3 数组操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
A.1.4 随机数 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
A.1.5 绘图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289
A.2 欧式期权定价 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
A.2.1 Black-Scholes-Merton 方法 . . . . . . . . . . . . . . . . . . . . . . . 292
A.2.2 Cox-Ross-Rubinstein 方法 . . . . . . . . . . . . . . . . . . . . . . . . 294
A.2.3 蒙特卡罗方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
A.3 金融选题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
A.3.1 近似 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301
A.3.2 最优化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
A.3.3 数值积分 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304
A.4 Python 进阶 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
A.4.1 类和对象 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 305
A.4.2 基本的输入输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 308
A.4.3 与电子表格交互 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
A.5 快速金融工程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Python 3爬虫、数据清洗与可视化实战
第1 章 Python 基础 ..................................................................................... 1
1.1 安装Python 环境.............................................................................................................. 1
1.1.1 Python 3.6.2 安装与配置 .......................................................................................... 1
1.1.2 使用IDE 工具——PyCharm .................................................................................... 4
1.1.3 使用IDE 工具——Anaconda ................................................................................... 4
1.2 Python 操作入门 .............................................................................................................. 6
1.2.1 编写第一个Python 代码 .......................................................................................... 6
1.2.2 Python 基本操作 ....................................................................................................... 9
1.2.3 变量 .......................................................................................................................... 10
1.3 Python 数据类型 ............................................................................................................ 10
1.3.1 数字 .......................................................................................................................... 10
1.3.2 字符串 .......................................................................................................................11
1.3.3 列表 .......................................................................................................................... 13
1.3.4 元组 .......................................................................................................................... 14
1.3.5 集合 .......................................................................................................................... 15
1.3.6 字典 .......................................................................................................................... 15
1.4 Python 语句与函数 ......................................................................................................... 16
1.4.1 条件语句 .................................................................................................................. 16
1.4.2 循环语句 .................................................................................................................. 16
1.4.3 函数 .......................................................................................................................... 17
第2 章 写一个简单的爬虫 .......................................................................... 18
2.1 关于爬虫的合法性 ......................................................................................................... 18
2.2 了解网页 ......................................................................................................................... 20
2.2.1 认识网页结构 .......................................................................................................... 21
2.2.2 写一个简单的HTML ............................................................................................. 21
2.3 使用requests 库请求网站 .............................................................................................. 23
Python 3 爬虫、数据清洗与可视化实战
2.3.1 安装requests 库 ....................................................................................................... 23
2.3.2 爬虫的基本原理 ...................................................................................................... 25
2.3.3 使用GET 方式抓取数据 ........................................................................................ 26
2.3.4 使用POST 方式抓取数据 ...................................................................................... 27
2.4 使用Beautiful Soup 解析网页 ....................................................................................... 30
2.5 清洗和组织数据 ............................................................................................................. 34
2.6 爬虫攻防战 ..................................................................................................................... 35
第3 章 用API 爬取天气预报数据 ............................................................... 38
3.1 注册免费API 和阅读技术文档 ..................................................................................... 38
3.2 获取API 数据 ................................................................................................................ 40
3.3 存储数据到MongoDB ................................................................................................... 45
3.3.1 下载并安装MongoDB ............................................................................................ 45
3.3.2 在PyCharm 中安装Mongo Plugin ......................................................................... 46
3.3.3 将数据存入MongoDB ............................................................................................ 49
3.4 MongoDB 数据库查询 ................................................................................................... 52
第4 章 大型爬虫案例:抓取某电商网站的商品数据 ................................... 55
4.1 观察页面特征和解析数据 ............................................................................................. 55
4.2 工作流程分析 ................................................................................................................. 64
4.3 构建类目树 ..................................................................................................................... 65
4.4 获取产品列表 ................................................................................................................. 68
4.5 代码优化 ......................................................................................................................... 70
4.6 爬虫效率优化 ................................................................................................................. 74
4.7 容错处理 ......................................................................................................................... 77
第5 章 Scrapy 爬虫 ................................................................................... 78
5.1 Scrapy 简介 ..................................................................................................................... 78
5.2 Scrapy 安装 ..................................................................................................................... 79
5.3 案例:用Scrapy 抓取股票行情 .................................................................................... 80
第6 章 Selenium爬虫 ................................................................................ 88
6.1 Selenium 简介 ................................................................................................................. 88
6.2 案例:用Selenium 抓取电商网站数据 ........................................................................ 90
第7 章 数据库连接和查询 ........................................................................ 100
7.1 使用PyMySQL ............................................................................................................ 100
7.1.1 连接数据库 ............................................................................................................ 100
7.1.2 案例:某电商网站女装行业TOP100 销量数据 ................................................. 102
7.2 使用SQLAlchemy ........................................................................................................ 104
7.2.1 SQLAlchemy 基本介绍 ......................................................................................... 104
7.2.2 SQLAlchemy 基本语法 ......................................................................................... 105
7.3 MongoDB ...................................................................................................................... 107
7.3.1 MongoDB 基本语法 .............................................................................................. 107
7.3.2 案例:在某电商网站搜索“连衣裙”的商品数据 ............................................ 107
第8 章 NumPy ......................................................................................... 109
8.1 NumPy 简介 .................................................................................................................. 109
8.2 一维数组 ........................................................................................................................110
8.2.1 数组与列表的异同 .................................................................................................110
8.2.2 数组的创建 ............................................................................................................. 111
8.3 多维数组 ........................................................................................................................ 111
8.3.1 多维数组的高效性能 .............................................................................................112
8.3.2 多维数组的索引与切片 .........................................................................................113
8.3.3 多维数组的属性 .....................................................................................................113
8.4 数组的运算 ....................................................................................................................115
第9 章 pandas 数据清洗 .......................................................................... 117
9.1 数据读写、选择、整理和描述 ....................................................................................117
9.1.1 从CSV 中读取数据 ...............................................................................................119
9.1.2 向CSV 写入数据 .................................................................................................. 120
9.1.3 数据选择 ................................................................................................................ 120
9.1.4 数据整理 ................................................................................................................ 122
9.1.5 数据描述 ................................................................................................................ 123
9.2 数据分组、分割、合并和变形 ................................................................................... 124
9.2.1 数据分组 ................................................................................................................ 124
9.2.2 数据分割 ................................................................................................................ 127
9.2.3 数据合并 ................................................................................................................ 128
9.2.4 数据变形 ................................................................................................................ 134
9.2.5 案例:旅游数据的分析与变形 ............................................................................ 136
Python 3 爬虫、数据清洗与可视化实战
9.3 缺失值、异常值和重复值处理 ................................................................................... 140
9.3.1 缺失值处理 ............................................................................................................ 140
9.3.2 检测和过滤异常值 ................................................................................................ 144
9.3.3 移除重复数据 ........................................................................................................ 147
9.3.4 案例:旅游数据的值检查与处理 ........................................................................ 149
9.4 时序数据处理 ............................................................................................................... 152
9.4.1 日期/时间数据转换 ............................................................................................... 152
9.4.2 时序数据基础操作 ................................................................................................ 153
9.4.3 案例:天气数据分析与处理 ................................................................................ 155
9.5 数据类型转换 ............................................................................................................... 158
9.6 正则表达式 ................................................................................................................... 160
9.6.1 元字符与限定符 .................................................................................................... 161
9.6.2 案例:用正则表达式提取网页文本信息 ............................................................ 162
第10 章 综合应用实例 ............................................................................. 164
10.1 按性价比给用户推荐旅游产品 ................................................................................. 164
10.1.1 数据采集 .............................................................................................................. 165
10.1.2 数据清洗、建模 .................................................................................................. 169
10.2 通过热力图分析为用户提供出行建议 ..................................................................... 172
10.2.1 某旅游网站热门景点爬虫代码(qunaer_sights.py) ....................................... 175
10.2.2 提取CSV 文件中经纬度和销量信息 ................................................................ 178
10.2.3 创建景点门票销量热力地图HTML 文件 ......................................................... 179
第11 章 数据可视化 ................................................................................. 182
11.1 matplotlib .................................................................................................................... 183
11.1.1 画出各省份平均价格、各省份平均成交量柱状图 .......................................... 183
11.1.2 画出各省份平均成交量折线图、柱状图、箱形图和饼图 .............................. 184
11.1.3 画出价格与成交量的散点图 .............................................................................. 185
11.2 pyecharts ...................................................................................................................... 186
11.2.1 Echarts 简介 ......................................................................................................... 186
11.2.2 pyecharts 简介 ..................................................................................................... 187
11.2.3 初识pyecharts,玫瑰相送 .................................................................................. 187
11.2.4 pyecharts 基本语法 .............................................................................................. 188
11.2.5 基于商业分析的pyecharts 图表绘制 ................................................................. 190
11.2.6 使用pyecharts 绘制其他图表 ............................................................................. 199
11.2.7 pyecharts 和Jupyter ............................................................................................. 203
评分
评分
评分
评分
评分
评分
评分
评分
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版权所有