本书系统介绍Python基础知识以及数据采集、分析、可视化的流程与应用,实例丰富,实战性强。全书共14个项目,其中前10个项目以Python基础知识的理解和应用为主,项目11至14分别讲解网络爬虫以及numpy、pandas和matplotlib的应用。书中全部代码适用于Python 3.5、Python 3.6、Python 3.7以及更高版本。
本书可以作为本科、专科、高职院校非计算机专业程序设计课程用教材,也可作为计算机专业程序设计基础课程用教材,还可作为Python爱好者的自学用书。
本书配有教学资源(包括PPT、源代码、大纲、习题答案),需要的教师可登录www.cmpedu.com免费注册,审核通过后下载,或联系编辑索取(QQ:1239258369,电话:010-88379739)。
本书共14个项目,主要包括Python编程基础、网络爬虫、数据分析和数据可视化四大部分内容。
全部代码适用于Python 3.5、Python 3.6、Python 3.7以及更高版本。
免费提供教学PPT、源代码、教学大纲、习题答案等全套教学资源。
Python语言由Guido van Rossum于1991年推出了第一个公开发行版本,之后迅速得到了各行业人士的青睐。经过20多年的发展,Python语言已经渗透到统计分析、移动终端开发、科学计算可视化、系统安全、逆向工程、软件测试与软件分析、图形图像处理、人工智能、机器学习、深度学习等几乎所有专业和领域,在黑客领域更是多年来一直拥有霸主地位。与此同时,Python语言在各大编程语言排行榜上的位次也是逐年上升的,被TIOBE网站评为2010年年度语言;在IEEE Spectrum 2017 编程语言排行榜上名列榜首。
Python是一门免费、开源、跨平台的高级动态编程语言,支持命令式编程、函数式编程,完全支持面向对象程序设计,拥有大量功能强大的内置对象、标准库,以及涉及各行业领域的扩展库,使得各领域的工程师、科研人员、策划人员和管理人员能够快速实现和验证自己的思路、创意或者推测,还有更多人喜欢用Python写个小脚本来完成自己工作中的一些小任务。在有些编程语言中需要编写大量代码才能实现的功能,在Python中只需要几行代码,大幅度减少了代码量,更加容易维护。Python用户只需要把主要精力放在业务逻辑的设计与实现上,在开发速度和运行效率之间达到了完美的平衡,其精妙之处令人击节赞叹。
一个好的Python程序不仅是正确的,更是简洁、直观、漂亮、优雅、方便人们阅读的,整个代码处处体现着美,让人赏心悦目。Python代码对布局要求非常严格,尤其是使用缩进来体现代码的逻辑关系,这一点硬性要求非常有利于学习者和程序员养成一个良好、严谨的习惯。除了能够快速解决问题之外,代码布局要求严格也是Python被广泛选作教学语言的重要原因。
早在多年前Python就已经成为卡耐基梅隆大学、麻省理工学院、加州大学伯克利分校、哈佛大学、多伦多大学等国外很多大学计算机专业或非计算机专业的程序设计入门教学语言。近几年来国内有几百所高等院校的多个专业陆续开设了Python程序设计有关课程,并且这个数量还在持续快速增加。目前来看,选择使用Python作为程序设计入门教学语言或者作为各专业扩展课程,无疑是一个非常明智的选择。
内容组织与阅读建议
本书共14个项目和若干子任务,主要包括Python编程基础、网络爬虫、数据分析和数据可视化这四大部分内容,全部代码适用于Python 3.5、Python 3.6、Python 3.7以及更高版本。
项目1 认识Python。简单介绍Python语言与版本、安装与配置Python开发环境、Python编码规范、扩展库安装方法以及标准库对象与扩展库对象的导入。
项目2 使用内置对象和运算符。讲解Python常用内置对象、运算符与表达式、常用内置函数、Python关键字。
项目3 使用Python序列结构。讲解序列、列表、元组与生成器表达式、字典、集合、序列解包。
项目4 使用程序控制结构。讲解条件表达式的常见形式,单分支、双分支、多分支选择结构以及嵌套的选择结构;循环结构,包括for循环与while循环,break与continue语句;以及异常处理结构。
项目5 设计和使用自定义函数。讲解函数定义与调用语法、不同类型的函数参数、参数传递的序列解包、变量作用域、lambda表达式、生成器函数。
项目6 面向对象程序设计基础。讲解类的定义与使用、数据成员与成员方法、属性和继承、特殊方法。
项目7 使用字符串。讲解字符串编码格式、转义字符与原始字符串、字符串格式化的不同形式、字符串常用方法、字符串常量、中英文分词、汉字到拼音的转换。
项目8 使用正则表达式。讲解正则表达式语法、正则表达式模块re的用法。
项目9 读写文件内容。讲解文件操作基本知识、文本文件内容操作以及Excel与Word等常见类型文件的操作。
项目10 文件与文件夹操作。讲解os、os.path与shutil这3个模块的用法,以及递归遍历文件夹和按广度优先遍历文件夹的原理。
项目11 网络爬虫入门与应用。讲解HTML、JavaScript基础以及urllib、scrapy、BeautifulSoup、requests、selenium在网络爬虫程序中的应用。
项目12 使用numpy实现数组与矩阵运算。讲解numpy的数组和矩阵运算。
项目13 使用pandas分析与处理数据。讲解pandas常用操作、pandas结合matplotlib进行数据可视化、pandas的应用。
项目14 使用matplotlib进行数据可视化。介绍使用Python扩展库matplotlib进行数据可视化相关的技术,包括折线图、散点图、饼状图、柱状图、三维图的绘制,以及切分绘图区域、设置坐标轴和图例等内容。
本书适用读者
本书可以作为(但不限于):本科、专科、高职院校非计算机专业程序设计课程用教材,计算机专业程序设计基础课程教材, Python爱好者自学用书。
配套资源
本书提供教学PPT、源代码、大纲、习题答案等全套教学资源,可通过微信公众号“Python小屋”获取,或发送邮件至dongfuguo2005@126.com与作者联系获取;也可通过机械工业出版社相应渠道获取(见版权页内容简介)。
致谢
首先感谢父母的养育之恩,在当年那么艰苦的条件下还坚决支持我读书,没有让我像其他同龄的孩子一样辍学。感谢姐姐、姐夫多年来对我的爱护以及在老家对父母的照顾,感谢善良的弟弟、弟媳在老家对父母的照顾。当然,
董付国 副教授,知名Python教育者。拥有多年Python教学和开发经验,先后出版《Python程序设计》、《Python程序设计基础》、《Python程序设计(第2版)》、《Python可以这样学》、《Python程序设计开发宝典》、《中学生可以这样学Python》等系列教材。开发过多套涉及不同领域的管理系统,在国内外高水平学术期刊与会议上发表论文40余篇,其中近30篇被EI检索。
目 录
前言
项目1 认识Python1
1.1 任务1 了解Python语言和版本1
1.2 任务2 安装与配置Python开发环境2
1.2.1 IDLE2
1.2.2 Anaconda 33
1.2.3 PyCharm5
1.3 任务3 了解Python编程规范7
1.4 任务4 安装扩展库7
1.5 任务5 导入与使用标准库与扩展库中的对象8
1.5.1 import 模块名 [as 别名]9
1.5.2 from 模块名 import 对象名 [ as 别名]9
1.5.3 from 模块名 import *10
习题10
项目2 使用内置对象和运算符11
2.1 任务1 认识Python常用内置对象11
2.1.1 常量与变量12
2.1.2 数字类型13
2.1.3 字符串14
2.1.4 列表、元组、字典、集合15
2.2 任务2 使用Python运算符与表达式15
2.2.1 算术运算符16
2.2.2 关系运算符17
2.2.3 成员测试运算符18
2.2.4 集合运算符18
2.2.5 逻辑运算符18
2.2.6 补充说明19
2.3 任务3 使用Python内置函数19
2.3.1 类型转换与判断21
2.3.2 最值与求和23
2.3.3 基本输入/输出24
2.3.4 排序与逆序25
2.3.5 枚举与迭代25
2.3.6 map()函数、reduce()函数、filter()函数26
2.3.7 range()函数28
2.3.8 zip()函数28
2.4 任务4 了解Python关键字29
习题30
项目3 使用Python序列结构32
3.1 任务1 了解Python序列32
3.2 任务2 使用列表33
3.2.1 列表创建与删除33
3.2.2 列表元素访问34
3.2.3 列表常用方法34
3.2.4 列表对象支持的运算符36
3.2.5 内置函数对列表的操作37
3.2.6 列表推导式37
3.2.7 切片40
3.3 任务3 使用元组与生成器表达式40
3.3.1 元组创建与元素访问40
3.3.2 元组与列表的异同点41
3.3.3 生成器表达式41
3.4 任务4 使用字典42
3.4.1 字典的创建与删除43
3.4.2 字典元素的访问43
3.4.3 元素的添加、修改与删除44
3.4.4 字典应用案例45
3.5 任务5 使用集合46
3.5.1 集合对象的创建与删除46
3.5.2 集合的操作与运算47
3.5.3 集合应用案例48
3.6 任务6 理解序列解包51
习题53
项目4 使用程序控制结构54
4.1 任务1 理解条件表达式54
4.2 任务2 使用选择结构56
4.2.1 单分支选择结构56
4.2.2 双分支选择结构57
4.2.3 多分支选择结构58
4.2.4 选择结构的嵌套59
4.3 任务3 使用循环结构59
4.3.1 for循环与while循环59
4.3.2 break与continue语句60
4.4 任务4 了解异常处理结构语法61
4.5 任务5 综合应用62
习题67
项目5 设计和使用自定义函数69
5.1 任务1 定义与调用函数69
5.1.1 基本语法69
5.1.2 递归函数70
5.2 任务2 理解函数参数71
5.2.1 位置参数71
5.2.2 默认值参数71
5.2.3 关键参数72
5.2.4 可变长度参数72
5.2.5 传递参数时的序列解包73
5.3 任务3 理解变量作用域74
5.4 任务4 理解lambda表达式75
5.5 任务5 理解生成器函数76
5.6 任务6 综合应用77
习题86
项目6 面向对象程序设计基础88
6.1 任务1 定义与使用类88
6.2 任务2 理解数据成员与成员方法89
6.2.1 私有成员与公有成员89
6.2.2 数据成员90
6.2.3 成员方法90
6.2.4 属性92
6.3 任务3 理解和使用继承94
6.4 任务4 理解特殊方法工作原理96
6.5 任务5 综合应用98
习题105
项目7 使用字符串106
7.1 任务1 认识字符串106
7.1.1 字符串编码格式106
7.1.2 转义字符与原始字符串107
7.2 任务2 字符串格式化109
7.2.1 使用%符号进行格式化109
7.2.2 使用format()方法进行字符串格式化110
7.2.3 格式化的字符串常量111
7.3 任务3 字符串常用方法与操作111
7.3.1 find()、rfind()、index()、rindex()、count()111
7.3.2 split()、rsplit()112
7.3.3 join()113
7.3.4 lower()、upper()、capitalize()、title()、swapcase()113
7.3.5 replace()、maketrans()、translate()114
7.3.6 strip()、rstrip()、lstrip()115
7.3.7 startswith()、endswith()115
7.3.8 isalnum()、isalpha()、isdigit()、isspace()、isupper()、islower()115
7.3.9 center()、ljust()、rjust()116
7.3.10 字符串支持的运算符116
7.3.11 适用于字符串的内置函数117
7.3.12 字符串切片118
7.4 任务4 使用字符串常量118
7.5 任务5 中英文分词119
7.6 任务6 汉字到拼音的转换120
7.7 任务7 综合应用120
习题122
项目8 使用正则表达式124
8.1 任务1 理解正则表达式语法124
8.2 任务2 使用正则表达式模块re126
8.3 任务3 综合应用128
习题131
项目9 读写文件内容132
9.1 任务1 了解文件的概念及分类132
9.2 任务2 了解文件操作基本知识132
9.2.1 内置函数open()133
9.2.2 文件对象常用方法134
9.2.3 上下文管理语句with134
9.3 任务3 文本文件内容操作134
9.4 任务4 Excel与Word文件操作136
习题145
项目10 文件与文件夹操作147
10.1 任务1 使用os模块147
10.2 任务2 使用os.path模块149
10.3 任务3 使用shutil模块150
10.4 任务4 综合应用151
习题154
项目11 网络爬虫入门与应用156
11.1 任务1 了解HTML与JavaScript156
11.1.1 HTML基础156
11.1.2 JavaScript基础158
11.2 任务2 使用urllib编写爬虫程序160
11.2.1 urllib的基本应用161
11.2.2 urllib爬虫案例162
11.3 任务3 使用scrapy编写爬虫程序164
11.4 任务4 了解BeautifulSoup基本用法169
11.5 任务5 使用requests编写爬虫程序174
11.5.1 requests基本操作175
11.5.2 requests爬虫案例176
11.6 任务6 使用selenium编写爬虫程序177
习题181
项目12 使用numpy实现数组与矩阵运算182
12.1 任务1 掌握数组常用操作182
12.2 任务2 矩阵运算与常用操作192
习题195
项目13 使用pandas分析与处理数据197
13.1 任务1 了解pandas常用操作197
13.2 任务2 pandas结合matplotlib进行数据可视化212
13.3 任务3 pandas应用案例216
习题223
项目14 使用matplotlib进行数据可视化225
14.1 任务1 认识matplotlib225
14.2 任务2 绘制带有中文标题、标签和图例的折线图225
14.3 任务3 绘制散点图227
14.4 任务4 绘制饼状图231
14.5 任务5 绘制柱状图232
14.6 任务6 绘制雷达图234
14.7 任务7 绘制三维图形235
14.8 任务8 切分绘图区域239
14.9 任务9 设置图例240
14.10 任务10 设置坐标轴刻度距离和文本242
习题243
参考文献245