利用Python进行数据分析 原书第2版
出版信息
Wes McKinney / 徐敬一 / 机械工业出版社 / 2018-7 / 119
内容简介
本书由Python pandas项目创始人Wes McKinney亲笔撰写,详细介绍利用Python进行操作、处理、清洗和规整数据等方面的具体细节和基本要点。第2版针对Python 3.6进行全面修订和更新,涵盖新版的pandas、NumPy、IPython和Jupyter,并增加大量实际案例,可以帮助你高效解决一系列数据分析问题。
第2版中的主要更新包括:
• 所有的代码,包括把Python的教程更新到了Python 3.6版本(第1版中使用的是Python 2.7)
• 更新了Python第三方发布版Anaconda和其他所需Python包的安装指引
• 更新pandas库到2017年的新版
• 新增一章,关于更多高级pandas工具和一些使用提示
• 新增statsmodels和scikit-learn的简明使用介绍
作者简介
Wes McKinney 是流行的Python开源数据分析库pandas的创始人。他是一名活跃的演讲者,也是Python数据社区和Apache软件基金会的Python/C 开源开发者。目前他在纽约从事软件架构师工作。
目录
前言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.3matplotlib11
1.3.4 IPython与Jupyter11
1.3.5 SciPy12
1.3.6scikit-learn12
1.3.7statsmodels13
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.9 matplotlib集成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.2DataFrame128
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