产品特色
内容简介
《自学Python——编程基础、科学计算及数据分析》是面向Python初学者的一本实用学习笔记。全书共10章:第1章介绍Python的基础知识,包括Anaconda、IPython解释器、Jupyter Notebook等Python基本工具的使用;第2章介绍Python的基本用法,包括基本语法、数据类型、判断与循环、函数与模块、异常与警告以及文件读写等;第3章介绍Python的进阶用法,包括函数进阶、迭代器和生成器、装饰器、上下文管理器以及变量作用域等;第4章介绍常见的Python标准库的使用;第5章介绍Python的科学计算基础模块NumPy,包括NumPy数组的基本操作、广播机制、索引和读写;第6章介绍Python的可视化模块Matplotlib,包括基于函数和对象的可视化操作;第7章介绍Python的科学计算进阶模块SciPy,包括一些高等数学的操作;第8章介绍Python的数据分析基础模块Pandas,包括Series和DataFrame的使用;第9章介绍Python的面向对象编程,包括对象的属性和方法、继承和复用,以及一个使用面向对象编程的实例;第10章介绍了一个用Python分析中文小说文本的实例。
《自学Python——编程基础、科学计算及数据分析》适合刚接触Python的初学者以及希望使用Python处理和分析数据的读者阅读,也可作为学习和使用Python的工具书或参考资料使用。
目录
目录
前言
致谢
第1章 初识Python1
1.1 Python简介1
1.2 Python版本的选择2
1.3 Python集成开发环境的搭建2
1.4 第一行Python代码4
1.5 IPython解释器5
1.6 Python代码的执行模式7
1.6.1 解释器模式7
1.6.2 脚本模式8
1.6.3 解释器模式与脚本模式的区别9
1.7 Jupyter Notebook的使用9
本章学习笔记11
本章新术语11
本章新函数11
第2章 Python基础12
2.1 基本语法简介12
2.2 数据类型17
2.2.1 数字18
2.2.2 字符串23
2.2.3 Unicode字符串30
2.2.4 索引与分片32
2.2.5 列表34
2.2.6 元组40
2.2.7 可变与不可变类型42
2.2.8 字典44
2.2.9 集合与不可变集合48
2.2.10 赋值机制53
2.3 判断与循环58
2.3.1 判断58
2.3.2 循环62
2.4 函数与模块69
2.4.1 函数69
2.4.2 模块73
2.5 异常与警告77
2.5.1 异常77
2.5.2 警告83
2.6 文件读写83
2.6.1 读文件84
2.6.2 写文件85
2.6.3 中文文件的读写87
2.7 内置函数88
2.7.1 数字相关的内置函数88
2.7.2 序列相关的内置函数90
2.7.3 类型相关的内置函数92
本章学习笔记92
本章新术语92
本章新函数94
第3章 Python进阶96
3.1 函数进阶96
3.1.1 函数参数传递96
3.1.2 高阶函数98
3.1.3 函数map()、filter()和reduce()101
3.1.4 Lambda表达式102
3.1.5 关键字global103
3.1.6 函数的递归104
3.2 迭代器与生成器105
3.2.1 迭代器105
3.2.2 生成器110
3.3 装饰器112
3.3.1 装饰器的引入112
3.3.2 装饰器的用法115
3.4 上下文管理器与with语句118
3.4.1 上下文管理器的原理119
3.4.2 模块contextlib123
3.5 变量作用域125
本章学习笔记127
本章新术语128
本章新函数128
第4章 Python标准库129
4.1 系统相关:sys模块129
4.2 与操作系统进行交互:os模块133
4.3 字符串相关:string模块136
4.4 正则表达式:re模块138
4.5 日期时间相关:datetime模块142
4.6 更好地打印Python对象:pprint模块145
4.7 序列化Python对象:pickle,cPickle模块145
4.8 读写JSON数据:json模块147
4.9 文件模式匹配:glob模块150
4.10 高级文件操作:shutil模块151
4.11 更多的容器类型:collections模块153
4.12 数学:math模块157
4.13 随机数:random模块158
本章学习笔记159
本章新术语160
本章新函数160
第5章 Python科学计算基础:NumPy模块162
5.1 NumPy模块简介162
5.2 数组基础163
5.2.1 数组的引入163
5.2.2 数组的属性164
5.2.3 数组的类型166
5.2.4 数组的生成169
5.2.5 数组的索引172
5.2.6 数组的迭代174
5.3 数组操作175
5.3.1 数值相关的数组操作175
5.3.2 形状相关的数组操作179
5.3.3 数组的拼接操作184
5.3.4 数组的四则运算、点乘和矩阵类型187
5.3.5 数组的数学操作190
5.3.6 数组的比较和逻辑操作190
5.4 数组广播机制191
5.5 数组索引进阶194
5.5.1 数组基础索引194
5.5.2 数组的高级索引196
5.6 数组读写199
5.6.1 数组的读取199
5.6.2 数组的写入200
5.6.3 数组的二进制读写200
5.7 随机数组202
5.8 结构数组202
本章学习笔记206
本章新术语207
本章新函数207
第6章 Python可视化:Matplotlib模块209
6.1 Matplotlib模块简介209
6.2 基于函数的可视化操作210
6.2.1 函数plt.plot()的使用210
6.2.2 图与子图215
6.2.3 其他可视化函数217
6.3 基于对象的可视化操作217
6.4 图像中的文本处理219
6.5 实例:基于Matplotlib的三角函数可视化221
本章学习笔记226
本章新术语227
本章新函数227
第7章 Python科学计算进阶:SciPy模块228
7.1 SciPy模块简介228
7.2 插值模块:scipy.interpolate229
7.3 概率统计模块:scipy.stats233
7.3.1 基本统计量233
7.3.2 概率分布234
7.3.3 假设检验243
7.4 优化模块:scipy.optimize246
7.4.1 数据拟合247
7.4.2 最值优化251
7.4.3 方程求根254
7.5 积分模块:scipy.integrate255
7.5.1 符号积分与SymPy模块255
7.5.2 数值积分257
7.6 稀疏矩阵模块:scipy.sparse260
7.7 线性代数模块:scipy.linalg262
7.8 实例:基于SciPy的主成分分析268
本章学习笔记271
本章新术语272
本章新函数272
第8章 Python数据分析基础:Pandas模块274
8.1 Pandas简介274
8.2 一维数据结构:Series对象275
8.2.1 Series对象的生成275
8.2.2 Series对象的使用277
8.3 二维数据结构:DataFrame对象280
8.3.1 DataFrame对象的生成280
8.3.2 DataFrame对象的使用283
8.4 Pandas对象的索引286
8.4.1 基于中括号的索引和切片286
8.4.2 基于位置和标记的高级索引289
8.5 缺失值的处理293
8.6 数据的读写294
8.7 实例:基于Pandas的NBA数据分析295
本章学习笔记299
本章新术语299
本章新函数299
第9章 Python面向对象编程300
9.1 面向对象简介300
9.2 自定义类型303
9.3 方法和属性305
9.4 继承与复用311
9.5 公有、私有、特殊
前言/序言
前言
Python是一门十分流行的编程语言,它免费、易学,而且功能强大,在网络编程、图形用户界面编程、科学计算、数据挖掘、机器学习、人工智能等方面都有着广泛的应用。
我在一年的时间里,通过自学,从一个Python“小白”成长为了一个Python“老手”,并在这个过程中用笔记的形式记录了自己学习和使用Python的经验。本书就是根据本人的学习笔记整理而来,相信对同样开始学习并使用Python的朋友会有帮助。
《自学Python——编程基础、科学计算及数据分析》使用的集成开发环境是Anaconda,一个强大的Python计算环境。本书从初学者的角度出发,利用IPython解释器、Jupyter Notebook等Python工具,对Python的各个方面进行了介绍。
《自学Python——编程基础、科学计算及数据分析》首先介绍Python工具的使用,以及Python的基础和进阶用法,为读者打下良好的基础:优秀的工具能帮助读者更有效地学习和使用Python,基础和进阶用法能让读者对Python有一些基本的认知。
接着,本书介绍一些关键的Python模块,包括Python标准库中的自带模块、NumPy、Matplotlib、SciPy、Pandas等,这些模块提供了强大的功能:标准库模块提供了处理编程常见问题的工具,NumPy模块提供了科学计算的基础类型——数组,Matplotlib可以对数据进行可视化,SciPy可以进行一些高等数学的操作,而Pandas模块则提供了数据分析的基本 功能。
除了用法和模块,本书还介绍了Python中的面向对象编程,囿于篇幅,本书只介绍面向对象编程的用法,对这一机制不做过多介绍。
最后,在已学习内容的基础上,本书提供了一个用Python分析中文小说的实例,并简要介绍数据分析的一些基本流程,供读者参考。
《自学Python——编程基础、科学计算及数据分析》基于学习笔记而来,内容更贴近读者,例子也尽可能地简单易懂。除了介绍用法,本书还加入了很多原理解释,并辅以实例进行说明。因此,与其他Python书籍相比,本书不仅具有知其然的功能,还具有知其所以然的特点,从而能更好地帮助初学者进行学习。
《自学Python——编程基础、科学计算及数据分析》使用的Python版本为2.7。考虑到书中涉及模块的功能,可能会随版本更新而改变,因此,本书主要介绍各个模块的核心功能,对于一些细节用法不做过多介绍。
致谢
我要感谢我的家人,他们默默的支持,是我最坚实的后盾。
我要感谢我的导师张长水教授,他严谨的教导,使我终生受益。
我要感谢我的朋友蒋楠、胡捷、王磊和潘伟燊,感谢他们参与本书的编写工作。
我还要感谢辛苦的编辑王斌(IT大公鸡),有了他的鼎力协助,才有了这本书的成形与出版。
本书内容参考了很多朋友总结分享的资料和知识,虽不可能完全统计出对本书的内容做出贡献的所有人士,但在这里,我要对那些没有被提及的贡献者们致以最诚挚的谢意。
回顾这近一年的写作历程,我感觉十分幸运。种种机缘巧合促成了这本书的诞生,这段写作的过程也必将成为我一生中最值得记忆的一段经历。非常希望本书能够对学习Python的朋友有所帮助!
李 金
2017.8.27
探索数据驱动的未来:一本关于 Python 编程、科学计算与数据分析的进阶指南 在当今信息爆炸的时代,掌握数据分析能力已成为一项至关重要的技能,无论您是希望在学术领域取得突破,还是在商业世界中寻求竞争优势,抑或是仅仅想深入理解周围世界运行的规律,数据都扮演着核心角色。而 Python,凭借其简洁的语法、强大的库生态系统以及活跃的社区支持,已然成为数据科学领域的首选语言。 本书并非一本简单的入门教程,而是一本面向希望深入理解 Python 在科学计算和数据分析中强大能力的进阶指南。它将带领您从 Python 编程的基础概念出发,逐步深入到其在处理复杂科学问题和进行深度数据洞察方面的应用。我们旨在为您构建一个坚实而全面的知识体系,让您能够自信地驾驭数据,发现隐藏的模式,并将其转化为有价值的见解。 本书的核心目标: 精通 Python 编程基础: 在假定您对基本编程概念(如变量、数据类型、控制流、函数等)有所了解的基础上,我们将重点回顾和巩固 Python 的核心特性,并着重讲解那些对数据处理尤为重要的概念,例如高效的数据结构、面向对象的编程思想、模块化开发以及错误处理机制。我们将通过大量贴近实际应用场景的代码示例,帮助您熟练运用 Python 构建更健壮、可维护的代码。 深入理解科学计算的核心: 科学计算是利用计算机来解决科学和工程问题的学科。本书将重点介绍 Python 在这一领域的关键库,特别是 NumPy。您将学会如何高效地使用 NumPy 进行多维数组的创建、操作和数学运算,理解其内存管理机制,以及如何利用其强大的向量化运算能力来加速您的计算过程。从线性代数、傅里叶变换到随机数生成,我们将逐一剖析 NumPy 的核心功能,并展示其在物理模拟、信号处理、图像分析等领域的实际应用。 掌握数据分析的全流程: 数据分析是一个系统性的过程,涉及数据的获取、清洗、转换、探索、建模和可视化。本书将围绕 Pandas 这一数据分析领域的瑞士军刀展开。您将学习如何使用 Pandas 读取不同格式的数据(CSV, Excel, SQL 数据库等),如何进行数据清洗(处理缺失值、异常值,数据类型转换),如何进行数据转换和重塑(分组、聚合、合并、连接),以及如何使用 Pandas 的强大功能进行探索性数据分析(EDA),从而快速理解数据的基本特征和潜在关系。 解锁数据可视化与洞察: 数据本身是冰冷的,只有通过有效的可视化才能将其转化为易于理解的洞察。本书将介绍 Matplotlib 和 Seaborn 这两个强大的 Python 数据可视化库。您将学习如何创建各种统计图表,如折线图、散点图、柱状图、箱线图、热力图等,并掌握如何调整图表的样式、添加注释,使其更具表现力。通过直观的图表,您将能够更清晰地发现数据中的趋势、模式和异常,从而做出更明智的决策。 初步接触机器学习与统计建模: 在掌握了数据处理和可视化的基础上,本书将为您打开机器学习和统计建模的入门之门。我们将介绍 Scikit-learn 库,并讲解一些基本的机器学习概念,例如监督学习(回归、分类)和无监督学习(聚类)。您将学习如何准备数据以供模型使用,如何选择合适的模型,以及如何评估模型的性能。同时,我们也会触及一些基本的统计概念,例如假设检验、置信区间等,并展示如何在 Python 中实现这些分析。 本书的独特之处: 理论与实践并重: 我们坚信,只有通过动手实践才能真正掌握知识。本书中的每一个概念都配有详细的代码示例,这些示例不仅能够验证理论知识,更重要的是能够指导您如何在实际问题中应用这些技术。我们鼓励读者积极动手尝试、修改代码,并将其应用于自己的数据项目中。 循序渐进的学习路径: 本书的设计遵循“由浅入深,由易到难”的原则。我们从 Python 编程的基础开始,逐步过渡到更复杂的科学计算和数据分析技术。即使您之前对某些领域有所接触,本书也能够帮助您系统性地梳理和深化理解。 聚焦核心工具与技术: 我们选择介绍 Python 生态系统中最为核心和广泛使用的库,如 NumPy, Pandas, Matplotlib, Seaborn 和 Scikit-learn。掌握了这些工具,您将能够应对绝大多数的数据科学任务。 强调问题解决导向: 本书的编写思路始终围绕着“如何利用 Python 解决实际的数据科学问题”。我们不仅仅是罗列语法和功能,更重要的是解释这些技术背后的原理,以及它们是如何帮助我们解决具体问题的。 前沿主题的初步探索: 在掌握了基础知识后,本书还将为您指明进一步学习的方向,例如深度学习、大数据处理、云计算平台等,让您对数据科学的广阔领域有一个初步的认识。 谁适合阅读本书: 在校学生: 正在学习计算机科学、统计学、数学、工程学、经济学等专业的学生,希望将理论知识与实际数据分析工具相结合。 初入职场的数据爱好者: 希望通过学习 Python 获得数据分析能力,从而在求职市场上更具竞争力。 希望提升工作效率的专业人士: 无论您是从事金融、市场营销、生物医学、社会科学还是其他领域,如果您的工作涉及数据处理和分析,本书都能为您提供有效的工具和方法。 对数据探索充满好奇的任何人: 即使您没有明确的职业目标,但对数据如何揭示世界的奥秘充满兴趣,本书将是您探索数据世界的一扇窗。 本书内容概述: 第一部分:Python 编程基础与数据处理哲学 Python 核心回顾与进阶: 数据类型、集合、函数、类与对象、模块化编程、异常处理。 数据处理的思维模式: 理解数据结构、向量化思维、函数式编程理念在数据处理中的应用。 第二部分:NumPy:科学计算的基石 ndarray 对象: 创建、索引、切片、重塑。 数学运算与函数: 元素级运算、通用函数 (ufuncs)、统计函数、线性代数运算。 广播机制: 理解和应用 NumPy 的广播功能。 内存管理与性能优化: 浅拷贝与深拷贝、视图与副本、向量化代码的优势。 第三部分:Pandas:数据分析的瑞士军刀 Series 与 DataFrame: 数据结构的创建、操作与索引。 数据读取与写入: CSV, Excel, JSON, SQL 等格式的处理。 数据清洗与预处理: 缺失值处理、重复值处理、数据类型转换、字符串操作。 数据转换与重塑: 合并 (merge)、连接 (join)、追加 (append)、分组 (groupby)、聚合 (agg)、透视表 (pivot table)。 时间序列分析: 日期和时间数据的处理、重采样、滑动窗口。 多级索引与高级索引。 第四部分:数据可视化:洞察的眼睛 Matplotlib 基础: 图表元素、坐标系、样式设置。 常用图表类型: 折线图、散点图、柱状图、饼图、直方图、箱线图。 Seaborn: 统计图表的高级应用、美观的默认样式、处理分类数据。 探索性数据分析 (EDA) 中的可视化: 使用图表发现数据中的关系和模式。 自定义与美化图表: 调整颜色、标签、标题、图例。 第五部分:初探机器学习与统计建模 机器学习基础概念: 监督学习、无监督学习、模型评估。 Scikit-learn 入门: 数据预处理、模型训练与预测。 常用算法简介: 线性回归、逻辑回归、K-Means 聚类。 统计学基础: 描述性统计、推断性统计简介。 结语: 掌握 Python、科学计算与数据分析,您将获得一种强大的新视角来理解世界。本书旨在为您提供开启这段旅程所需的知识和技能。我们相信,通过系统学习和大量的实践,您将能够自信地运用数据解决复杂的问题,发现隐藏的洞察,并在不断变化的世界中保持领先。现在,让我们一起踏上这段激动人心的数据探索之旅吧!