第1章 Python数据整理入门 1
1.1 引言 1
1.2 Python数据整理 3
1.3 列表、集合、字典、元组和字符串 3
1.3.1 列表 4
练习1:访问列表成员 4
练习2:生成列表 5
练习3:遍历列表并检查成员 7
练习4:列表排序 8
练习5:生成随机列表 9
活动1:处理列表 10
1.3.2 集合 11
1.3.3 字典 13
练习6:访问和设置字典中的值 13
练习7:遍历字典 14
练习8:再次讨论唯一值列表问题 14
练习9:删除字典中的值 15
练习10:字典推导式 16
1.3.4 元组 16
练习11:处理元组 17
1.3.5 字符串 18
练习12:访问字符串 18
练习13:字符串切片 19
练习14:字符串拆分与合并 20
活动2:分析多行字符串并生成唯一单词数量 21
1.4 小结 22
第2章 高级数据结构和文件处理 23
2.1 引言 23
2.2 高级数据结构 23
2.2.1 迭代器 24
练习15:迭代器介绍 24
2.2.2 栈 25
练习16:在Python中实现栈 26
练习17:使用用户定义的方法实现栈 26
2.2.3 Lambda表达式 28
练习18:用Lambda表达式证明三角恒等式 28
练习19:用于排序的Lambda表达式 29
练习20:多元素成员检查 30
2.2.4 队列 30
练习21:在Python中实现队列 31
活动3:Permutations、迭代器、Lambda、列表 32
2.3 Python基本文件操作 33
练习22:写入和读取环境变量 33
练习23:打开和关闭文件 34
练习24:逐行读取文件 36
练习25:写入文件 37
活动4:设计专属CSV解析器 38
2.4 小结 39
第3章 NumPy、pandas和Matplotlib简介 40
3.1 引言 40
3.2 NumPy数组操作 40
练习26:从列表中创建NumPy数组 41
练习27:两个NumPy数组相加 42
练习28:NumPy数组的数学运算 43
练习29:NumPy数组的高级数学运算 43
练习30:使用arange和linspace生成数组 44
练习31:创建多维数组 45
练习32:二维数组的维度、形状、大小和数据类型 46
练习33:全零、全一、随机、单位矩阵和向量 46
练习34:reshape和ravel函数 48
练习35:索引和切片 49
练习36:数组操作(数组-数组、数组-标量和通用函数) 52
3.3 pandas的DataFrame 54
练习37:创建pandas序列 55
练习38:pandas序列和数据处理 56
练习39:创建pandas DataFrame 57
练习40:查看部分DataFrame 58
练习41:创建和删除新的列或行 61
3.4 NumPy和pandas的统计与可视化 63
3.4.1 基本描述性统计(用于可视化的Matplotlib库) 63
练习42:通过散点图介绍Matplotlib 64
3.4.2 统计指标的定义——集中趋势和分布 65
3.4.3 随机变量与概率分布 66
3.4.4 统计和可视化中的数据整理 68
3.4.5 DataFrame的基本描述性统计计算 68
练习43:从均匀分布生成随机数 68
练习44:从二项分布和条形图生成随机数 69
练习45:从正态分布和直方图生成随机数 70
练习46:从 DataFrame计算描述性统计 71
练习47:内置绘图实用工具 74
活动5:从 CSV文件生成统计数据 75
3.5 小结 75
第4章 深入学习Python数据整理 77
4.1 引言 77
4.2 选取子集、过滤和分组 77
4.2.1 选取子集 78
练习48:Excel文件加载和检查超市的销售数据 78
练习49:unique函数 80
4.2.2 条件选择与布尔过滤 81
练习50:设定和重置索引 84
4.2.3 分组 86
练习51:GroupBy方法 86
4.3 处理缺失值和检测异常值 89
4.3.1 pandas中的缺失值 89
练习52:用fillna填充缺失值 91
练习53:用dropna删除缺失值 93
4.3.2 使用简单的统计测试进行异常值检测 94
4.4 合并数据的方法:concat、merge和join 96
练习54:concat方法 96
练习55:merge方法(通过公共键) 97
练习56:join方法 100
4.5 pandas的实用方法 102
4.5.1 随机抽样 102
练习57:使用sample方法随机抽样 102
4.5.2 value_counts方法 103
4.5.3 数据透视表功能 104
练习58:按列值排序——sort_values方法 105
练习59:使用apply方法实现用户自定义函数的灵活性 107
活动6:成人收入数据集的使用 109
4.6 小结 110
第5章 适应不同类型的数据源 112
5.1 引言 112
5.2 从不同的基于文本的(和非文本的)源中读取数据 112
5.2.1 本章提供的数据文件 113
5.2.2 本章需安装的库 113
5.2.3 从CSV文件中读取文件 113
练习60:从缺少表头的CSV文件中读取数据 113
练习61:读取不以逗号为分隔符的CSV文件 115
练习62:重置CSV文件的表头 116
练习63:读取CSV文件时跳过初始行和页脚 116
练习64:结合使用skiprows和nrows来读取小块数据 118
5.2.4 使用sheet_name从Excel文件读取数据并处理不同的sheet_name 120
5.2.5 从文本文件中读取数据 121
练习65:读取一般分隔的文本文件 121
5.2.6 从非文本源中读取数据 121
练习66:从URL中直接读取HTML表 121
练习67:从JSON文件中读取数据 123
练习68:从PDF文件读取表格数据 124
5.3 Beautiful Soup 4和网页解析简介 126
练习69:使用BeautifulSoup读取HTML文件并提取内容 127
练习70:DataFrame和BeautifulSoup 131
练习71:以 Excel文件格式导出DataFrame 132
练习72:使用bs4栈文档中的URL 133
活动7:从网页读取表格数据并创建DataFrame 133
5.4 小结 134
第6章 学习数据整理的隐藏秘密 135
6.1 引言 135
6.2 高级列表推导式和zip 函数 136
6.2.1 生成器表达式简介 136
练习73:生成器表达式 136
练习74:一行生成器表达式 137
练习75:提取包含单个单词的列表 138
6.2.2 zip函数 140
练习76:zip函数 140
练习77:处理杂乱的数据 140
6.3 数据格式化 141
6.3.1 %运算符 141
6.3.2 使用format 函数 143
练习78:使用{}表示数据 144
6.4 识别并清除异常值 145
练习79:数值数据中的异常值 146
练习80:使用z-score去除异常值 148
练习81:字符串的模糊匹配 149
活动8:异常值和缺失数据的处理 150
6.6 小结 151
第7章 高级网络抓取和数据收集 152
7.1 引言 152
7.2 网络抓取和BeautifulSoup库的基础 152
7.2.1 Python中的库 152
7.2.2 requests库 153
练习82:使用requests库从Wikipedia主页获取响应 153
练习83:检查网络请求的状态 154
练习84:创建一个函数来解码响应的内容并检查其长度 155
7.2.3 BeautifulSoup库 156
练习85:从BeautifulSoup对象中提取人类可读的文本 156
练习86:使用高级bs4技术提取相关文本 160
练习87:创建一个紧凑函数来从wikipedia主页提取“On this day”文本 163
7.3 从XML读取数据 164
练习88:创建XML文件并读取XML元素对象 164
练习89:查找树(元素)中的各种数据元素 165
7.3.1 从本地XML文件读取数据到ElementTree对象 166
练习90:遍历树,找到根,并探索所有子节点的标签和属性 166
练习91:使用text方法提取有意义的数据 167
7.3.2 使用循环提取和输出人均GDP信息 168
练习92:查找并输出每个国家的所有邻国 169
练习93:通过网络抓取获得的XML数据的简单使用演示 169
7.4 从API读取数据 172
7.4.1 定义基URL(或API端点) 172
练习94:定义和测试从API提取国家数据的函数 173
7.4.2 使用内置的JSON库读取和检查数据 174
7.4.3 输出所有数据元素 175
7.4.4 使用函数提取包含关键信息的DataFrame 176
练习95:通过建立一个国家信息的小型数据库来测试这个函数 177
7.5 正则表达式的基础 178
7.5.1 网络抓取中的正则表达式 178
练习96:使用match方法检查模式是否与字符串或序列匹配 179
7.5.2 使用compile方法创建正则表达式程序 179
练习97:编译程序以匹配对象 180
练习98:在匹配中使用附加参数来检查特定位置的匹配 180
7.5.3 正则表达式中的search方法 182
练习99:正则表达式中的search方法 182
练习100:使用Match对象的span方法来定位匹配模式的位置 182
练习101:使用search进行单字符模式匹配的示例 183
练习102:字符串开头或结尾的模式匹配示例 184
7.5.4 多种匹配模式 185
练习103:多字符模式匹配示例 185
练习104:贪婪匹配与非贪婪匹配 186
练习105:控制重复次数的匹配 187
练习106:匹配字符集 188
练习107:在正则表达式中使用OR运算符 190
7.5.5 findall方法 191
活动9:从古腾堡提取Top 100的电子书 191
活动10:通过读取API构建自己的电影数据库 192
7.6 小结 193
第8章 关系数据库管理系统和结构化查询语言 195
8.1 引言 195
8.2 RDBMS和SQL概述 196
8.2.1 RDBMS是如何组织的 196
8.2.2 SQL 196
8.3 使用RDBMS(MySQL/PostgreSQL/SQLite) 199
8.3.1 使用SQLite处理单个表 199
练习108:连接到SQLite中的数据库 199
练习109:SQLite中的DDL和DML命令 200
练习110:对数据库中的值进行排序 202
练习111:更改表的结构并更新新添加的字段 202
练习112:对表中的值进行分组 203
8.3.2 数据库中的关系映射 204
练习113:删除行 208
练习114:RDBMS和DataFrame 209
活动11:从数据库正确检索数据 210
8.4 小结 212
第9章 数据整理在现实生活中的应用 213
9.1 引言 213
9.2 将所学知识应用于现实生活中的数据整理任务 213
活动12:数据整理任务——修复联合国数据 214
活动13:数据整理任务——清理GDP数据 215
活动14:数据整理任务——合并联合国数据和GDP数据 216
活动15:数据整理任务——将新数据连接到数据库 217
9.3 数据整理拓展延伸 217
9.3.1 成为数据科学家所需的额外技能 217
9.3.2 大数据和云技术的基础知识 218
9.3.3 数据整理的地位 219
9.3.4 掌握机器学习的技巧和窍门 220
9.4 小结 221
附录 活动实施步骤 222