文章目录
一、前言
尽管 Python 学习资源已经一应俱全,但仍有很多年轻科研学者未曾踏足,当然其中包括各种原因,也无法强求,但如果有人觉得 Python 太难,又没有老师指导学习,恐会走弯路浪费时间的,那么一个 Python 数据工程师的 Python 学习经验分享或许能给你带来帮助。
二、为什么学 Python?
花费大量时间学习一门编程语言,总要有大收获,是吧?强哥认为从“广义”上来说主要是两个目的,一个是为了得到一份工作;另一个则是为了优化自己的工作,当然不排除一部分人只是单纯地觉得好玩。
而如果把学习目的集中在技术层面上,那 Python 能做的事可就太多了,什么数据分析、机器学习、机器人、游戏开发、网站开发、数据采集等等。因此我们学习 Python 必然是为了其中的某一个或几个方向,不同方向的学习路径和规划也不一样。
三、Python 学习路线与经验分享
这里我们就以数据处理、数据(含文本)分析、机器学习这几个学习方向为准,来描述一下 Python 语言的学习路径,在此之前,先弄清楚 Python 语言的内容分布。
从内容上来说,Python 可以分为三个部分——核心语言、标准库和第三方库。核心语言就是口头上说的 Python 语法,其中最主要的还是数据类型;标准库是 Python 语言自带的,具有特定功能的模块的集合,例如系统交互、网络请求等,目前 Python 共有 200 多个标准库;而第三方库实质上就是 Python 语言的生态,其中包含超过 40 万个 Python 项目,涵盖各个领域,如果我们想要专攻某一学习方向,技术上来说主要就是学习具有对应功能的第三方库的使用方法以及原理。
下面来简单分享一下学习 Python 的各个阶段的心得与经验。
1. Python 环境配置
这是学习 Python 的第一步,学编程语言可不能纸上谈兵,毕竟实践出真知,多练才能学得快。
一些 Python “小白”在自行配置 Python 环境时就会遇到各种各样的问题,有时甚至自我怀疑:我连环境都配不好,是不是废了,就这还学 Python?
其实不必如此,彻底玩明白环境配置本就不是一件简单的事情,遇到问题只不过是走了几步弯路而已,找到合适的教程就可以解决问题。回到正题,安装 Python 时解释器的选择以及开发环境的选择都是有讲究的,使用一些安装难度不高,但是功能十分强大的工具不仅可以简化安装过程,还能为后续的其他需求打好基础。例如 Miniconda 可以在附带 Python 的情况下帮助节省空间并且提供管理 Python 环境的功能;开发环境 VSCode 既可以兼容交互式编程环境 Jupyter Notebook,又提供了丰富的插件以及代码提示、代码补全、语法错误识别等功能,后续还可以使用各种 AI 插件来增加编程效率,而且 VSCode 学习成本远低于同样热门的开发工具 Pycharm。相关内容可以查看下面的文章:
2. Python 核心语言
学习 Python 核心语言(也可以说是 Python 基础)是入门 Python 的必要一步,无论后续深入哪个方向学习,都要先学会核心语言。
那么Python 基础难学吗?强哥认为,一点都不难。Python 是数据分析御用编程语言,即使不进行数据方面的任务,也时刻与数据挂钩(当然这里的数据不是指数据集),因此数据类型的学习是 Python 语言基础中的基础。如果对 Python 基础做一个分类,那么笔者将它大致分为三部分——数据类型、控制结构、函数与类。
数据类型这一部分主要是学习数字、字符串、布尔值、空值、四种组合数据类型以及这些类型的操作方法(注意“方法”是指特定类型对象相关的函数),例如字符串的分割方法str.split()
、列表类型的排序方法list.sort()
。
上述内容极其重要,后面如果需要进行数据处理和分析,那么关于这些类型的属性和方法都将受用。而且这些内容毫无难度可言,只是知识点较多,多种类型的灵活变换和操作需要多用才能精通。另外,在学习数据类型的过程中,你将接触到数值运算、变量定义、表达式以及代码书写规范等,早些养成良好的编程习惯也是一件非常重要的事。
控制结构主要包括判断语句、循环语句、异常处理等程序结构,常用于批量处理数据的场景中。与数据类型相比,这部分内容较少,难度也不算高,如果你有其他语言的基础,那么学习起来将会游刃有余。函数与类则是 Python 基础中稍难的一部分了,先说函数,一类是 Python 语言自带的函数,叫做内置函数,一般具有特定的单一功能。
Python 中包含 68 个内置函数,这些函数中大部分都很重要,且功能实用,也不难理解,例如四舍五入函数round()
、帮助函数help()
(能获取一个函数或方法的文档)、操作文件的open()
函数等。另一类是自定义函数,它是由用户自己编写的具有某种特殊功能的函数,这也是因为 Python 的内置函数与数据类型显然不能应对所有工作场景,所以必须提供给用户一个自己编写函数的途径以实现特殊功能,同时,这也是第三方库发展壮大的基石,因为其他所有第三方库就如同自定义函数的集合,例如某人开发了一个能够从PDF文件中提取表格的第三方库,那么这个功能一定是通过自定义函数实现的,而我们也可以通过定义函数来解决一个特定场景下的问题。
而类则是面向对象编程的产物,类的概念十分抽象,理解后对编程大有裨益,但如果我们学习 Python 的目的是数据处理与分析,那么只需要简单了解其原理即可,不必样样精通,而如果你有开发方面的需求,就需要好好学习关于面向对象和类相关的知识了。
总的来说,在数据处理与分析这条学习路线上,没有十分难学的 Python 基础知识,只是需要在知识点的基础上多练才能做到融会贯通。如果你已经有一定基础了,那么了解一下 Python 语言的内存管理机制会让你的数据处理工作更加安全、避免出现低级错误
最后,如果遇到程序报错,不要对着代码呆思,一定要先从报错信息中查看是哪一行代码出了问题,然后根据报错提示信息对症下药,弄清楚错误原理后也能避免以后再出现类似的问题。
3. Python 标准库
标准库是跟随 Python 解释器的安装一起安装的工具库,无法卸载,无需升级,功能稳定且实用。目前 Python 3 共包含 200 多个标准库,但不是每一个都要学习,跟之前说的一样,根据你学习 Python 的目的和方向来选择合适或必要的标准库去学习,甚至你可以等到有实际需求了再临时学习也不迟,毕竟大部分标准库是十分易学的工具库,例如循环进度条库tqdm
、文件(夹)操作库shutil
、随机库random
等等。
当然,有一些标准库的应用面非常广,强哥强烈建议大家主动去学习,系统交互库os
就是其中之一,这是 Python 中必学必会的一个标准库,它不仅可以用来读取、操作文件和目录,还可以执行系统命令,是处理文件必备的 Python 工具;
re
库也是非常值得学习的第三方库,它是文本处理大师——正则表达式的 Python 实现,可以帮助我们处理大量的复杂文本数据以及表格数据中的文本信息,同时也是文本分析的重要工具;此外,如果你有数据采集(爬虫)或者调用网络接口(API)的需求,那么网络请求库requests
也是必要的学习内容。不过这些标准库功能越强大,学习周期也就越长,其中正则表达式库re
最难学,但也最实用,另外,正则表达式并不是 Python 独有的,但掌握 Python 正则表达式后,你也可以在其他工具中使用正则表达式,例如 MySQL 数据库、Stata 等(不同工具的正则表达式规则可能略有差异)
4. Python 第三方库
第三方库,顾名思义,这是由第三方群体开发的工具库,如上文所述,截至发文,PyPI(Python Package Index)已经收录了超过 48 万个 Python 项目,且这一数字还在继续膨胀,这就是强大的 Python 生态!
这意味着无论你想做什么数据处理与分析,都可以在 Python 生态中找到相应的第三方库(可能不止一个),并且安装后即可使用。
大部分第三方库是用来解决核心语言和标准库无法解决的问题,例如处理表格数据的pandas
库、进行中文分词和简单文本分析的jieba
库、用于机器学习建模的sklearn
库等。这些工具库往往自成一派,具有自己独特的代码风格,所以有时候学习这些常用工具也要花费一定的时间,但这也不是绝对的,例如一个能够从 pdf 文件中读取表格和文字的第三方工具库pdfplumber
,只需要使用寥寥几行代码就能达到目的。如果你想做一些机器学习任务,并因此需要用到一些第三方库,此时理解这些第三方库函数的算法原理可能要比代码实现更重要一些。
对于有数据处理与分析需求的群体来说,一些第三方库是绕不开的,其中最绕不开的当属表格数据处理库pandas
,pandas
是以科学计算库numpy为后端开发而来的,因此继承了numpy
多样的矩阵变换和优异的运算速度,直到pandas 2.0
版本才新增了另一个后端——pyarrow
,不过默认使用的后端仍是numpy。由于pandas
独特、丰富的功能特性,使得它与 Python 核心语言和众多标准库的语法都不一样,因此需要专门学习(注意不是单独学习,学习pandas
的前提是已经掌握了 Python 核心语言)。我们已经推出了一系列 pandas 教程,需要的小伙伴可以在文末查看。
第三方库是由非官方组织、群体或个人开发的,更新的频率飘忽不定,全看作者心情,因此常常会出现明明安装了某个库,却无法运行程序,实际上这多半是因为库的版本不兼容。比如图像处理库fitz
在某一次版本更新时更改了部分函数的名称,又比如pandas
库从 1.5 版本更新到 2.0 版本时弃用了pandas.DataFrame.append()
方法,另外由于增加了pyarrow后端,所以一些原有函数的参数也增加了一些。另外,不少第三方库的更新会优化后台算法和环境依赖关系,例如笔者在使用pandas 1.3
版本分批读取一个超大的 stata 数据时,内存会发生明显的波动,即便是分批读取,也不能规避内存溢出,而更新到 2.0 版本后,同样的操作就不会引起明显的内存波动。又比如我们曾在 Python 制作词云图 一文中提到,词云图制作库wordcloud
以及stylecloud
都依赖于Microsoft Visual C++
环境(实际上只有wordcloud
依赖于Visual C++
,而stylecloud
依赖wordcloud
,因此它也依赖Visual C++
),而安装这个工具则需要使用几个 GB 的空间,网上一群不服气的圈内人都在琢磨怎么样才能不安装依赖环境就能使用wordcloud
。然后在wordcloud
由 1.8 更新到 1.9 版本后,大家惊喜地发现制作词云不再需要安装那坨硬疙瘩了,如果有看了我们的文章而安装了Visual C++
环境的读者,现在就可以将它卸载了,只需要将wordcloud
和stylecloud
更新到最新版本,即在终端中分别运行以下命令即可(更新或者卸载某个第三方库时不要在正在运行的代码中导入它,以免引发异常)。
Pip install wordcloud -U
Pip install stylecloud -U
最后,大家学习使用某个第三方库一般都是因为有了确切的需求,学习某个第三方库的第一步一般都是借鉴别人分享的代码,就像我们一直在分享各类工具库的使用方法。这就造成学习 Python 新工具的速度取决于你的 Python 语言基础有没有夯实,只有基础牢靠才能更快看得懂别人的代码并转化为自己的储备。
5. Python 实战案例
说了半天,大家学习 Python 的目的不就是掌握数据处理与分析的技能嘛,如果说按前面几小节顺序学习是在循序渐进,那么到了应用的时候,就是活学活用,追求得心应手了。比方说对于合并单个文件夹下多个 Excel 表,我们可能需要同时用到 Python 核心语言、标准库和第三方库,如果你觉得手忙脚乱,这说明你还没有掌握 Python 各个工具之间的配合,不过这都是正常情况,这个阶段多看一些 Python 实战案例可能会有更大收获。
通过阅读大神的代码以及解决问题的思路和过程并上手实验,新手往往能够得到以下好处:
a. 实际应用:通过实战案例,新手可以了解 Python 以及相关库在实际工作中的应用,而不仅仅是理论知识。
b. 发现新知:在实战案例中,新手往往能学到自己没有用过的,但又十分好用的工具库。
c. 提升编程技能:实战案例可以帮助新手提升编程技能,通过解决实际问题来熟悉和掌握 Python 的各种功能和特性。有时在查看别人的代码时,甚至会惊呼,原来代码还能这样写!!
d. 学习解决问题:通过学习他人解决问题的思路,也可以尝试如何自己解决问题,这是编程最重要的能力之一。
e. 鼓励创新:实战案例也可以激发新手的创新思维,鼓励编写出自己的程序,解决自身的实际问题。
f. 加深理解:通过实际操作,新手可以更深入地理解 Python 语言的工作原理。
四、时代变了,要把 AI 当作学习加速器
自 AI 问答机器人 ChatGPT 问世以来,已经给我们带来了太多惊喜。过去我们在学习 python 时遇到问题只能在网络上查找博客或者在问答社区寻找答案,搜索时还会纠结用哪些关键词。而现在只需要用白话问一下 ChatGPT 大概率就能得到想要的答案,极大程度地增加了我们学习的效率。所以当我们在学习 Python 时遇到一些不理解之处,直接求助 ChatGPT 就可以了。
不仅仅是新手,掌握 Python 基础之后, ChatGPT 的应用还能被更大程度的挖掘。在处理具体需求时,可以直接通过 ChatGPT 了解可用的工具库,并且得到这些工具库的使用方法。除此之外,AI 还能在处理异常、代码注释、代码修改方面提供帮助。如果你有一定水平,还可以调用 ChatGPT 的 API 开发出更实用的工具,例如可以使用 AI 直接处理本地电脑中的数据
五、总结
如果你想学习各种 Python 编程技巧,提升个人竞争力,强哥这里有一套全面系统的学习路线和资料,能让你在之后的学习生活中少走很多弯路!需要的小伙伴可以直接获取!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板