图书前言

前言

进入大学计算机专业的学生,学习的第一门程序设计语言一般是C或者C++。虽然这两种语言在偏底层的操作系统、嵌入式系统、数据库、编译器、图形处理等方面有很广泛的应用,但对于初学者而言,学习了一个学期后,还是很难用它们做出一个真正有用的小软件,只能完成一些简单的数值计算和数据加工处理工作。如果没有学习图形界面的话,很多情况下工作界面就是一个丑陋的黑窗口,还是用最原始的字符界面来完成和计算机的交互。C语言的指针、C++的继承和多态,都是比较晦涩难懂的部分,需要通过大量的练习才能掌握。对于计算机专业的学生尚且如此,对于更多不是计算机专业但又想掌握一门程序设计语言的读者而言,从C或者C++起步学习编程语言,并不是一个最佳的选择,很容易“从入门到放弃”。

Python语言是近几年发展非常迅速的一门程序设计语言,以其简洁优美、开发效率高、移植方便等优点,在云计算、大数据、机器学习、人工智能、Web开发、量化金融等领域都得到了广泛的应用。

Python语言的语法规则比C或者C++更为简单和友好,对于没有基础的“小白”同学,更适合作为入门的第一种编程语言,学习起来比C\\C++要轻松一些。除了掌握基本的语法规则以外,最重要的是通过对Python语言的学习,逐步认识和掌握计算思维,即计算机是如何对数据进行加工处理的。这样我们在面对一个新的任务时,就能知道如何使用计算机和程序设计语言来分析和解决问题。在Python语言中,最基础的概念包括变量和对象、条件结构和循环结构,以及组合数据类型等。本教材的第1篇是语言基础,包含第1~9章,主要讲解Python语言的基本语法和使用规则,学习完这一篇,就可以编制出简单的程序了。当然,从零开始的小白同学,在编程的过程中可能会遇到很多问题,如少一个括号、多一个空格、把变量名字写错这些低级错误经常会发生。计算机不像人类有强大的错纠能力,对于语言交流中的小错误往往都能忽略,不会响影你对于整句话的理解(你能发现这句话里面的几个小错误吗?)。而计算机对你写出的代码要进行仔细的语法检查,一点错误都不能有。新手往往会受困于这些问题,编出来的程序“漏洞”百出,需要花很长时间才能找到错误并改正。这些都是正常现象,所有的程序员都是从犯错开始的,都曾经被折磨得想摔烂计算机。但等你踩过的坑多了,你就会发现计算机比你的男/女朋友(如果有的话)要听话多了,你给它的指令,它从来都是坚决贯彻执行的,哪怕是错误的指令!等你继续学习,增强了编程的功力,把程序中的bug全部解决,最终完成一个预定的任务时,你会获得一种在真实世界中很难体验到的成就感,一切尽在掌握之中!所以新手们千万不要轻言放弃!

对于已经学习过一门程序设计语言的同学,以上这些内容大部分都不会陌生,计算思维应该已经基本建立,完全可以自学Python。从C\\C++转换到Python的速度是非常快的,可能只需要1个月的时间就足够了。

Python语言入门比较容易,对初学者十分友好,甚至小学生都可以学习。但想要把它融会贯通、成为高手并不容易,需要进行大量的练习,把所有的“坑”都“踩”一遍才行。

第2篇是常用的第三方库,包含第10~14章,主要从数据处理和分析的角度,给大家介绍爬虫、NumPy、Pandas、Matplotlib、PySpark、jieba、wordcloud等第三方库。学习完这篇后,我们就能实现一个数据获取、处理、分析和可视化展示的完整过程了。

在“数据获取(爬虫)”这一章中,你将学习到如何从一个网站爬取下来想要的数据。计算机处理的对象就是数据,当你无法直接获取到整理好的结构化数据时(这些数据往往都是在数据库或者文件中),使用爬虫往往是唯一的选择。你需要和网站进行交互,发起访问请求,并获得回复的数据。如何从返回的大量HTML格式的数据中分离出你想要的内容,也是爬虫程序需要解决的问题。最后还要把这些数据保存到JSON或者Excel文件中,便于后续的分析和处理。

通过网页爬取下来的数据一般都会掺有一些“脏”数据,可能会有缺失和异常等情况。在“数据计算和分析”这一章中,我们可以使用NumPy和Pandas这两个库,帮助你快速地对大量数据进行清洗、加工和计算。这两个库是Python语言中使用非常广泛的两个库,能够处理一维、二维和高维矩阵,而且速度也非常快,比Python自带的列表要强大100倍。

数据加工完毕后并不是就万事大吉了,我们一般会使用图形化的方法将计算所得的结果呈现给用户。在“数据可视化”这一章中,我们将介绍Matplotlib这个最常用的库,学习直方图、线图、散点图、饼图等基本图形的绘制方法。另外,还介绍pyechart这个库,学习如何在地图上展示数据。

如果需要处理的数据量非常大,单机处理起来的效率太低,可以使用分布式的系统来加快数据的处理过程。在“大数据平台”这一章中,我们将简单介绍PySpark,以及如何使用它来完成分布式的计算工作。

自然语言处理是近几年比较热门的一个研究领域,我们将介绍jieba和wordcloud两个库,完成分词的功能和词云图的展示。

学习完第2篇的内容,你就不再是一个只能在黑窗口中编程的小白了。你的工作成果可以通过很多丰富的形式展现出来,可以给你的父母、朋友或者老板展示一下了。例如下方的截图都是同学们的作品。 

第3篇包含第15~24章,是Python语言在不同领域中的实际应用,我们选取了能源、电子商务、金融、社会科学、环境科学、房地产、大数据计算、人工智能、工业制造、农业科学共10个不同的学科或行业应用,带领大家进一步了解Python语言的实践能力。这部分的难度又提升了一个台阶,除了需要熟练掌握好Python语言本身以外,还需要有一定的数学基础和相关背景知识。由于篇幅所限,这一篇不会像前两篇讲得那么细致,读者可以根据自己的需要和能力进行选取。这一篇的内容主要由北京清数教育科技有限公司负责编写。清数教育是在清数大数据产业联盟(原清华大数据产业联合会)和清华数据创新基地的大力支持下成立的大数据与人工智能前沿技术教育和培训公司,他们也为本书第3篇的案例提供了配套实训平台,在平台上提供案例代码、数据集和运行环境,有兴趣的读者可以访问相应网址进行实践训练,免费体验。如果你能够独立地把这一篇啃下来,那么恭喜你,你应该可以谋得一个薪水还不错的Python开发工程师的职位了!

本书的编写得到了袁宝库和吴起凡老师的支持,其中第2、5、7章由吴起凡老师执笔,第3、4、6、8、14章由袁宝库老师执笔。第3篇由清数教育执笔。其余章节的编写、全书的统筹和修改统稿由杨亚完成。

由于作者学术水平有限,书中难免存在错误和不足,敬请读者批评指正,作者在此表示由衷的感谢。

作者2025年10月