阅读本书可以获得关于在Python下操作、处理、清洗、规整数据集的完整说明。本书第2版针对Python 3.6进行了更新,并增加了实际案例向你展示如何高效地解决一系列数据分析问题。你将在阅读过程中学习到最新版本的pandas、NumPy、IPython和Jupyter。
封面图
目录
- 前言1
- 第1章 准备工作7
- 1.1 本书内容7
- 1.1.1 什么类型的数据7
- 1.2 为何利用Python进行数据分析8
- 1.2.1 Python作为胶水8
- 1.2.2 解决“双语言”难题8
- 1.2.3 为何不使用Python9
- 1.3 重要的Python库9
- 1.3.1 NumPy9
- 1.3.2 pandas10
- 1.3.3 matplotlib11
- 1.3.4 IPython与Jupyter11
- 1.3.5 SciPy12
- 1.3.6 scikit-learn12
- 1.3.7 statsmodels13
- 1.4 安装与设置13
- 1.4.1 Windows14
- 1.4.2 Apple(OS X和macOS)14
- 1.4.3 GNU/Linux14
- 1.4.4 安装及更新Python包15
- 1.4.5 Python 2和Python 316
- 1.4.6 集成开发环境和文本编辑器16
- 1.5 社区和会议17
- 1.6 快速浏览本书17
- 1.6.1 代码示例18
- 1.6.2 示例数据18
- 1.6.3导入约定18
- 1.6.4术语19
- 第2章 Python语言基础、IPython及Jupyter notebook20
- 2.1 Python解释器21
- 2.2 IPython基础22
- 2.2.1 运行IPython命令行22
- 2.2.2 运行 Jupyter notebook23
- 2.2.3 Tab补全25
- 2.2.4 内省27
- 2.2.5 %run命令28
- 2.2.6 执行剪贴板中的程序30
- 2.2.7 终端快捷键30
- 2.2.8 关于魔术命令31
- 2.2.9matplotlib集成33
- 2.3 Python语言基础34
- 2.3.1 语言语义34
- 2.3.2 标量类型42
- 2.3.3 控制流49
- 第3章 内建数据结构、函数及文件54
- 3.1 数据结构和序列54
- 3.1.1 元组54
- 3.1.2 列表57
- 3.1.3 内建序列函数61
- 3.1.4 字典64
- 3.1.5集合67
- 3.1.6 列表、集合和字典的推导式69
- 3.2 函数72
- 3.2.1 命名空间、作用域和本地函数72
- 3.2.2 返回多个值73
- 3.2.3 函数是对象74
- 3.2.4 匿名(Lambda)函数75
- 3.2.5 柯里化:部分参数应用76
- 3.2.6 生成器77
- 3.2.7 错误和异常处理79
- 3.3 文件与操作系统82
- 3.3.1 字节与Unicode文件85
- 3.4 本章小结86
- 第4章 NumPy基础:数组与向量化计算87
- 4.1 NumPy ndarray:多维数组对象89
- 4.1.1 生成ndarray90
- 4.1.2 ndarray的数据类型92
- 4.1.3 NumPy数组算术94
- 4.1.4 基础索引与切片95
- 4.1.5 布尔索引100
- 4.1.6 神奇索引103
- 4.1.7 数组转置和换轴104
- 4.2 通用函数:快速的逐元素数组函数106
- 4.3 使用数组进行面向数组编程109
- 4.3.1 将条件逻辑作为数组操作110
- 4.3.2 数学和统计方法111
- 4.3.3 布尔值数组的方法113
- 4.3.4 排序114
- 4.3.5 唯一值与其他集合逻辑115
- 4.4 使用数组进行文件输入和输出115
- 4.5 线性代数116
- 4.6 伪随机数生成118
- 4.7 示例:随机漫步120
- 4.7.1 一次性模拟多次随机漫步121
- 4.8 本章小结122
- 第5章 pandas入门123
- 5.1 pandas数据结构介绍123
- 5.1.1 Series123
- 5.1.2 DataFrame128
- 5.1.3 索引对象134
- 5.2 基本功能135
- 5.2.1 重建索引136
- 5.2.2 轴向上删除条目138
- 5.2.3 索引、选择与过滤140
- 5.2.4 整数索引144
- 5.2.5 算术和数据对齐145
- 5.2.6 函数应用和映射150
- 5.2.7 排序和排名152
- 5.2.8 含有重复标签的轴索引155
- 5.3 描述性统计的概述与计算157
- 5.3.1 相关性和协方差159
- 5.3.2 唯一值、计数和成员属性161
- 5.4 本章小结164
- 第6章 数据载入、存储及文件格式165
- 6.1 文本格式数据的读写165
- 6.1.1 分块读入文本文件171
- 6.1.2 将数据写入文本格式172
- 6.1.3 使用分隔格式174
- 6.1.4 JSON数据176
- 6.1.5 XML和HTML:网络抓取177
- 6.2 二进制格式180
- 6.2.1 使用HDF5格式181
- 6.2.2 读取Microsoft Excel文件183
- 6.3 与Web API交互184
- 6.4 与数据库交互186
- 6.5 本章小结187
- 第7章 数据清洗与准备188
- 7.1 处理缺失值188
- 7.1.1 过滤缺失值189
- 7.1.2 补全缺失值191
- 7.2 数据转换194
- 7.2.1 删除重复值194
- 7.2.2 使用函数或映射进行数据转换195
- 7.2.3 替代值197
- 7.2.4 重命名轴索引198
- 7.2.5 离散化和分箱199
- 7.2.6 检测和过滤异常值202
- 7.2.7 置换和随机抽样203
- 7.2.8 计算指标/虚拟变量204
- 7.3 字符串操作207
- 7.3.1 字符串对象方法208
- 7.3.2 正则表达式210
- 7.3.3 pandas中的向量化字符串函数213
- 7.4 本章小结215
- 第8章 数据规整:连接、联合与重塑216
- 8.1 分层索引216
- 8.1.1重排序和层级排序219
- 8.1.2 按层级进行汇总统计220
- 8.1.3 使用DataFrame的列进行索引220
- 8.2 联合与合并数据集221
- 8.2.1 数据库风格的DataFrame连接222
- 8.2.2 根据索引合并226
- 8.2.3 沿轴向连接230
- 8.2.4 联合重叠数据235
- 8.3 重塑和透视236
- 8.3.1 使用多层索引进行重塑236
- 8.3.2 将“长”透视为“宽”240
- 8.3.3 将“宽”透视为“长”242
- 8.4 本章小结244
- 第9章 绘图与可视化245
- 9.1 简明matplotlib API入门245
- 9.1.1 图片与子图246
- 9.1.2 颜色、标记和线类型250
- 9.1.3 刻度、标签和图例252
- 9.1.4 注释与子图加工255
- 9.1.5 将图片保存到文件258
- 9.1.6 matplotlib设置258
- 9.2 使用pandas和seaborn绘图259
- 9.2.1 折线图259
- 9.2.2 柱状图262
- 9.2.3 直方图和密度图266
- 9.2.4 散点图或点图269
- 9.2.5 分面网格和分类数据270
- 9.3 其他Python可视化工具271
- 9.4 本章小结272
- 第10章 数据聚合与分组操作274
- 10.1 GroupBy机制274
- 10.1.1 遍历各分组278
- 10.1.2 选择一列或所有列的子集279
- 10.1.3 使用字典和Series分组280
- 10.1.4 使用函数分组281
- 10.1.5 根据索引层级分组282
- 10.2 数据聚合282
- 10.2.1 逐列及多函数应用284
- 10.2.2 返回不含行索引的聚合数据287
- 10.3 应用:通用拆分-应用-联合288
- 10.3.1 压缩分组键290
- 10.3.2 分位数与桶分析291
- 10.3.3 示例:使用指定分组值填充缺失值292
- 10.3.4 示例:随机采样与排列294
- 10.3.5 示例:分组加权平均和相关性296
- 10.3.6 示例:逐组线性回归298
- 10.4 数据透视表与交叉表298
- 10.4.1 交叉表:crosstab301
- 10.5 本章小结302
- 第11章 时间序列303
- 11.1 日期和时间数据的类型及工具303
- 11.1.1 字符串与datetime互相转换305
- 11.2 时间序列基础307
- 11.2.1 索引、选择、子集308
- 11.2.2 含有重复索引的时间序列311
- 11.3 日期范围、频率和移位312
- 11.3.1 生成日期范围313
- 11.3.2 频率和日期偏置316
- 11.3.3 移位(前向和后向)日期317
- 11.4 时区处理320
- 11.4.1 时区的本地化和转换320
- 11.4.2 时区感知时间戳对象的操作323
- 11.4.3 不同时区间的操作324
- 11.5 时间区间和区间算术324
- 11.5.1 区间频率转换326
- 11.5.2 季度区间频率327
- 11.5.3 将时间戳转换为区间(以及逆转换)329
- 11.5.4 从数组生成PeriodIndex330
- 11.6 重新采样与频率转换332
- 11.6.1 向下采样334
- 11.6.2 向上采样与插值336
- 11.6.3 使用区间进行重新采样337
- 11.7 移动窗口函数339
- 11.7.1 指数加权函数342
- 11.7.2 二元移动窗口函数343
- 11.7.3 用户自定义的移动窗口函数344
- 11.8 本章小结344
- 第12章 高阶pandas346
- 12.1 分类数据346
- 12.1.1 背景和目标346
- 12.1.2 pandas中的Categorical类型348
- 12.1.3 使用Categorical对象进行计算350
- 12.1.4 分类方法352
- 12.2 高阶GroupBy应用355
- 12.2.1 分组转换和“展开”GroupBy355
- 12.2.2 分组的时间重新采样359
- 12.3 方法链技术361
- 12.3.1 pipe方法362
- 12.4 本章小结363
- 第13章 Python建模库介绍364
- 13.1 pandas与建模代码的结合364
- 13.2 使用Patsy创建模型描述367
- 13.2.1 Patsy公式中的数据转换369
- 13.2.2 分类数据与Patsy371
- 13.3 statsmodels介绍373
- 13.3.1 评估线性模型374
- 13.3.2 评估时间序列处理377
- 13.4 scikit-learn介绍377
- 13.5 继续你的教育381
- 第14章 数据分析示例382
- 14.1 从Bitly获取1.USA.gov数据382
- 14.1.1 纯Python时区计数383
- 14.1.2 使用pandas进行时区计数385
- 14.2 MovieLens 1M数据集392
- 14.2.1 测量评价分歧396
- 14.3 美国1880~2010年的婴儿名字397
- 14.3.1分析名字趋势402
- 14.4 美国农业部食品数据库410
- 14.5 2012年联邦选举委员会数据库416
- 14.5.1 按职业和雇主的捐献统计419
- 14.5.2 捐赠金额分桶421
- 14.5.3 按州进行捐赠统计423
- 14.6 本章小结424
- 附录A 高阶NumPy425
- 附录B 更多IPython系统相关内容457