出品 | 端老师
那还是在2016年,端老师在职业的十字路口徘徊,听闻python非常简单易学,就抓住了这个稻草。那时候python还没有火,只有老美的一些学校把它作为计算机大一新生入门课程的授课语言而已。
时间来到2019年,python已然成为明星语言,在这两年突飞猛进。主要的推手是机器学习和人工智能的兴起。机学的基础库如Scikit-learn, TensorFlow等都是用python写成的。加上资本迅速向这些领域倾斜,大学教育适应市场需要时间,高薪和相对低的门槛一下子激发起人民群众学习python的热情。
photo by TIOBE index
一、那2019年学python晚不晚
晚了晚了,大清都亡了。就像买房,晚了一步,成本在升高,而收益在下降。2018年的互联网寒冬冻死了一大批落不了地的人工智能公司,市场的需求在缩减。另一方面,大学校里第一批大数据、人工智能毕业生才刚新鲜出炉,供给在增加。这就意味着竞争的激烈化和低端岗位工资的下降。
那是不是就不学了?端老师认为大环境只是基调,小环境才更重要。只要感兴趣,想转行,能付出持续行动,总是有机会的。端老师身边已经有数位之前从未接触过编程的小伙伴通过自学成功转行了。
目前想通过自学python转开发是比较困难的,但是数据分析行业的大门仍然向初学者敞开着。之所以会这样因为数据源于实际的业务,数据最终要产生价值也得通过业务来落地。它不是一个纯靠技术的领域,因此对技术的要求没有那么高。当然也有对技术要求很高的工种,比如数据挖掘,数据开发和数据工程,他们类似传统开发岗位,对工程和算法能力要求很高,通过构建面向C端的基础设施使数据产生价值。但是和企业内部业务部门紧密联系的数据分析岗更看重的其实是行业/业务知识,沟通能力和影响力而不是框架或者算法。所以那些在一线业务岗位做得比较出色的小伙伴如果转行数据分析,甚至会比一直从事数据分析的童鞋更出色,这一点我从未怀疑。
二、老师,说了那么多,那python怎么学呀?
居士的学习小组里给出了这周的学习任务,能按这个顺序自己过一遍,你就已经可以用编程语言极速处理工作中那些打开就死机的excel了。
(photo by 公众号:木东居士)
大多数笔记本电脑都自带Python,所以无需安装,进入终端输入python即可。但是终端的功能太少,还是装一个界面软件来操作更方便,还不太熟悉的小伙伴可以使用Anaconda,有一定基础的小伙伴推荐使用Pycharm。还有一个偷懒的方法,能scientific上网的同学可以使用Google的Colab平台直接在云端使用别人给你安装好的python。
参考这周的学习计划可以发现,Python基础有两个方面:数据结构和函数逻辑,也就是存储和运算,或者说表达和控制。人有眼耳,物理世界有颜色和声音,它们之所以可以呈现在计算机上,因为它们被表达、被存储(最终归为光或者电),然后被控制、被运算。数据结构和函数逻辑有一个共性--它们是黑盒。你不需要知道数据结构的内部组成,只需要利用它外部提供的接口就可以操作;同样地,你不需要知道函数逻辑的原理,只需要知道输入什么输出什么就可以使用。计算机技术能普及靠得就是这个。对于使用者来说,只需要知道怎么用就好了。对于建造者,才需要去研究它们是如何被构建的。使用python非常简单,理解python则非常难。所以回答标题的问题,python入门非常简单,也非常困难。
若真的打算学习python转行,端老师推荐用三个月时间在以下三门MOOC课程里选一学下去:
Edx上由MIT出品的《Introduction to Computer Science and Programming Using Python》
Edx上由Harvard出品的《CS50's Introduction to Computer Science》
Berkeley出品的《CS 61a》
上文提到的MIT的入门课是端老师职业发展的基石,端老师身边成功转型的小伙伴也都是学过这门课的。它不仅仅是介绍语言,而是带你入门最基础的计算机科学。Berkeley cs 61a的老师John Denero本科攻读了哲学和计算机双学位,对计算保持着追问,可以说非常符合端老师的口味了,推荐有一定python基础的童鞋通过这门课来提高。Harvard的课程涵盖的领域最广,制作也是最精良,能充分调动兴趣,推荐那些一直觉得编程语言枯燥的童鞋学习这门。上述课程除了cs61a,在网易云课堂都有翻译版。
(photo by edx)
三、老师,那Pandas又是什么?
Pandas是用python写成的一个工具包,用于处理表型数据。端老师每天要处理很多表型数据,查看,检索,变形,计算...靠得都是pandas。Pandas的基本用法和骚操作,都是在工作中需要用的时候才学到的。可见一个有挑战的工作对于脱离学校的人来说还是挺重要的。大多数人的能力不是自然生长的,都是被逼出来的。先掌握一个大概,然后在工作中实践,是学习工具的最佳方式。
Pandas的安装可以说很常规了:终端输入pip install pandas即可。Pandas的Series源于Numpy的Array(最终源于C的array)。Numpy的Array就是纯数字组成的序列型数据结构,因为生活中的表型数据不一定每一列都是数字型的,可能有文本型的,所以Pandas的Series扩展了Array,使其能存储的值从纯数字变为几乎所有的数据类型。为了提升效率,对于复杂的、不统一的数据类型,Series序列存的不是数据本身,而是指向该数据的内存地址。Series还继承了Array的向量运算方式。向量运算(即直接对整个Series而非对内部元素逐个进行操作)往往比对序列中的值一个一个执行for loop更快。
至于DataFrame,可以理解为Series of Series,即内部元素本身为序列的序列。所需掌握的操作和SQL基本操作一致:
读取: read_csv
选取列:df['col_name']
分组计算:
df.groupby(['col_1', 'col_2']).apply(lambda df: (df['col_3'] * df['col_4']).max())
表格连接:
pd.merge(table_1, table_2, how='left', left_on='left_col', right_on='right_col')
上过端老师SQL课程的童鞋可以把SQL里的这些操作对号入座,然后你会发现pandas原来没什么难的,唯手熟尔。
第二周的分享就到这里,下周我们继续聊统计。谢谢大家的阅读。