本书系统介绍了如何入门Python并利用Python进行数据处理与机器学习实战。本书从Python的基础安装开始介绍,系统梳理了Python的入门语法知识,归纳介绍了图像处理、数据文件读写、数据库操作等Python基本技能;然后详细讲解了NumPy、Matplotlib、Pandas、Scipy、Scikit-learn等在数据处理、机器学习领域的应用。代码实例涵盖网络爬虫、数据处理、视觉识别、机器学习等应用领域。作者还精心创作了语感训练100题、Python内置函数(类)手册、从新手到高手的100个模块等内容,以帮助读者更好地学习并掌握Python这一工具。
构建从Python入门到数据分析到机器学习的路线图,入门有章可循;
1.讲解独到,常见盲点趣解析
作者基于多年的经验积累,善于总结概括初学Python过程中的误区。
2.内容全面,常用工具全涵盖
书中介绍的Python工具包覆盖Numpy、Matplotlib、Pandas、SciPy、Scikit-Learn,方便读者拓展实用技能、掌握工作利器。
3.拓展训练,重点知识有强化
语感训练100题、Python内置函数(类)手册、从新手到高手的100个模块,强化知识点的掌握。
4.代码完整,随时动手可复现
本书提供了完整、可验证的代码,方便读者动手练习并强化理解。
许向武,CSDN博客专家,2019 年度CSDN博客之星,个人主页访问量超百万,资深程序员,使用Python 语言编程超过10年,长期从事数据处理工作,服务于多家科研机构和科研项目,曾参与过子午工程、风云系列气象卫星、空间探测卫星等多个项目的数据处理,任山东远思信息科技有限公司CEO。
前言 1
本书面向的读者对象 3
代码和命令的排版约定 3
阅读和学习的方法 4
资源下载与技术交流 4
致谢 5
第 1章 零基础必读 1
1.1 安装Python 1
1.1.1 Python的各种发行版 1
1.1.2 安装与运行 2
1.1.3 重新安装 4
1.2 以交互方式运行Python代码 4
1.2.1 使用Python IDLE交互操作 4
1.2.2 使用IPython交互操作 5
1.3 以脚本方式运行Python程序 6
1.3.1 运行 6
1.3.2 调试 7
1.4 使用pip安装和管理模块 7
1.4.1 使用pip的两种方式 7
1.4.2 安装模块 8
1.4.3 卸载模块 9
1.4.4 查看模块列表和模块信息 9
第 2章 Python入门 11
2.1 基础语法 11
2.1.1 一条绝对原则——缩进 11
2.1.2 两个顶级定义——函数和类 12
2.1.3 三种语句结构——顺序、分支和循环 14
2.1.4 四种数据类型——整型、浮点型、布尔型、字符串 16
2.1.5 五大内置类——列表、字典、元组、集合、字符串 18
2.1.6 十组最常用的内置函数 22
2.2 进阶语法 30
2.2.1 函数的参数 30
2.2.2 异常捕获与处理 32
2.2.3 三元表达式 34
2.2.4 列表推导式 34
2.2.5 断言 35
2.2.6 with-as 36
2.2.7 lambda函数 36
2.2.8 迭代器和生成器 37
2.2.9 装饰器 38
2.2.10 闭包 39
2.3 面向对象编程 40
2.3.1 类和对象 40
2.3.2 类的成员 41
2.3.3 静态变量和实例变量 42
2.3.4 面向对象三要素 43
2.3.5 抽象类 46
2.3.6 单实例模式 47
2.4 编码规范 47
2.4.1 编码格式声明 49
2.4.2 文档字符串 49
2.4.3 导入模块 50
2.4.4 常量和全局变量定义 50
2.4.5 当前脚本代码执行 50
2.4.6 命名规范 51
2.4.7 缩进 51
2.4.8 注释 51
2.4.9 引号 52
2.4.10 空行和空格 52
2.5 语感训练100题 53
第3章 Python基本技能 74
3.1 时间和日期处理 74
3.1.1 time模块 74
3.1.2 datetime模块 77
3.2 图像处理 79
3.2.1 PIL和pillow模块 79
3.2.2 PyOpenCV模块 85
3.3 数据文件读写 87
3.3.1 读写Excel文件 88
3.3.2 读写CSV文件 91
3.3.3 读写hdf文件 92
3.3.4 读写netCDF文件 93
3.4 数据库操作 95
3.4.1 使用SQLite数据库 95
3.4.2 使用MySQL数据库 98
3.4.3 使用MongoDB数据库 99
3.5 数据抓取 101
3.5.1 urllib模块 101
3.5.2 requests模块 103
3.6 数据解析 106
3.6.1 使用Beautifulsoup解析html/xml数据 106
3.6.2 使用正则表达式解析文本数据 111
3.7 系统相关操作 115
3.7.1 os模块 115
3.7.2 sys模块 118
3.8 线程技术 120
3.8.1 戏说线程和进程 120
3.8.2 创建、启动和管理线程 121
3.8.3 线程同步 123
3.8.4 线程池 129
3.9 进程技术 130
3.9.1 再论线程和进程 130
3.9.2 创建、启动和管理进程 131
3.9.3 进程间通信 133
3.9.4 进程池 142
3.9.5 MapReduce模型 143
3.10 源码打包 144
3.10.1 打包成可执行文件 144
3.10.2 打包成模块安装文件 146
第4章 科学计算基础软件包NumPy 149
4.1 NumPy概览 149
4.1.1 安装和导入 150
4.1.2 列表VS数组 150
4.1.3 数组的数据类型 151
4.1.4 数组的属性 152
4.1.5 数组的方法 153
4.1.6 维、秩、轴 153
4.1.7 广播和矢量化 155
4.2 创建数组 156
4.2.1 蛮力构造法 156
4.2.2 特殊数值法 157
4.2.3 随机数值法 158
4.2.4 定长分割法 160
4.2.5 重复构造法 161
4.2.6 网格构造法 162
4.2.7 自定义数据类型 163
4.3 操作数组 164
4.3.1 索引和切片 164
4.3.2 改变结构 166
4.3.3 合并 168
4.3.4 拆分 169
4.3.5 复制 169
4.3.6 排序 170
4.3.7 查找 171
4.3.8 筛选 172
4.3.9 数组I/O 174
4.4 常用函数 176
4.4.1 常量 176
4.4.2 命名空间 177
4.4.3 数学函数 178
4.4.4 统计函数 181
4.4.5 插值函数 183
4.4.6 多项式拟合函数 184
4.4.7 自定义广播函数 186
4.5 掩码数组 187
4.5.1 创建掩码数组 188
4.5.2 访问掩码数组 190
4.6 矩阵对象 193
4.6.1 创建矩阵 193
4.6.2 矩阵特有属性 194
4.6.3 矩阵乘法 195
4.7 随机抽样子模块 197
4.7.1 随机数 197
4.7.2 随机抽样 198
4.7.3 正态分布 198
4.7.4 伪随机数的深度思考 199
第5章 应用最广泛的绘图库Matplotlib 201
5.1 快速入门 201
5.1.1 画布 202
5.1.2 子图与子图布局 202
5.1.3 坐标轴与刻度和名称 204
5.1.4 图例和文本标注 205
5.1.5 显示和保存 206
5.1.6 两种使用风格 207
5.2 丰富多样的图形 209
5.2.1 曲线图 210
5.2.2 散点图 212
5.2.3 等值线图 213
5.2.4 矢量合成图 214
5.2.5 直方图 216
5.2.6 饼图 217
5.2.7 箱线图 218
5.2.8 绘制图像 219
5.2.9 极坐标绘图 221
5.3 风格和样式 222
5.3.1 画布设置 222
5.3.2 子图布局 223
5.3.3 颜色 224
5.3.4 线条和点的样式 225
5.3.5 坐标轴 227
5.3.6 刻度 230
5.3.7 文本 234
5.3.8 图例 236
5.3.9 网格设置 237
5.4 Matplotlib扩展 237
5.4.1 使用Basemap绘制地图 237
5.4.2 3D绘图工具包 238
第6章 结构化数据分析工具Pandas 241
6.1 Pandas概览 241
6.1.1 安装和使用 241
6.1.2 Pandas的特点 242
6.2 Pandas的数据结构 243
6.2.1 索引数组Index 243
6.2.2 带标签的一维同构数组Series 244
6.2.3 带标签的二维异构表格DataFrame 245
6.3 基本操作 248
6.3.1 数据预览 248
6.3.2 数据选择 250
6.3.3 改变数据结构 252
6.3.4 改变数据类型 254
6.3.5 广播与矢量化运算 254
6.3.6 行列级广播函数 256
6.4 高级应用 257
6.4.1 分组 257
6.4.2 聚合 259
6.4.3 层次化索引 261
6.4.4 表级广播函数 264
6.4.5 日期时间索引对象 265
6.4.6 数据可视化 266
6.4.7 数据I/O 269
6.5 Pandas扩展 272
6.5.1 统计扩展模块Statsmodels 272
6.5.2 可视化扩展Seaborn 275
第7章 科学计算工具包SciPy 277
7.1 SciPy概览 277
7.1.1 SciPy的组成 277
7.1.2 安装和导入 278
7.2 数据插值 279
7.2.1 一维插值 279
7.2.2 二维插值 281
7.2.3 离散数据插值到网格 283
7.3 曲线拟合 286
7.3.1 最小二乘法拟合 286
7.3.2 使用curve_fit函数拟合 288
7.3.3 多项式拟合 290
7.4 傅里叶变换 292
7.4.1 时域-频域的转换 292
7.4.2 一维傅里叶变换的应用 296
7.4.3 二维傅里叶变换的应用 297
7.5 图像处理 299
7.5.1 图像卷积 300
7.5.2 边缘检测 301
7.5.3 侵蚀和膨胀 303
7.5.4 图像测量 305
7.6 积分 306
7.6.1 对给定函数的定积分 306
7.6.2 对给定样本的定积分 307
7.6.3 二重定积分 307
7.7 非线性方程求根 308
7.7.1 非线性方程 308
7.7.2 非线性方程组 309
7.8 线性代数 309
7.8.1 计算矩阵的行列式 310
7.8.2 求解逆矩阵 310
7.8.3 计算特征向量和特征值 311
7.8.4 矩阵的奇异值分解 311
7.8.5 求解线性方程组 312
7.9 聚类 313
7.9.1 K均值聚类 313
7.9.2 层次聚类 315
7.10 空间计算 316
7.10.1 空间旋转的表述 317
7.10.2 三维旋转 318
第8章 机器学习工具包Scikit-learn 321
8.1 Scikit-learn概览 321
8.1.1 Scikit-learn的子模块 321
8.1.2 安装和导入 323
8.2 数据集 323
8.2.1 Scikit-learn自带的数据集 323
8.2.2 样本生成器 326
8.2.3 加载其他数据集 327
8.3 数据预处理 328
8.3.1 标准化 328
8.3.2 归一化 330
8.3.3 正则化 330
8.3.4 离散化 331
8.3.5 特征编码 332
8.3.6 缺失值补全 333
8.4 分类 334
8.4.1 k-近邻分类 334
8.4.2 贝叶斯分类 335
8.4.3 决策树分类 338
8.4.4 随机森林分类 340
8.4.5 支持向量机分类 342
8.5 回归 343
8.5.1 线性回归 343
8.5.2 支持向量机回归 346
8.5.3 k-近邻回归 350
8.5.4 决策树回归 352
8.5.5 随机森林回归 354
8.6 聚类 356
8.6.1 k均值聚类 356
8.6.2 均值漂移聚类 357
8.6.3 基于密度的空间聚类 359
8.6.4 谱聚类 361
8.6.5 层次聚类 363
8.7 成分分解与降维 365
8.7.1 主成分分析 366
8.7.2 因子分析 368
8.7.3 截断奇异值分解 369
8.7.4 独立成分分析(ICA) 370
8.8 模型评估与优化 372
8.8.1 估计器得分 373
8.8.2 交叉验证 374
8.8.3 评价指标 376
8.8.4 参数优化 378
8.8.5 模型持久化 380
附录A:Python内置函数(类)手册 382
附录B:从新手到高手的100个模块 405