3月15日晚20:00,“触脉123”直播对话节目播出第四期。本次直播节目中,触脉主持人张默宇对话《Python数据分析与数据化运营》等多部畅销书作者宋天龙,他具有多年Python开发以及应用的经验。
在这次对话中,宋天龙老师将围绕以下问题分享自己的经验,并为初学者提供一些经验参考。Python初学者应该如何学习?
如何评估自己是否适合学习Python?
Python速成是否真的存在?
以下为本次对话要点摘录:
Python小白走向大牛的4个学习阶段
张默宇:您从Python的初学者到目前著书立传的程度,经过哪些主要的学习阶段?
宋天龙:主要分为4个阶段。
第一阶段:掌握Python本身基础语法的功能,不包括Python的第三方库(除了标准库以外的库,包括Pandas、Numpy、Scrapy均不在基础语法内)。
这个阶段核心学习目标主要是了解Python基本逻辑,如何实现基本语法和功能。
第二阶段:不要单纯的看书,要练一遍
这个阶段需要注意的是,自己一定手动进行编码实操一遍。如果你只是看一遍,可能记住的内容就是20%。练一遍虽然比较耗时,但对于书中的库、方法可能掌握到60%——70%。
当然,上述提到的“掌握”指的是大概能想到在哪些场景会用到哪些库,但拼写会出现错误。
这是我在当时学习过程中实践过的一种方式。为什么要强调手动打一遍代码?因为实践的过程中会报很多错误,我们就会发现自己错在哪些地方,以及正确的方法应该是什么。这样做才会加深对知识点的印象。
总结以上两个阶段的学习而言,关键点在于我们可以大概知道在什么场景下会用什么样的方法。
有些Python学习者存在这样一种困惑:为什么自己认真学习后,依然不清楚在某些场景下应该选择哪些库的方法比较合适?觉得学习效率较低。
其实这很正常,学习是一个循序渐进的过程,我们需要做的就是进行下一阶段的学习,不断深入。
前两个阶段偏理论,学习的时间因人而异,以我自己为例,学习基础语法以及某个领域内的库,大概花费了1个月左右的时间。大家可以作为参考。
第三阶段:将理论与实践相结合
这个阶段学习的关键就在于通过项目,或者实际工作去提升相关技能。
因为我们在书本上看到的案例,其实都存在一个潜在的坑。这个“坑”是什么?书本上展示的案例数据,不管是结构、类型、数据还是量级都已经进行过规整。所以只要跟着书中的步骤一步步去写,就会进行的比较顺利。
但在实际工作中,情况并不相同。首先你需要通过不同的办法、来源拿到数据,经过各种加工后,才可以进行分析、探索性的挖掘,否则没办法应用。
所以将技能落地应用在实践的过程很重要,它可以帮助你在效率、功能完善性以及功能逻辑上不断完善。
完成该阶段的学习时间,根据自己的工作实践而定。从我的角度来看,如果你使用了1年左右时间的Python,基本上对Python在某个领域内的基本用法、用的哪些库和方法都比较熟悉了。
最后一个阶段,总结
善于总结是一种能够比较快提升自己的方法。
以我自己写书的经历为例,在写《Python数据分析与数据化运营》这本书之前,已经先后写了两本书。
在这种过程中,你会不断总结自己在各个项目中或者工作实践中遇到的问题,以及经验方法。
所以以我现在的角度来看,第一版《Python数据分析与数据化运营》中的代码比较初级,而第二版同样是实现功能,整体使用的方法、逻辑更加合理。
当然大家不一定是写书,选择博客、知乎或者其他媒体都可以,你写的过程就是总结问题、经验的过程。对于提升我们学习Python的质量是很重要的一步。
如何评估自己是否适合学Python?
张默宇:现在想学Python的人很多,但并不清楚自己到底适不适合学,对于这个问题有什么办法评估吗?如果决定学的话,需要提前储备哪些知识?
宋天龙:如果要对学Python这件事情进行框定,基本是以下两点:
第一点,你是否排斥编程?我们都知道Python是一个编程的工具,所以如果你比较排斥编程,可能也很难持续进行对Python的学习。
第二点,如果在你过往的学习过程中,涉及到的编程相关课程,所取得的成绩并不是很好,可能也不是很适合。因为过往的经历可能会反映出你在这方面并不擅长。
但是,决定是否学习Python,你应该考虑两件事:你适不适合做;你是不是必须去做?
对于另一个问题,如果单纯学习Python这个语言,并不需要过多额外的知识,掌握基本常识就可以。即便你并不知道某个常识,也会有报错提示哪个地方出现什么样的问题。
这点也是Python和其他语言不同之处。假设换做学习C语言、Java等,肯定需要具备一定的基础知识,而Python基本没有太多的门槛。
整体来看,Python目前是一个对于入门要求并不高的语言,并更适合大多数有应用需求的人进行尝试。
学习Python有哪些误区?
张默宇:那对于Python的学习者而言,在学习过程中,可能会遇到哪些瓶颈,或者误区,您作为过来人,有哪些避坑经验可以分享一下?
宋天龙:根据自己过往的经验而言,以下几点是我认为在学习过程中比较重要的:
第一,如果要用好Python这款工具,需要与其他知识相结合。
“其他知识”包括哪些?以做数据为例,不管是统计学,还是基本的算法、模型,这类基础知识,你无法通过Python进行学习,需要进行额外学习。所以,此处强调一点,把工具与知识相结合,才能做到学以致用。
第二,Python并不能解决所有问题。
以目前我的角度来看,Python唯一不能解决的问题,就是性能。此处指的是一个极端的性能,比如用Python做数据或做开发时,我们会有个共同的概念,不会把Python放到线上跑,原因就是Python的计算效率不如Java、Go等这类专门适合编程的程序。
第三,清楚并利用Python的优势。相对其他数据工作类语言,比如R、SARS等,Python处理千万级数据的这种性能比较不错。
并且二次开发的效率很高,较为笼统而言,Python是用编程做开发效率最高的语言之一,此外,包括易用性、迁移性、开源、免费,Python的生态都很好。
上述所说的,其中可能有一些不是Python本身的特性,但跟Python集成相关。例如,接触过linux类系统的人都知道,苹果笔记本或者CentOS系统服务器,它们自带Python。目前一般是Python2的版本,如果你自己安装一些第三方的库或者装Python3,修改了Python默认版本,一定会报各种各样的错误,因为原有的Python2版本依赖于系统内的服务。
这里建议大家,如果你有装第三方的库等其他需求,不要改动系统默认的一些设置,只去加一些自己所需的控制即可,像你自己建一个软链接的名称是可以的。
第四,如上述所说,Python基础语法以及编程并不难。真正的难点是什么?在于将Python投入实际的应用。
这点在上文也提到过,Python是一个工具,想要更好的应用它,就需要我们学习并掌握其他知识(比如业务背景,就要掌握业务知识)。
假如我们需要做算法类的,那么算法的基本逻辑,它适合哪些数据类型,中间处理过程大概分为几个步骤,每个步骤之间如何衔接,结果出来后如何解读和应用等,这些都是在工具之外需要掌握的知识。
在实际工作中,存在这样一种情况,很多人用Python做的数据分析工作,或者是建模,更多的是简单的调包,比如直接去调一下哪个库里的哪个方法,然后把结果返回即可。
这很难在某个领域内被称为专业人士。这也是在这次分享中我不断强调要将工具的能力与业务知识相结合的原因。
以上便是我个人在学习Python时所获得的经验,希望对大家能有借鉴意义。
没有过多编程背景,应该如何学习Python?
张默宇:对于刚接触Python这门语言,并且自身并没有太强编程背景的学习者,您有什么样的建议?
宋天龙:一般学习的方式就是两种,自学或报班。
如果选择报班上课,比较建议大家选择含有实际训练项目的课程。
如上文所提过的,理论与实际应用相差较大,如果没有结合实际训练,那在工作过程中,你可能依然不知道如何处理。
其次,在课程内容设置方面,尽量选择知识面较广的内容。广的定义是,不仅教你如何使用工具,还让你明白为什么这样做。
比如什么时候应该选择哪些库,为什么要选择它?实际操作中可能还存在其他的库,区别是什么?哪些场景下更适合用哪些库或哪些方法会满足你的需求?
这一类的知识同样很重要。
另一方面,结合自己的学习体验,我建议大家在自己比较年轻的时候,抓紧时间学习。因为学习的越早,对自己后期提升发展空间的帮助越大。从精力、学习接纳度这个角度看,年轻也相对比较有优势。
另一种方式——自学,由于在我过往的学习过程中,主要是自学的方式,所以结合自己经验,分享以下几点给同样是自学的朋友:
1、虽然网上有视频类的教学内容,但Python完整的知识体系,比较难在两个小时或者几节课的时间讲完整,所以比较建议结合Python官方的帮助文档学习。
2、对于第三方库的学习,可以使用像Ipython、Jupyter,直接用help(function_name)或function_name? 的形式打印出每一个方法的帮助信息。我建议大家在真正学习的时候一定要去看此类内容。
3、不管是学习过程中,还是工作中,很难避免报错的情况。假如我们在学习实操的时候遇到报错应该怎么办?
有几个比较好用方法:第一去看报错提示找到错误;第二查找解决方法,可以去Stackoverflow查,如果没有,借助谷歌/百度等搜索引擎;如果使用的是第三方库,可以去Github专门bug报错的issue模块进行查找。
这个过程中,Python、第三方库的安装也是一个比较麻烦的问题。我比较建议大家使用流行的Python集成环境——Anaconda。这样做的好处是什么?Anaconda上可以直接下载对应版本的python集成环境,安装后,直接包含python以及常用的库,省去自己来回装不同东西的麻烦。
速成学Python存在吗?
张默宇:速成学习python这件事情真的存在吗?有时候招聘面试的时候,会遇到一类情况,相关python的词很多人都知道,但问到具体细节时,就出现了问题。
宋天龙:速成这件事具体取决于你的需求,对于Python的功能界限需要速成到什么地步。
第一类场景:需求很简单,就是解决一个小的case。
比如爬一个简单网站,不需要你登录,只需要用python的库把链接拿回来即可。这类的确可以速成。
第二类场景:在任何一个带有专业技能的领域上,并没有可以速成的。
因为它需要大量时间,大量实践积累。比如使用python做数据的项目;爬虫、数据的集成清洗、计算;建模以及可视化;推送到哪些系统;提供什么API等,没有一种可以短时间速成,并精通掌握的。
从上述的两个场景,我们可以看到,假如一个东西很容易速成,那么一定意味着它没有太高的技术含量。