文科生Python编程遇到的问题

遇到的问题有哪些,如何解决

Posted by 刘政永Dmer on June 14, 2020

如果你没有良好的Python编程基础,在尝试应用数据科学方法时遇到了问题和困难,又不知道该如何有效解决,这几篇博客帮你解疑答惑(根据玉树芝兰《Python编程遇问题,文科生怎么办?》整理而来)。

遇到的错误及应对

几个月以来,我一直在发布数据科学类的应用案例文章。我的目标是帮助初学者建立信心,激发兴趣。从反馈来看,确实吸引了不少“文科生”来尝试数据科学方法。

这里所谓文科生,就是没有编程经验,却又对数据科学感兴趣,甚至不得不实践数据科学(这种压力往往来自于导师、老板和同侪)的人。

我承认,这么定义“文科生”,有些利用刻板印象简化问题的成分。实际上,现在不少文科专业学生,都是高素质复合型人才,编程玩儿得比IT类专业都要熟练。如果你恰巧就是个复合型人才,觉得这个称呼冒犯了你,请你谅解。但至少你得承认,相当多的文科专业同学,还是对技术不够熟悉,有抵触甚至是恐惧心理的。

我收到了不少读者留言和来信,提出了许多疑问。其中有很大一部分,是在实践编程环节,遇到了错误提示,向我求助。

对于这一类的反馈,我秉持着“能帮就帮”的原则。一两句话能够说明的问题,我就旋即答复;对于那些需要深入调查的问题,我会让读者把Jupyter Notebook或者R notebook文件以及数据发给我。这里真得感谢文学化编程环境的提供者们,给我和读者这样便捷沟通、重现问题的方式。

但是,按照反馈的情况来看,还有不少读者遇到了问题,没有能够解决,就直接放弃了。

我这样确信,是因为前些日子给一年级的硕士研究生布置了同样的练习作业,重现我一系列文章中的结果。他们很快就遭遇到了问题,但是长时间自己瞎折腾,没有跟我及时沟通。直到最近的一次的工作坊,我用了几分钟的时间,消除了一直困扰他们的“疑难杂症”,做出了预期的结果。看他们一个个喜上眉梢的样子,很享受。

我能够理解他们的心情。我们总想留给别人聪明、勤奋和积极主动的印象。轻易提出看似异常简单的“傻问题”,可能会让我们的自我评价受挫,觉得自己没有能力,又被别人看作“懒惰”。所以许多情况下,我们遇到问题,喜欢自己先折腾一番。

动手折腾并不是坏事。以正确的方法尝试解决问题,会帮你积累认知。所谓的“编程经验”,很多就是从各种失败尝试中提炼出来的。但是如果你面对错误,尝试使用的方法低效,甚至根本不得其法,那就得不偿失了。我们时常揶揄的“从入门到放弃”,往往就是这么来的。

本着“授人以鱼不如授人以渔”的原则,我今天跟你谈谈,文科生该如何应对数据科学Python编程中可能出现的问题。

许多程序员和专业人士可能会对这样的主题不以为然,甚至嗤之以鼻——除错(debug)是一门专业的学问,你打算一篇文章讲清楚?吹吧!

诚然,我不可能用一篇文章讲清楚如何编程除错。我只想给文科生一些建议,因为他们的情况比较特殊。

对他们来说,直接列一个清单,说明如何除错是不够满足需求的。咱们得结合具体的场景来谈。

文科生遭遇Python编程问题的场景该如何分类呢?

我根据长期的观察和思考,认为可以分成3类:

照葫芦画葫芦; 照葫芦画瓢; 找葫芦画瓢。 你可能看得不知所云。简单解释一下。

文科生使用Python编程,往往没有程序设计的基础训练。他们不是从基础关键词、语法、数据结构、算法的路径学下来的。他们拿到一个任务,一般都有明确的时限,却没有解法清单,唯一的线索是“这个问题可以用Python (或者R)来解决”。

有人说,这就像是某人被塞了一把伞,然后推到台风中心。我觉得挺形象的。

所以,他们首先寻找的,不会是Python(或者R)的基础教科书,而是样例。

如果恰好有个样例,讲如何绘制词云,如何做中文情感分析,如何用决策树分类,如何抽取海量文本的主题……恰好跟他们的任务一致,那他们自然如释重负。

于是他们就开始了第一步,照葫芦画葫芦,先把样例中的代码重复实践一遍,确定本地可以运行。

做好了第一步,出了正确的结果,他们也就来了信心。下面需要做的,是把自己的数据扔进去,看能否出预期的结果,这一部分,就算作“照葫芦画瓢”。

许多人只需要前两步,就能完成任务,高高兴兴收工了。但是如果很不幸,你的任务和样例有一些区别,那你就得在样例基础上,添加新的代码,调用新的软件包来尝试完成任务。你无法自己从头造瓢出来,这一部分就得“自己找葫芦画瓢”了。

对大部分“文科生”来说,场景就是这三类了。出离这样的要求,要么外包,要么自己从头学编程。等他扎扎实实学会了,也就不算文科生了。