第1章 IPython:超越Python 1
1.1 shell还是Notebook 1
1.1.1启动IPython shell 2
1.1.2启动Jupyter Notebook 2
1.2 IPython的帮助和文档 3
1.2.1用符号?获取文档 3
1.2.2通过符号??获取源代码 4
1.2.3用Tab补全的方式探索模块 5
1.3 IPython shell中的快捷键 7
1.3.1导航快捷键 7
1.3.2文本输入快捷键 7
1.3.3命令历史快捷键 8
1.3.4其他快捷键 9
1.4 IPython魔法命令 9
1.4.1粘贴代码块:00185D60aste和1.4.2执行外部代码:%run 10
1.4.3计算代码运行时间:%timeit 11
1.4.4魔法函数的帮助:?、%magic和%lsmagic 11
1.5输入和输出历史 12
1.5.1 IPython的输入和输出对象 12
1.5.2下划线快捷键和以前的输出 13
1.5.3禁止输出 13
1.5.4相关的魔法命令 13
1.6 IPython和shell命令 14
1.6.1 shell快速入门 14
1.6.2 IPython中的shell命令 15
1.6.3在shell中传入或传出值 15
1.7与shell相关的魔法命令 16
1.8错误和调试 17
1.8.1控制异常:185d60mode 17
1.8.2调试:当阅读轨迹追溯不足以解决问题时 19
1.9代码的分析和计时 21
1.9.1代码段计时:%timeit和%time 22
1.9.2分析整个脚本:00185D60run 23
1.9.3用00185D60run进行逐行分析 24
1.9.4用%memit和%mprun进行内存分析 25
1.10 IPython参考资料 26
1.10.1网络资源 26
1.10.2相关图书 27
第2章 NumPy入门 28
2.1理解Python中的数据类型 29
2.1.1 Python整型不仅仅是一个整型 30
2.1.2 Python列表不仅仅是一个列表 31
2.1.3 Python中的固定类型数组 32
2.1.4从Python列表创建数组 32
2.1.5从头创建数组 33
2.1.6 NumPy标准数据类型 34
2.2 NumPy数组基础 35
2.2.1 NumPy数组的属性 36
2.2.2数组索引:获取单个元素 37
2.2.3数组切片:获取子数组 38
2.2.4数组的变形 41
2.2.5数组拼接和分裂 42
2.3 NumPy数组的计算:通用函数 44
2.3.1缓慢的循环 44
2.3.2通用函数介绍 45
2.3.3探索NumPy的通用函数 46
2.3.4高级的通用函数特性 49
2.3.5通用函数:更多的信息 51
2.4聚合:最小值、最大值和其他值 51
2.4.1数组值求和 51
2.4.2最小值和最大值 52
2.4.3示例:美国总统的身高是多少 54
2.5数组的计算:广播 55
2.5.1广播的介绍 55
2.5.2广播的规则 57
2.5.3广播的实际应用 60
2.6比较、掩码和布尔逻辑 61
2.6.1示例:统计下雨天数 61
2.6.2和通用函数类似的比较操作 62
2.6.3操作布尔数组 64
2.6.4将布尔数组作为掩码 66
2.7花哨的索引 69
2.7.1探索花哨的索引 69
2.7.2组合索引 70
2.7.3示例:选择随机点 71
2.7.4用花哨的索引修改值 72
2.7.5示例:数据区间划分 73
2.8数组的排序 75
2.8.1 NumPy中的快速排序:np.sort和np.argsort 76
2.8.2部分排序:分隔 77
2.8.3示例:K个最近邻 78
2.9结构化数据:NumPy的结构化数组 81
2.9.1生成结构化数组 83
2.9.2更高级的复合类型 84
2.9.3记录数组:结构化数组的扭转 84
2.9.4关于Pandas 85
第3章 Pandas数据处理 86
3.1安装并使用Pandas 86
3.2 Pandas对象简介 87
3.2.1 Pandas的Series对象 87
3.2.2 Pandas的Dat aFrame对象 90
3.2.3 Pandas的Index对象 93
3.3数据取值与选择 95
3.3.1 Series数据选择方法 95
3.3.2 DataFrame数据选择方法 98
3.4 Pandas数值运算方法 102
3.4.1通用函数:保留索引 102
3.4.2通用函数:索引对齐 103
3.4.3通用函数:DataFrame与Series的运算 105
3.5处理缺失值 106
3.5.1选择处理缺失值的方法 106
3.5.2 Pandas的缺失值 107
3.5.3处理缺失值 110
3.6层级索引 113
3.6.1多级索引Series 113
3.6.2多级索引的创建方法 116
3.6.3多级索引的取值与切片 119
3.6.4多级索引行列转换 121
3.6.5多级索引的数据累计方法 124
3.7合并数据集:Concat与Append操作 125
3.7.1知识回顾:NumPy数组的合并 126
3.7.2通过pd.concat实现简易合并 126
3.8 合并数据集:合并与连接 129
3.8.1关系代数 129
3.8.2数据连接的类型 130
3.8.3设置数据合并的键 132
3.8.4设置数据连接的集合操作规则 134
3.8.5重复列名:suffixes参数 135
3.8.6案例:美国各州的统计数据 136
3.9累计与分组 140
3.9.1行星数据 140
3.9.2 Pandas的简单累计功能 141
3.9.3 GroupBy:分割、应用和组合 142
3.10数据透视表 150
3.10.1演示数据透视表 150
3.10.2手工制作数据透视表 151
3.10.3数据透视表语法 151
3.10.4案例:美国人的生日 153
3.11向量化字符串操作 157
3.11.1 Pandas字符串操作简介 157
3.11.2 Pandas字符串方法列表 159
3.11.3案例:食谱数据库 163
3.12处理时间序列 166
3.12.1 Python的日期与时间工具 166
3.12.2 Pandas时间序列:用时间作索引 169
3.12.3 Pandas时间序列数据结构 170
3.12.4时间频率与偏移量 172
3.12.5重新取样、迁移和窗口 173
3.12.6更多学习资料 178
3.12.7案例:美国西雅图自行车统计数据的可视化 179
3.13高性能Pandas: eval()与query() 184
3.13.1 query()与eval()的设计动机:复合代数式 184
3.13.2用pandas.eval()实现高性能运算 185
3.13.3用DataFrame.eval()实现列间运算 187
3.13.4 DataFrame.query()方法 188
3.13.5性能决定使用时机 189
3.14参考资料 189
第4章 Matplotlib数据可视化 191
4.1 Matplotlib常用技巧 192
4.1.1导入Matplotlib 192
4.1.2设置绘图样式 192
4.1.3用不用show()?如何显示图形 192
4.1.4将图形保存为文件 194
4.2两种画图接口 195
4.2.1 MATLAB风格接口 195
4.2.2面向对象接口 196
4.3简易线形图 197
4.3.1调整图形:线条的颜色与风格 199
4.3.2调整图形:坐标轴上下限 200
4.3.3设置图形标签 203
4.4简易散点图 204
4.4.1用plt.plot画散点图 205
4.4.2用plt.scatter画散点图 206
4.4.3 plot与scatter:效率对比 208
4.5可视化异常处理 208
4.5.1基本误差线 209
4.5.2连续误差 210
4.6密度图与等高线图 211
4.7频次直方图、数据区间划分和分布密度 215
4.8配置图例 219
4.8.1选择图例显示的元素 221
4.8.2在图例中显示不同尺寸的点 222
4.8.3同时显示多个图例 223
4.9配置颜色条 224
4.9.1配置颜色条 224
4.9.2案例:手写数字 228
4.10多子图 230
4.10.1 plt.axes:手动创建子图 230
4.10.2 plt.subplot:简易网格子图 231
4.10.3 plt.subplots:用一行代码创建网格 233
4.10.4 plt.GridSpec:实现更复杂的排列方式 234
4.11文字与注释 235
4.11.1案例:节假日对美国出生率的影响 236
4.11.2坐标变换与文字位置 237
4.11.3箭头与注释 239
4.12自定义坐标轴刻度 241
4.12.1主要刻度与次要刻度 242
4.12.2隐藏刻度与标签 243
4.12.3增减刻度数量 244
4.12.4花哨的刻度格式 245
4.12.5格式生成器与定位器小结 247
4.13 Matplotlib自定义:配置文件与样式表 248
4.13.1手动配置图形 248
4.13.2修改默认配置:rcParams 249
4.13.3样式表 251
4.14用Matplotlib画三维图 255
4.14.1三维数据点与线 256
4.14.2三维等高线图 256
4.14.3线框图和曲面图 258
4.14.4曲面三角剖分 259
4.15用Basemap可视化地理数据 261
4.15.1地图投影 263
4.15.2画一个地图背景 267
4.15.3在地图上画数据 269
4.15.4案例:美国加州城市数据 270
4.15.5案例:地表温度数据 271
4.16用Seaborn做数据可视化 273
4.16.1 Seaborn与Matplotlib 274
4.16.2 Seaborn图形介绍 275
4.16.3案例:探索马拉松比赛成绩数据 283
4.17参考资料 290
4.17.1 Matplotlib资源 290
4.17.2其他Python画图程序库 290
第5章 机器学习 291
5.1什么是机器学习 291
5.1.1机器学习的分类 292
5.1.2机器学习应用的定性示例 292
5.1.3小结 299
5.2 Scikit-Learn简介 300
5.2.1 Scikit-Learn的数据表示 300
5.2.2 Scikit-Learn的评估器API 302
5.2.3应用:手写数字探索 309
5.2.4小结 313
5.3超参数与模型验证 313
5.3.1什么是模型验证 314
5.3.2选择最优模型 317
5.3.3学习曲线 322
5.3.4验证实践:网格搜索 326
5.3.5小结 327
5.4特征工程 327
5.4.1分类特征 327
5.4.2文本特征 329
5.4.3图像特征 330
5.4.4衍生特征 330
5.4.5缺失值填充 332
5.4.6特征管道 332
5.5专题:朴素贝叶斯分类 333
5.5.1贝叶斯分类 333
5.5.2高斯朴素贝叶斯 334
5.5.3多项式朴素贝叶斯 336
5.5.4朴素贝叶斯的应用场景 339
5.6专题:线性回归 340
5.6.1简单线性回归 340
5.6.2基函数回归 342
5.6.3正则化 346
5.6.4案例:预测自行车流量 349
5.7专题:支持向量机 353
5.7.1支持向量机的由来 354
5.7.2支持向量机:边界最大化 355
5.7.3案例:人脸识别 363
5.7.4支持向量机总结 366
5.8专题:决策树与随机森林 367
5.8.1随机森林的诱因:决策树 367
5.8.2评估器集成算法:随机森林 371
5.8.3随机森林回归 373
5.8.4案例:用随机森林识别手写数字 374
5.8.5随机森林总结 376
5.9专题:主成分分析 376
5.9.1主成分分析简介 377
5.9.2用PCA作噪音过滤 383
5.9.3案例:特征脸 385
5.9.4主成分分析总结 387
5.10专题:流形学习 388
5.10.1流形学习:“HELLO” 388
5.10.2多维标度法(MDS) 389
5.10.3将MDS用于流形学习 391
5.10.4非线性嵌入:当MDS失败时 393
5.10.5非线性流形:局部线性嵌入 395
5.10.6关于流形方法的一些思考 396
5.10.7示例:用Isomap处理人脸数据 397
5.10.8示例:手写数字的可视化结构 400
5.11专题:k-means聚类 402
5.11.1 k-means简介 403
5.11.2 k-means算法:期望最大化 404
5.11.3案例 409
5.12专题:高斯混合模型 415
5.12.1高斯混合模型(GMM)为什么会出现:k-means算法的缺陷 415
5.12.2一般化E-M:高斯混合模型 417
5.12.3将GMM用作密度估计 421
5.12.4示例:用GMM生成新的数据 425
5.13专题:核密度估计 427
5.13.1 KDE的由来:直方图 428
5.13.2核密度估计的实际应用 431
5.13.3示例:球形空间的KDE 433
5.13.4示例:不是很朴素的贝叶斯 436
5.14应用:人脸识别管道 439
5.14.1 HOG特征 440
5.14.2 HOG实战:简单人脸识别器 441
5.14.3注意事项与改进方案 445
5.15 机器学习参考资料 446
5.15.1 Python中的机器学习 446
5.15.2通用机器学习资源 447
关于作者 448
关于封面 448