一名数据分析师的Python学习历程

61 阅读6分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第30天,点击查看活动详情

导读:前期,将自己完整的SQL学习历程尽可能详细的总结了一遍,后台也收到了一些读者的反馈,并私信交流Python的学习历程,恰好这也在个人的计划之中。私以为,相较于SQL这种知识体系相对单一、内容体量有限(是指常用操作范围,如果想成为数据库专家自然也是学海无涯的)的知识,分享Python的学习历程要复杂得多。一方面。编程语言本身要涉及计算机组成原理、部分数学基础、数据结构与算法等等,要求更为综合;另一方面,各种编程语言之间也相对互通,若有一门编程语言的基础的情况下再学其他编程语言就会相对容易得多。所以,本篇仅就自身在学习Python过程中的基本路径进行总结。

图片

01 基本情况

个人学习Python之前,其实是有过系统学习C/C++经历的,这也是大学多数信息类专业的必修课程,但其实当时是学的马马虎虎,谈不上兴趣和钻研。而后,随着研究生期间学术论文的需要,改用Matlab更多,至于C语言则没再碰过。再之后,经历了一段编程真空期后,因为人工智能和数据科学的日益火爆,开始入坑Python学习大潮中,期间也见证了各种培训机构的炒作,一定程度上也加深了自身学习Python的热情。

正式确定开始学习Python后,大致经历了这么几个阶段:

  1. 各种入门教程科普阶段

  2. 以爬虫为牵引熟悉理解Python编程思想阶段

  3. 系统学习Python数据结构与算法+LeetCode刷题阶段

  4. 专注于数据科学方向的Python沉淀阶段

当然,本文今天重点讲述的是前三个阶段,第4个阶段内容更为庞大,留作后续单独开篇。

02 入门科普

其实这个过程是最难的,但同时也是学习收获上升最快的。说它难是因为很多初学者在学习一门新知识时,并不会很清楚的掌握其知识框架、学习主线以及内容边界,很容易陷入东一榔头西一棒槌的局面。所以入门科普阶段,个人还是建议从一本相对体系完备的入门教材为主,至于教材的难度其实是因个人基础加以选择。在学习的过程中,建议学习3遍:

第一遍走马观花式通读,重在建立知识框架;

第二遍分章节研读,不求严格按照成书顺序,可以针对其中的某个章节深入研究,在研究过程中遇到问题时及时解决,个人当时的一个最大感受就是解决疑问的过程就是一个入栈出栈的过程,比如为了查找问题A,在学习A的解答过程中又会遇到问题B,而在查找B的解答时就会遇到问题C,如此反复,直至各个击破再次回到问题A时,那么估计这个问题的立体式知识框架都已比较清晰了;

第三遍注重查缺补漏,对于一本入门级教材而言,里面介绍的知识通常来讲都是需要掌握的,所以可以适时进行有所侧重的第三遍学习,当在此过程中出现触类旁通、连点成线的效果时,或者全书的80%知识点已经有效理解,那么入门阶段就已基本完成了。

经过这一阶段,理想情况下应当具备了较为完整的Python知识框架,至少在遇到问题和报错时懂得如何有效描述和查找答案。

03 学习Python爬虫

爬虫是python的一个重要方向,包括一些企业也会专门设置python爬虫岗位。和很多python初学者一样,个人最初学习Python时也是从爬虫这个方向开始的,在有了一定Python经验之后我仍然建议初学者以Python爬虫作为初学的练手方向,其原因也再简单不过:Python爬虫语法简单,学习效果反馈明显,可谓是所见即所得。当然,要想成为资深爬虫工程师那也是要付出长期坚持和努力的。

简单总结来看,学习Python爬虫的过程其实就是学习几个常用库的过程,比如个人将爬虫区分3步:获取网页响应、解析目标字段以及爬虫结果保存。其中前两步是重点,尤其是获取网页响应时,其实又会涉及到很多方法和技巧,包括目标url的分析、反爬与反反爬等等,这实际上也是爬虫最难的一环。在获得了网页响应执行目标字段解析时,则会有套路可循得多,常用的无非就是那三种(正则、lxml、和beautifulsoup);而到了保存爬虫结果则是可选项,简单的保存成文件,数据量较大的可以写入数据库,甚至有时候不保存也是可以的。

对此,分享以下2篇推文,致敬曾经初学爬虫的自己:

  1. 学习python爬虫的平凡之路

  2. 多种爬虫方式对比

04 数据结构与算法

实际上,在完成入门科普之后直接学习爬虫可能并不是一个绝对合理高效的过程,而仅仅是出于即时体验编程效果而言的。那么,入门之后最应该学习的是什么呢?个人认为是数据结构与算法。程序=数据结构+算法,所以学习编程的过程其实无时无刻不在跟数据结构与算法打交道。如果把一个程序员的编程水平类比武林高手功夫高低的话,那么数据结构是招式、算法则是内功,二者缺一不可。

学习数据结构与算法的过程,个人主要经历了理论和刷题两部分:理论篇优先推荐B站北大陈斌老师的mooc视频,完整学习下来感觉是讲的既对新人友好又能启发思考,个人也是完整的学习了两遍;刷题则毫无悬念的推荐LeetCode平台,这应该也是绝大部分程序员刷题的网站了。

图片

B站有多个版本

数据结构与算法,其实个人认为这是一个在提升编程技能路上有标准无止境的课题,不可短期速成、但求徐徐图之。