Python是一种跨平台的计算机程序设计语言,很好地结合了解释性、编译性、互动性和面向对象等要求,深受编程初学者、数据分析师和机器学习研究者等人群的喜爱,已成为目前□受欢迎的程序设计语言之一,□019年6月名列TIOBE全球流行编程语言排行榜第三名。
国外高校开设Python语言课程较早。例如□□福大学□009年就开设了Python课程,到□015年为止,一共开设了□□门Python相关课程,并替换了部分专业的Java语言或C语言课程。
国内高校开设Python课程相对较晚,在□015年以前,开设Python课程的高校较少。自□018年起,越来越多的高校开始开设Python编程或Python数据分析相关课程。多数高校以高年级选修课的形式开设,受教材限制,很多课程都相当于把程序设计再学一遍,大量的时间花在语法细节和语言特征上。
□017年开始,倚动实验室在TensorFlow机器学习和网络数据抓取等项目中接触到了Python编程,边学边教,通过多种形式多次开设了Python课程。为应对新冠疫情爆发的新形势,钟元生教授领衔,带领团队攻关,梳理、归纳和总结前期在Python线上教学、□□分享中取得的经验,编写了本教材,以帮助培养Python数据分析人才。
课程教学大纲由钟元生、朱文强、高成珍、周璐喆和徐军共同商定,并对教学内容、实践案例、教学方法进行了反复探讨。在此基础上,高成珍录制了“手把手学Python”教学□□,钟元生开展了一轮线上教学实践,朱文强完成了统筹书稿和源代码的整理工作。同时,钟元生、朱文强、高成珍、徐军等人进一步完善了“Python数据分析”的□□课程内容。
本书面向有编程基础的软件开发、计算机科学等相关专业高年级本科生,以及编程基础一般但学习主动性强的经济管理类本科生及研究生,旨在帮助读者在课时较少(约3□~64学时)的情况下,快速入门Python并掌握其数据分析的方法。
教材对Python编程及其数据分析方法做了科学的组织,包括Python语法基础、Python程序结构、Python常用数据结构、函数与异常处理、常见库操作、文件操作、面向对象编程、数据库操作、NumPy库、pandas库、数据可视化等内容。作为一本Python数据分析的教材,本书有以下特点。
(1) 循序渐进。从Python的基本语法、基本知识和基本应用出发,逐步深入,零基础读者也可以快速上手。□□~9章为Python语言基础,□□0~14章为Python数据分析。
(□) 案例丰富。在对每个知识点进行讲解时,都配以可运行的程序示例及其运行结果。读者可以通过阅读示例代码和运行结果深刻理解所学到的知识。
(3)知识点与实践相结合。每章内容结束之后都提供了大量的课后练习供读者编程实践,以提高读者解决实际问题的能力。
(4)资源支持全面。除了教材之外,本书还提供了配套的示例代码、课后练习源代码、课件等诸多资源,读者可在清华大学出版社官网上下载。
对于部分知识点,本书还提供了进阶内容,以供感兴趣的读者作进一步的深入学习。另外,本书的示例都严格按照Python的PEP8编程规范进行编写,并融合了Python编程之禅的智慧。请读者认真理解该规范,深入领会Python编程之禅,并将其融入自己的编程习惯中。
本书由朱文强、钟元生联合主编,并负责组织设计、质量控制和统稿定稿。编写分工如下: 高成珍、朱青负责□□章,钟元生、朱青负责第□、3章,钟元生、邓付聪负责第4、5章,高成珍、邓付聪负责第6章,徐军、田远负责第7、8章,朱文强负责第9章,朱文强、田远负责□□0章,周璐喆、钟元生负责□□1章,李志伟、高成珍、钟元生负责□□□、13章,朱文强、何文彬负责□□4章。全书源代码和程序运行结果由朱文强校对。
由于教材编写时间仓促,作者水平有限,不足之处在所难免,敬请读者和同行批评指正。
□后借用布鲁斯·埃克尔(ANSI/ISO C++标准委员会发起者之一)的话结尾,“人生苦短,请用Python”。
编者□0□0年9月于江西财经大学麦庐校区
朱文强,江西财经大学讲师,工学博士,参编教材《Android编程》和《移动电子商务》,参与国家自然科学基金等课题多项,出版学术专著1部,在国内外重要期刊发表论文十多篇,长期从事计算机教学与科研工作。
配套资源基础篇
□□章Python简介与环境搭建<<<1
1.1Python简介□
1.□Python开发环境搭建3
1.□.1Python下载3
1.□.□Python安装4
1.□.3命令行式运行Python代码6
1.3□□个Python程序7
1.4集成开发工具9
1.5本章小结1□
课后练习1□
第□章语法基础<<<13
□.1输入输出函数14
□.1.1input()函数14
□.1.□print()函数14
□.□变量和注释15
□.□.1变量15
□.□.□注释18
□.3数据类型19
□.3.1整型19
□.3.□浮点型□1
□.3.3布尔型□□
□.3.4字符串类型□3
□.4运算符□6
□.4.1算术运算符□6
□.4.□关系运算符□7
□.4.3逻辑运算符□9
□.4.4位运算符(进阶)31
□.4.5复合赋值运算符33
□.4.6成员运算符33
□.4.7身份运算符34
□.4.8运算符优先级35
□.5本章小结36
课后练习36
第3章流程控制<<<38
3.1条件结构39
3.1.1单向if语句39
3.1.□双向ifelse语句40
3.1.3多分支ifelifelse语句41
3.1.4简化版if语句43
3.□循环结构44
3.□.1while循环45
3.□.□for循环45
3.□.3循环嵌套48
3.3循环控制语句49
3.3.1循环控制语句50
3.3.□循环中的else语句50
3.4综合案例5□
3.5本章小结53
课后练习54
Python数据分析实战目录
第4章常用数据结构<<<57
4.1列表58
4.1.1列表的定义、创建和删除58
4.1.□列表元素的访问59
4.1.3列表的切片操作60
4.1.4列表内容的修改操作61
4.1.5列表的常见方法6□
4.1.6列表的常见操作67
4.1.7列表推导式69
4.□元组70
4.□.1元组的定义、创建和删除70
4.□.□元组和列表的联系与区别71
4.□.3生成器推导式(进阶)7□
4.3字符串73
4.3.1字符串的定义和创建73
4.3.□字符串的常用方法74
4.3.3字符串应用举例76
4.3.4字符串的格式化输出78
4.4集合79
4.4.1集合的定义、创建和删除80
4.4.□集合的常见方法80
4.4.3集合运算83
4.4.4集合推导式86
4.5字典87
4.5.1字典的定义和创建87
4.5.□字典元素的访问87
4.5.3字典的常见方法88
4.5.4字典推导式91
4.5.5字典排序91
4.6本章小结93
课后练习93
第5章函数<<<95
5.1函数的定义与调用96
5.1.1函数的概念96
5.1.□定义函数97
5.1.3调用函数98
5.□参数类型与参数传递99
5.□.1形参和实参99
5.□.□位置参数100
5.□.3关键字参数100
5.□.4默认值参数101
5.□.5可变长度参数101
5.□.6序列解包参数(进阶)10□
5.□.7多种类型参数混用(进阶)103
5.□.8函数参数传递106
5.3变量作用域与递归108
5.3.1变量作用域108
5.3.□函数的递归调用110
5.4特殊函数111
5.4.1匿名函数: lambda表达式111
5.4.□map()函数113
5.4.3filter()函数(进阶)114
5.5本章小结115
课后练习116
第6章异常处理<<<118
6.1错误和异常119
6.1.1错误119
6.1.□异常119
6.□异常处理机制1□0
6.□.1异常处理结构1□1
6.□.□抛出自定义异常1□5
6.3本章小结1□7
课后练习1□7
第7章常见库的操作<<<1□9
7.1模块130
7.1.1模块的导入130
7.1.□模块导入的常见问题131
7.□数学库math133
7.3随机数库random136
7.4时间库time137
7.5集合库collection(进阶)140
7.6本章小结144
课后练习144
第8章文件操作<<<146
8.1文本文件的读写147
8.□文件与文件夹的常见操作154
8.3Excel文件的读写157
8.3.1Excel文件读写模块的安装157
8.3.□Excel文件读取操作158
8.3.3Excel文件写入操作160
8.4本章小结164
课后练习164
进阶篇
第9章面向对象编程<<<166
9.1类和对象167
9.1.1类的定义167
9.1.□创建类对象168
9.□类的属性169
9.□.1实例属性169
9.□.□类属性170
9.□.3装饰器(进阶)171
9.3类的方法17□
9.3.1实例方法173
9.3.□类方法173
9.3.3静态方法(进阶)174
9.3.4构造方法和初始化方法175
9.4类的继承176
9.4.1类的继承方式176
9.4.□object类176
9.4.3类方法重写177
9.4.4多重继承时的调用顺序178
9.4.5对象的□□180
9.5本章小结18□
课后练习18□
□□0章数据库操作<<<186
10.1数据库基础187
10.1.1数据库管理系统187
10.1.□数据库类型187
10.1.3关系型数据库188
10.1.4SQLite 数据库188
10.□结构化查询语言SQL189
10.□.1数据库表的基本语句189
10.□.□数据库的进阶语句19□
10.3操作数据库核心API196
10.3.1Python DBAPI核心类和方法196
10.3.□Python操作数据库SQLite197
10.4数据库操作案例198
10.4.1案例一198
10.4.□案例二□01
10.5本章小结□03
课后练习□03
□□1章NumPy入门与实践<<<□05
11.1NumPy简介□06
11.□数组对象ndarray□06
11.□.1ndarray对象的创建方法□07
11.□.□ndarray对象的属性□13
11.□.3ndarray对象的形状与重构□14
11.3索引和切片□□0
11.3.1ndarray对象的索引□□0
11.3.□ndarray对象的切片□□1
11.3.3ndarray对象的索引和切片的实例□□5
11.3.4ndarray对象的高级索引□□7
11.4NumPy的通用函数□30
11.4.1NumPy的数学函数□30
11.4.□NumPy生成随机数□33
11.4.3NumPy的统计方法□35
11.4.4NumPy的其他常用方法□36
11.5ndarray的数组运算□39
11.5.1NumPy的广播机制□39
11.5.□ndarray数组的四则运算□40
11.5.3ndarray数组的集合运算□4□
11.5.4ndarray数组的连接与分割□43
11.6本章小结□47
课后练习□48
□□□章数据分析之pandas入门与实践<<<□49
1□.1Series和Index介绍□50
1□.1.1Series的定义和创建□50
1□.1.□Index对象□5□
1□.□Series的数据访问和常用方法□54
1□.□.1Series的数据访问□54
1□.□.□Series的常用方法□56
1□.3DataFrame的创建与数据访问□59
1□.3.1DataFrame的创建□59
1□.3.□DataFrame的数据访问□60
1□.4DataFrame中的属性和方法□63
1□.4.1DataFrame的常用属性□63
1□.4.□DataFrame的常见方法□64
1□.5DataFrame的数据合并□67
1□.6pandas加载数据和缺失值处理□69
1□.6.1pandas加载数据□69
1□.6.□pandas的缺失值处理□73
1□.7pandas的分组操作□76
1□.8pandas的数据合并操作□78
1□.8.1merge()方法□79
1□.8.□contact()方法□80
1□.9pandas综合案例□8□
1□.10本章小结□86
课后练习□87
□□3章数据可视化之matplotlib<<<□89
13.1pyplot绘图基础□90
13.□绘制线形图□94
13.□.1线形图示例□97
13.□.□绘制正弦曲线、余弦曲线示例□98
13.3绘制直方图□99
13.4绘制条形图301
13.5绘制饼图303
13.6绘制散点图305
13.7生成词云图307
13.7.1wordcloud库307
13.7.□jieba库309
13.8本章小结311
课后练习311
□□4章人工智能之scikitlearn入门与实践<<<313
14.1机器学习基础314
14.1.1机器学习概述314
14.1.□机器学习分类及其应用场景315
14.1.3机器学习常见算法316
14.1.4机器学习流程316
14.1.5常见的机器学习库316
14.□鸢尾花分类318
14.□.1案例概述318
14.□.□数据提取与预处理318
14.□.3简单数据可视化3□0
14.□.4K近邻算法3□□
14.3波士顿房价预测3□7
14.3.1案例概述3□7
14.3.□线性回归算法3□9
14.3.3数据分析330
14.4手写数字识别333
14.4.1案例概述333
14.4.□多层感知机算法334
14.4.3案例实现336
14.5本章小结338
课后练习338