第1篇 Pandas入门
第1章 数据分析导论 3
1.1 章节材料 3
1.2 数据分析基础知识 5
1.2.1 数据收集 6
1.2.2 数据整理 7
1.2.3 探索性数据分析 8
1.2.4 得出结论 9
1.3 统计基础知识 10
1.3.1 采样 11
1.3.2 描述性统计 12
1.3.3 集中趋势的度量 12
1.3.4 均值 12
1.3.5 中位数 13
1.3.6 众数 13
1.3.7 数据散布的度量 14
1.3.8 全距 14
1.3.9 方差 15
1.3.10 标准差 15
1.3.11 变异系数 16
1.3.12 四分位距 17
1.3.13 四分位离散系数 17
1.3.14 汇总数据 18
1.3.15 常见分布 22
1.3.16 缩放数据 24
1.3.17 量化变量之间的关系 25
1.3.18 汇总统计的陷阱 27
1.3.19 预测 28
1.3.20 推论统计 32
1.4 设置虚拟环境 35
1.4.1 虚拟环境 35
1.4.2 使用venv 36
1.4.3 Windows中的操作 37
1.4.4 Linux/macOS中的操作 37
1.4.5 使用conda 38
1.4.6 安装所需的Python包 40
1.4.7 关于Pandas 40
1.4.8 Jupyter Notebook 41
1.4.9 启动JupyterLab 41
1.4.10 验证虚拟环境 43
1.4.11 关闭JupyterLab 45
1.5 小结 45
1.6 练习 46
1.7 延伸阅读 47
第2章 使用Pandas DataFrame 49
2.1 章节材料 49
2.2 Pandas数据结构 50
2.2.1 Series 55
2.2.2 Index 56
2.2.3 DataFrame 57
2.3 创建Pandas DataFrame 60
2.3.1 从Python对象中创建DataFrame 61
2.3.2 从文件中创建DataFrame 65
2.3.3 从数据库中创建DataFrame 69
2.3.4 从API中获取数据以创建DataFrame 71
2.4 检查DataFrame对象 74
2.4.1 检查数据 74
2.4.2 描述数据 77
2.5 抓取数据的子集 80
2.5.1 选择列 81
2.5.2 切片 84
2.5.3 索引 86
2.5.4 过滤 88
2.6 添加和删除数据 95
2.6.1 创建新数据 96
2.6.2 删除不需要的数据 104
2.7 小结 106
2.8 练习 107
2.9 延伸阅读 107
第2篇 使用Pandas进行数据分析
第3章 使用Pandas进行数据整理 111
3.1 章节材料 112
3.2 关于数据整理 113
3.2.1 数据清洗 114
3.2.2 数据转换 114
3.2.3 宽数据格式 116
3.2.4 长数据格式 118
3.2.5 数据充实 121
3.3 探索API以查找和收集温度数据 122
3.4 清洗数据 132
3.4.1 重命名列 133
3.4.2 类型转换 134
3.4.3 按值排序 140
3.4.4 索引排序 143
3.4.5 设置索引 144
3.4.6 重置索引 145
3.4.7 重新索引 146
3.5 重塑数据 153
3.5.1 转置DataFrame 155
3.5.2 旋转DataFrame 155
3.5.3 融合DataFrame 161
3.6 处理重复、缺失或无效的数据 164
3.6.1 查找有问题的数据 164
3.6.2 处理潜在的问题 171
3.7 小结 180
3.8 练习 180
3.9 延伸阅读 182
第4章 聚合Pandas DataFrame 183
4.1 章节材料 183
4.2 在DataFrame上执行数据库风格的操作 185
4.2.1 查询DataFrame 186
4.2.2 合并DataFrame 187
4.3 使用DataFrame操作充实数据 197
4.3.1 算术和统计 198
4.3.2 分箱 200
4.3.3 应用函数 205
4.3.4 窗口计算 207
4.3.5 滚动窗口 207
4.3.6 扩展窗口 210
4.3.7 指数加权移动窗口 211
4.3.8 管道 212
4.4 聚合数据 215
4.4.1 汇总DataFrame 217
4.4.2 按组聚合 218
4.4.3 数据透视表和交叉表 224
4.5 处理时间序列数据 227
4.5.1 基于日期选择和过滤数据 228
4.5.2 基于时间选择和过滤数据 230
4.5.3 移动滞后数据 234
4.5.4 差分数据 235
4.5.5 重采样 236
4.5.6 合并时间序列 240
4.6 小结 242
4.7 练习 243
4.8 延伸阅读 245
第5章 使用Pandas和Matplotlib可视化数据 247
5.1 章节材料 247
5.2 Matplotlib简介 249
5.2.1 基础知识 249
5.2.2 绘图组件 255
5.2.3 其他选项 258
5.3 使用Pandas绘图 260
5.3.1 随时间演变 262
5.3.2 变量之间的关系 269
5.3.3 分布 275
5.3.4 计数和频率 283
5.4 pandas.plotting模块 291
5.4.1 散点图矩阵 291
5.4.2 滞后图 294
5.4.3 自相关图 296
5.4.4 自举图 297
5.5 小结 298
5.6 练习 299
5.7 延伸阅读 299
第6章 使用Seaborn和自定义技术绘图 301
6.1 章节材料 301
6.2 使用Seaborn进行高级绘图 303
6.2.1 分类数据 304
6.2.2 相关性和热图 308
6.2.3 回归图 317
6.2.4 分面 321
6.3 使用Matplotlib格式化绘图 323
6.3.1 标题和标签 323
6.3.2 图例 326
6.3.3 格式化轴 329
6.4 自定义可视化 336
6.4.1 添加参考线 336
6.4.2 区域着色 341
6.4.3 注解 344
6.4.4 颜色 346
6.4.5 颜色表 348
6.4.6 条件着色 355
6.4.7 纹理 357
6.5 小结 360
6.6 练习 360
6.7 延伸阅读 361
第3篇 使用Pandas进行实际应用分析
第7章 金融分析 365
7.1 章节材料 366
7.2 构建Python包 367
7.2.1 封装结构 368
7.2.2 stock_analysis包概述 369
7.2.3 UML图 371
7.3 收集金融数据 372
7.3.1 StockReader类 373
7.3.2 从Yahoo!Finance中收集历史数据 381
7.4 探索性数据分析 383
7.4.1 Visualizer类系列 388
7.4.2 可视化股票 394
7.4.3 可视化多个资产 407
7.5 金融工具的技术分析 413
7.5.1 StockAnalyzer类 414
7.5.2 AssetGroupAnalyzer类 421
7.5.3 比较资产 423
7.6 使用历史数据建模 427
7.6.1 StockModeler类 427
7.6.2 时间序列分解 433
7.6.3 ARIMA 434
7.6.4 使用statsmodel进行线性回归 436
7.6.5 比较模型 438
7.7 小结 440
7.8 练习 441
7.9 延伸阅读 442
第8章 基于规则的异常检测 445
8.1 章节材料 445
8.2 模拟登录尝试 446
8.2.1 假设 446
8.2.2 构建login_attempt_simulator包 447
8.2.3 辅助函数 448
8.2.4 构建LoginAttemptSimulator类 450
8.2.5 从命令行中进行模拟 461
8.3 探索性数据分析 467
8.3.1 读入模拟数据 467
8.3.2 异常登录行为的特点 468
8.3.3 检查数据 469
8.3.4 比较登录尝试次数 470
8.3.5 比较登录成功率 473
8.3.6 使用错误率指标 474
8.3.7 通过可视化找出异常值 476
8.4 实现基于规则的异常检测 479
8.4.1 百分比差异 480
8.4.2 Tukey围栏 485
8.4.3 Z分数 486
8.4.4 评估性能 488
8.5 小结 493
8.6 练习 493
8.7 延伸阅读 494
第4篇 scikit-learn和机器学习
第9章 Python机器学习入门 499
9.1 章节材料 499
9.2 机器学习概述 501
9.2.1 机器学习的类型 502
9.2.2 常见任务 502
9.2.3 Python中的机器学习 503
9.3 探索性数据分析 504
9.3.1 红酒品质数据 505
9.3.2 白葡萄酒和红葡萄酒化学性质数据 508
9.3.3 行星和系外行星数据 511
9.4 预处理数据 517
9.4.1 训练和测试集 518
9.4.2 缩放和居中数据 520
9.4.3 编码数据 522
9.4.4 估算 525
9.4.5 附加转换器 527
9.4.6 构建数据管道 529
9.5 聚类 531
9.5.1 k均值 532
9.5.2 按轨道特征对行星进行分组 532
9.5.3 使用肘点法确定k值 535
9.5.4 解释质心并可视化聚类空间 537
9.5.5 评估聚类结果 540
9.6 回归 542
9.6.1 线性回归 542
9.6.2 预测行星一年的长度 543
9.6.3 解释线性回归方程 544
9.6.4 做出预测 545
9.6.5 评估回归结果 546
9.6.6 指标 548
9.7 分类 552
9.7.1 逻辑回归 552
9.7.2 预测红酒质量 553
9.7.3 通过化学性质确定葡萄酒类型 554
9.7.4 评估分类结果 555
9.7.5 混淆矩阵 555
9.7.6 分类指标 559
9.7.7 准确率和错误率 559
9.7.8 精确率和召回率 560
9.7.9 F分数 562
9.7.10 敏感性和特异性 563
9.7.11 ROC曲线 564
9.7.12 精确率-召回率曲线 568
9.8 小结 571
9.9 练习 572
9.10 延伸阅读 574
第10章 做出更好的预测 577
10.1 章节材料 577
10.2 使用网格搜索调整超参数 580
10.2.1 拆分验证集 580
10.2.2 使用交叉验证 582
10.2.3 使用RepeatedStratifiedKFold 585
10.3 特征工程 588
10.3.1 交互项和多项式特征 589
10.3.2 降维 592
10.3.3 特征联合 601
10.3.4 特征重要性 603
10.4 集成方法 606
10.4.1 随机森林 608
10.4.2 梯度提升 609
10.4.3 投票 610
10.4.4 检查分类预测置信度 612
10.5 解决类不平衡的问题 616
10.5.1 欠采样 618
10.5.2 过采样 619
10.6 正则化 621
10.7 小结 623
10.8 练习 624
10.9 延伸阅读 626
第11章 机器学习异常检测 629
11.1 章节材料 629
11.2 探索模拟登录尝试数据 631
11.3 利用无监督学习执行异常检测 638
11.3.1 隔离森林 639
11.3.2 局部异常因子 641
11.3.3 比较模型 643
11.4 实现有监督学习的异常检测 647
11.4.1 基线模型 649
11.4.2 虚拟分类器 649
11.4.3 朴素贝叶斯 651
11.4.4 逻辑回归 655
11.5 将反馈循环与在线学习相结合 657
11.5.1 创建PartialFitPipeline子类 658
11.5.2 随机梯度下降分类器 658
11.5.3 构建初始模型 660
11.5.4 评估模型 661
11.5.5 更新模型 666
11.5.6 提交结果 668
11.5.7 进一步改进 669
11.6 小结 669
11.7 练习 670
11.8 延伸阅读 671
第5篇 其 他 资 源
第12章 未来之路 675
12.1 数据资源 675
12.1.1 Python包 676
12.1.2 Seaborn 676
12.1.3 scikit-learn 676
12.2 搜索数据 677
12.3 API 677
12.4 网站 678
12.4.1 金融 678
12.4.2 官方数据 679
12.4.3 健康与经济 679
12.4.4 社交网络 680
12.4.5 运动 680
12.4.6 杂项 681
12.5 练习使用数据 681
12.5.1 Kaggle 682
12.5.2 DataCamp 682
12.6 Python练习 682
12.7 小结 684
12.8 练习 684
12.9 延伸阅读 685
练习答案 693
附录A 695
数据分析工作流程 695
选择合适的可视化结果 696
机器学习工作流程 697