本书主要从实战角度讲述了如何处理、分析和可视化数据,如何用数据建立各种统计学或机器学习模型。本书首先介绍如何使用Python代码获取、转换和分析数据;接着讲述如何使用Python中的数据结构和第三方库;然后展示如何以各种格式加载数据,如何对数据进行分组与汇总,如何创建图表和可视化数据;最后讨论如何解决实际的问题。
本书适合希望使用Python处理和分析数据的开发人员阅读,也可供计算机相关专业的师生参考。
1.实战经验丰富:本书提供了大量真实案例和项目经验,展示了 Python 在获取、转换和分析数据方面的功能,帮助读者深入了解Python数据科学的应用场景和实际操作。
2.覆盖多个领域:本书旨在展示如何充分利用Python实现快速的数据处理,不仅涵盖了数据处理、分析和可视化,还涉及统计学和机器学习等多个领域,为读者提供了一个全面的数据科学知识体系。
3.深入浅出:作者通过生动的语言和详细的解释,将复杂的数据科学概念和算法简单化,让读者轻松上手,快速掌握Python数据科学的核心技能。
4.通过本书,你不仅会深入理解 Python 数据结构及其强大的第三方库,还会掌握如何聚合、合并、可视化和分析数据等。在企业管理、市场营销和金融等领域中,基于Python可以实现快速的数据处理。
尤里·瓦西列夫(Yuli Vasiliev)是一名程序员、作家,精通开源开发、数据结构和数据库后端开发。他是 Natural Language Processing with Python and spaCy一书的作者。
目 录
第 1章 数据的基础知识 1
1.1 数据类别 1
1.1.1 非结构化数据 1
1.1.2 结构化数据 2
1.1.3 半结构化数据 3
1.1.4 时间序列数据 4
1.2 数据来源 5
1.2.1 API 6
1.2.2 网页 7
1.2.3 数据框 7
1.2.4 文件 8
1.3 数据处理流程 8
1.3.1 数据获取 9
1.3.2 数据清洗 9
1.3.3 数据变换 10
1.3.4 数据分析 10
1.3.5 数据存储 11
1.4 Python特有的方式 11
1.5 总结 12
第 2章 Python数据结构 13
2.1 列表 13
2.1.1 创建列表 14
2.1.2 使用常见列表对象方法 14
2.1.3 使用切片符号 15
2.1.4 用列表实现队列 16
2.1.5 用列表实现栈 18
2.1.6 用列表和栈进行自然语言处理 18
2.1.7 使用列表推导式改进算法 20
2.2 元组 24
2.2.1 元组列表 24
2.2.2 不变性 25
2.3 字典 26
2.3.1 字典列表 26
2.3.2 使用setdefault()在字典中添加元素 26
2.3.3 将JSON文件加载到字典中 28
2.4 集合 29
2.4.1 从序列中删除重复项 29
2.4.2 实现常见集合运算 30
2.5 总结 32
第3章 Python第三方库 33
3.1 NumPy库 33
3.1.1 安装NumPy库 34
3.1.2 创建NumPy数组 34
3.1.3 逐点运算 34
3.1.4 使用NumPy统计函数 35
3.2 pandas库 36
3.2.1 安装pandas库 36
3.2.2 序列 36
3.2.3 数据框 39
3.3 scikit-learn库 47
3.3.1 安装scikit-learn库 47
3.3.2 获得样本数据 48
3.3.3 把样本数据载入数据框 48
3.3.4 把数据分成训练数据集和测试数据集 48
3.3.5 把文本转化为数值特征向量 49
3.3.6 训练和评估模型 50
3.3.7 在新数据中做预测 50
3.4 总结 51
第4章 从文件和API访问数据 52
4.1 使用Python函数open()导入数据 52
4.1.1 文本文件 52
4.1.2 表格数据文件 54
4.1.3 二进制文件 56
4.2 将数据导出到文件 57
4.3 访问远程文件和API 58
4.3.1 HTTP请求的工作原理 58
4.3.2 urllib3库 59
4.3.3 Requests库 61
4.4 将数据移入或移出数据框 62
4.4.1 导入嵌套的JSON结构 62
4.4.2 将数据框转换为JSON文档 63
4.4.3 使用pandas-datareader库将在线数据加载到数据框中 65
4.5 总结 66
第5章 使用数据库 67
5.1 关系数据库 67
5.1.1 了解SQL语句 68
5.1.2 MySQL入门 69
5.1.3 定义数据库结构 69
5.1.4 将数据插入数据库中 72
5.1.5 查询数据库数据 73
5.1.6 使用数据库分析工具 75
5.2 NoSQL数据库 81
5.2.1 Redis数据库 81
5.2.2 MongoDB数据库 83
5.3 总结 85
第6章 聚合数据 86
6.1 要聚合的数据 86
6.2 合并数据框 88
6.3 分组和聚合数据 90
6.3.1 按多索引查看特定值 91
6.3.2 通过切片获得一系列值 93
6.3.3 多索引多层次切片 93
6.3.4 添加总计 94
6.3.5 添加小计 95
6.4 选择组中的所有行 96
6.5 总结 97
第7章 合并数据 98
7.1 合并Python数据结构 98
7.1.1 使用“+”合并列表和元组 98
7.1.2 使用“**”合并字典 100
7.1.3 合并两个结构的对应行 100
7.1.4 列表的多种合并方式 102
7.2 合并NumPy数组 104
7.3 合并pandas数据结构 106
7.3.1 连接数据框 106
7.3.2 合并两个数据框 110
7.4 总结 114
第8章 数据可视化 115
8.1 常见可视化形式 115
8.1.1 折线图 115
8.1.2 柱状图 116
8.1.3 饼状图 117
8.1.4 直方图 118
8.2 使用Matplotlib库绘制图 118
8.2.1 安装Matplotlib库 118
8.2.2 使用matplotlib.pyplot 119
8.2.3 使用Figure和Axes对象 120
8.3 总结 124
第9章 分析空间数据 125
9.1 获取空间数据 125
9.1.1 将人可读的地址转换为地理坐标 125
9.1.2 获取移动对象的地理坐标 126
9.2 基于geopy库和Shapely库的空间数据分析 129
9.2.1 查找最近的对象 129
9.2.2 在特定区域中查找对象 131
9.2.3 结合两种方法 133
9.3 结合空间数据和非空间数据 134
9.3.1 提取非空间属性 134
9.3.2 合并空间数据集和非空间数据集 136
9.4 总结 137
第 10章 分析时间序列数据 139
10.1 规则时间序列与不规则时间序列 139
10.2 常见的时间序列分析技术 141
10.2.1 计算百分比变化 142
10.2.2 滚动窗口计算 143
10.2.3 计算滚动平均值的百分比变化 144
10.3 多元时间序列 144
10.3.1 处理多元时间序列 145
10.3.2 分析变量之间的依赖性 146
10.4 总结 150
第 11章 从数据中挖掘信息 151
11.1 关联法则 151
11.1.1 支持度 152
11.1.2 置信度 152
11.1.3 提升度 153
11.2 Apriori算法 153
11.2.1 创建交易数据集 154
11.2.2 识别频繁项集 155
11.2.3 生成关联规则 156
11.3 可视化关联规则 157
11.4 从关联规则获得可操作信息 160
11.4.1 生成推荐信息 160
11.4.2 基于关联规则的折扣规划 161
11.5 总结 163
第 12章 数据分析的机器学习 164
12.1 为什么选择机器学习 164
12.2 机器学习的类型 165
12.2.1 有监督学习 165
12.2.2 无监督学习 166
12.3 机器学习的工作原理 166
12.3.1 训练数据 166
12.3.2 统计模型 167
12.3.3 预测数据 167
12.4 情感分析示例:产品评论分类 168
12.4.1 获取产品评论 168
12.4.2 清理数据 169
12.4.3 拆分和转换数据 171
12.4.4 训练模型 173
12.4.5 评估模型 173
12.5 预测股票走势 175
12.5.1 获取数据 176
12.5.2 从连续数据中提取特征 177
12.5.3 生成输出变量 178
12.5.4 训练和评估模型 179
12.6 总结 180