Python数据分析实战
作者:(意)内利著 杜春晓译
出版时间:2016年版
内容简介
Python 简单易学,拥有丰富的库,并且具有极强的包容性。本书展示了如何利用Python 语言的强大功能,以小的编程代价进行数据的提取、处理和分析,主要内容包括:数据分析和Python 的基本介绍,NumPy 库,pandas 库,如何使用pandas 读写和提取数据,用matplotlib 库和scikit-learn 库分别实现数据可视化和机器学习,以实例演示如何从原始数据获得信息、D3 库嵌入和手写体数字的识别。
目录
目录
致谢
译者序
第1 章 数据分析简介 1
1.1 数据分析 1
1.2 数据分析师的知识范畴 2
1.2.1 计算机科学 2
1.2.2 数学和统计学 3
1.2.3 机器学习和人工智能 3
1.2.4 数据来源领域 3
1.3 理解数据的性质 4
1.3.1 数据到信息的转变 4
1.3.2 信息到知识的转变 4
1.3.3 数据的类型 4
1.4 数据分析过程 4
1.4.1 问题定义 5
1.4.2 数据抽取 6
1.4.3 数据准备 6
1.4.4 数据探索和可视化 7
1.4.5 预测模型 7
1.4.6 模型评估 8
1.4.7 部署 8
1.5 定量和定性数据分析 9
1.6 开放数据 9
1.7 Python 和数据分析 11
1.8 结论 11
第2 章 Python 世界简介 12
2.1 Python——编程语言 12
2.2 Python——解释器 13
2.2.1 Cython 14
2.2.2 Jython 14
2.2.3 PyPy 14
2.3 Python 2 和Python 3 14
2.4 安装Python 15
2.5 Python 发行版 15
2.5.1 Anaconda 15
2.5.2 Enthought Canopy 16
2.5.3 Python(x,y) 17
2.6 使用Python 17
2.6.1 Python shell 17
2.6.2 运行完整的Python 程序 17
2.6.3 使用IDE 编写代码 18
2.6.4 跟Python 交互 18
2.7 编写Python 代码 18
2.7.1 数学运算 18
2.7.2 导入新的库和函数 19
2.7.3 函数式编程 21
2.7.4 缩进 22
2.8 IPython 23
2.8.1 IPython shell 23
2.8.2 IPython Qt-Console 24
2.9 PyPI 仓库——Python 包索引 25
2.10 多种Python IDE 26
2.10.1 IDLE 26
2.10.2 Spyder 27
2.10.3 Eclipse(pyDev) 27
2.10.4 Sublime 28
2.10.5 Liclipse 29
2.10.6 NinjaIDE 29
2.10.7 Komodo IDE 29
2.11 SciPy 30
2.11.1 NumPy 30
2.11.2 pandas 30
2.11.3 matplotlib 31
2.12 小结 31
第3 章 NumPy 库 32
3.1 NumPy 简史 32
3.2 NumPy 安装 32
3.3 ndarray:NumPy 库的心脏 33
3.3.1 创建数组 34
3.3.2 数据类型 34
3.3.3 dtype 选项 35
3.3.4 自带的数组创建方法 36
3.4 基本操作 37
3.4.1 算术运算符 37
3.4.2 矩阵积 38
3.4.3 自增和自减运算符 39
3.4.4 通用函数 40
3.4.5 聚合函数 40
3.5 索引机制、切片和迭代方法 41
3.5.1 索引机制 41
3.5.2 切片操作 42
3.5.3 数组迭代 43
3.6 条件和布尔数组 45
3.7 形状变换 45
3.8 数组操作 46
3.8.1 连接数组 46
3.8.2 数组切分 47
3.9 常用概念 49
3.9.1 对象的副本或视图 49
3.9.2 向量化 50
3.9.3 广播机制 50
3.10 结构化数组 52
3.11 数组数据文件的读写 53
3.11.1 二进制文件的读写 54
3.11.2 读取文件中的列表形式数据 54
3.12 小结 55
第4 章 pandas 库简介 56
4.1 pandas:Python 数据分析库 56
4.2 安装 57
4.2.1 用Anaconda 安装 57
4.2.2 用PyPI 安装 58
4.2.3 在Linux 系统的安装方法 58
4.2.4 用源代码安装 58
4.2.5 Windows 模块仓库 59
4.3 测试pandas 是否安装成功 59
4.4 开始pandas 之旅 59
4.5 pandas 数据结构简介 60
4.5.1 Series 对象 60
4.5.2 DataFrame 对象 66
4.5.3 Index 对象 72
4.6 索引对象的其他功能 74
4.6.1 更换索引 74
4.6.2 删除 75
4.6.3 算术和数据对齐 77
4.7 数据结构之间的运算 78
4.7.1 灵活的算术运算方法 78
4.7.2 DataFrame 和Series 对象之间的运算 78
4.8 函数应用和映射 79
4.8.1 操作元素的函数 79
4.8.2 按行或列执行操作的函数 80
4.8.3 统计函数 81
4.9 排序和排位次 81
4.10 相关性和协方差 84
4.11 NaN 数据 85
4.11.1 为元素赋NaN 值 85
4.11.2 过滤NaN 86
4.11.3 为NaN 元素填充其他值 86
4.12 等级索引和分级 87
4.12.1 重新调整顺序和为层级排序 89
4.12.2 按层级统计数据 89
4.13 小结 90
第5 章 pandas:数据读写 91
5.1 I/O API 工具 91
5.2 CSV 和文本文件 92
5.3 读取CSV 或文本文件中的数据 92
5.3.1 用RegExp 解析TXT 文件 94
5.3.2 从TXT 文件读取部分数据 96
5.3.3 往CSV 文件写入数据 97
5.4 读写HTML 文件 98
5.4.1 写入数据到HTML 文件 99
5.4.2 从HTML 文件读取数据 100
5.5 从XML 读取数据 101
5.6 读写Microsoft Excel 文件 103
5.7 JSON 数据 105
5.8 HDF5 格式 107
5.9 pickle——Python 对象序列化 108
5.9.1 用cPickle 实现Python 对象序列化 109
5.9.2 用pandas 实现对象序列化 109
5.10 对接数据库 110
5.10.1 SQLite3 数据读写 111
5.10.2 PostgreSQL 数据读写 112
5.11 NoSQL 数据库MongoDB 数据读写 114
5.12 小结 116
第6 章 深入pandas:数据处理 117
6.1 数据准备 117
6.2 拼接 122
6.2.1 组合 124
6.2.2 轴向旋转 125
6.2.3 删除 127
6.3 数据转换 128
6.3.1 删除重复元素 128
6.3.2 映射 129
6.4 离散化和面元划分 132
6.5 排序 136
6.6 字符串处理 137
6.6.1 内置的字符串处理方法 137
6.6.2 正则表达式 139
6.7 数据聚合 140
6.7.1 GroupBy 141
6.7.2 实例 141
6.7.3 等级分组 142
6.8 组迭代 143
6.8.1 链式转换 144
6.8.2 分组函数 145
6.9 高级数据聚合 145
6.10 小结 148
第7 章 用matplotlib 实现数据可视化 149
7.1 matplotlib 库 149
7.2 安装 150
7.3 IPython 和IPython QtConsole 150
7.4 matplotlib 架构 151
7.4.1 Backend 层 152
7.4.2 Artist 层 152
7.4.3 Scripting 层(pyplot) 153
7.4.4 pylab 和pyplot 153
7.5 pyplot 154
7.5.1 生成一幅简单的交互式图表 154
7.5.2 设置图形的属性 156
7.5.3 matplotlib 和NumPy 158
7.6 使用kwargs 160
7.7 为图表添加更多元素 162
7.7.1 添加文本 162
7.7.2 添加网格 165
7.7.3 添加图例 166
7.8 保存图表 168
7.8.1 保存代码 169
7.8.2 将会话转换为HTML 文件 170
7.8.3 将图表直接保存为图片 171
7.9 处理日期值 171
7.10 图表类型 173
7.11 线性图 173
7.12 直方图 180
7.13 条状图 181
7.13.1 水平条状图 183
7.13.2 多序列条状图 184
7.13.3 为pandas DataFrame 生成多序列条状图 185
7.13.4 多序列堆积条状图 186
7.13.5 为pandas DataFrame 绘制堆积条状图 189
7.13.6 其他条状图 190
7.14 饼图 190
7.15 高级图表 193
7.15.1 等值线图 193
7.15.2 极区图 195
7.16 mplot3d 197
7.16.1 3D 曲面 197
7.16.2 3D 散点图 198
7.16.3 3D 条状图 199
7.17 多面板图形 200
7.17.1 在其他子图中显示子图 200
7.17.2 子图网格 202
7.18 小结 204
第8 章 用scikit-learn 库实现机器学习 205
8.1 scikit-learn 库 205
8.2 机器学习 205
8.2.1 有监督和无监督学习 205
8.2.2 训练集和测试集 206
8.3 用scikit-learn 实现有监督学习 206
8.4 Iris 数据集 206
8.5 K-近邻分类器 211
8.6 Diabetes 数据集 214
8.7 线性回归:最小平方回归 215
8.8 支持向量机 219
8.8.1 支持向量分类 219
8.8.2 非线性SVC 223
8.8.3 绘制SVM 分类器对Iris 数据集的分类效果图 225
8.8.4 支持向量回归 227
8.9 小结 229
第9 章 数据分析实例——气象数据 230
9.1 待检验的假设:靠海对气候的影响 230
9.2 数据源 233
9.3 用IPython Notebook 做数据分析 234
9.4 风向频率玫瑰图 246
9.5 小结 251
第10 章 IPython Notebook 内嵌JavaScript 库D3 252
10.1 开放的人口数据源 252
10.2 JavaScript 库D3 255
10.3 绘制簇状条状图 259
10.4 地区分布图 262
10.5 2014 年美国人口地区分布图 266
10.6 小结 270
第11 章 识别手写体数字 271
11.1 手写体识别 271
11.2 用scikit-learn 识别手写体数字 271
11.3 Digits 数据集 272
11.4 学习和预测 274
11.5 小结 276
附录A 用LaTeX 编写数学表达式 277
附录B 开放数据源 287