白鱼秀
(榆林学院 信息工程学院, 榆林 719000)
习近平在中共中央政治局第二次会议学习中强调,我们应该深入了解大数据发展,推动实施国家大数据战略,加快建设数字中国。国务院印发《新一代人工智能发展规划》,鼓励加快推动人工智能发展[1]。全国计算机等级考试(NCRE)加入“Python语言程序设计”科目。Python应用领域广泛,市场需求不断上涨,大型门户网站积累了海量信息,提取有价值的信息,应用于数据挖掘、海量数据分析。就业前景可观[2],机器学习、AI工程师,搜索引擎工程师、数据挖掘/分析工程师人才紧缺。
大学教学如何与时俱进,不被时代所淘汰,是每一个高校教师值得思考的问题。程序设计语言作为计算机专业必修课程和基本技能,注重培养学生计算思维能力[3],用计算机解决问题的能力。
目前,普通高校都是以传统的C/C++或者Java作为学生编程入门语言。虽然,C/C++和Java语言一直占据计算机编程语言数一数二的位置,但是,C/C++或者Java语言兼顾性能采用较为复杂的语法规则[4],不容易快速掌握。并且,在当前人工智能、大数据和互联网+时代,它们不在是最佳选择,所以其教学改革势在必行。
Python作为一种可解释性语言,易学、易读、易维护,相比较其他不少主流编程语言,Python容易上手[5],具有更好的可读性,非常适合编程初学者作为入门语言。作为一种免费开源语言,拥有丰富强大的第三方类库[6],可以高效的开发各种应用;其扩展性、嵌入性和跨平台性也是其它语言所不能相比拟的;并且拥有庞大的开发者社区和论坛,学习和讨论知识更容易,便捷。
随着人工智能、大数据和物联网等兴起,Python已成为2017年最受欢迎的人工智能编程语言。人工智能+Python已应用于很多领域。谷歌无人机、小冰、IBM Waston沃森、苹果Siri和谷歌AlphaGo(阿尔法狗)等。
TIOBE排行榜能显示当下最热门、使用最多的编程语言[7]。由图1中TIOBE排行榜中显示,JAVA和C++热门语言不同程度在下滑,唯独Python不断增长并上升到第4名的位次。2012年至2017年,Python已成为开发者使用增长最快的程序设计语言。
图1 Python发展趋势
Python语言明确、优雅、简单。它的优点主要显现在以下几个方面:
战略定位明确:简单严谨,易用专业,注重解决问题不是语法本身。作为一名胶水语言,可以很方便的调用其它语言编写的功能模块,结合形成简单强大的新程序。
软件质量高:Python简洁优雅,注重程序的可读性、一致性。建立了面向对象程序编程思想,从而代码的可重用性、可维护性更高。
开发效率高:Python语法简单,没有过多的条条框框的语法规则,对程序员友好,容易上手。并且自带的各种模块和丰富的第三方库,使得开发者只需要很少的代码量就可以实现强大的功能。
可移植性高:Python开发环境配置简单,Linux和mac和环境都内置了python,程序不需要做任何改变,可以在不同平台上直接运行。
丰富强大的库:Python资源丰富,提供了强大的标准库支持,包含了解决各种问题的类库,可以很容易的完成复杂的编程问题,高效的开发各种应用。在数据抓取、数据分析与展示等方面都拥有强大坚实的基础设施,建立了良好开放的生态环境。
大数据时代面临的首要机遇是如何分析和运用获取到的海量数据。Python语言十分善于获取数据、分析数据和运用数据。所以可以借助Python增强数据利用及其处理能力,提高对大数据发展规律的掌握,使得数据在各项应用中发挥作用。
计算机程序主要是把用户输入按特定需求转换为输出的过程,输入输出是计算机的基本功能。
分别用C语言、Java语言和Python语言实现从键盘输入两个整数,实现这两个数的求和。实现代码分别如表1,表2,表3所示。
由上比较可知,C语言极大依赖程序员的自身编程能力,JAVA语言语法冗长,体态臃肿,Python重视程序的可读性、简洁性和一致性,抽象化了许多内容,让开发者专注于业务逻辑而不是关心语法结构细节,代码行数少,用尽量少的代码完成了更多的工作,更有利于学生入门上手,如表4所示。
目前,微信是大家互相分享和聊天的一种生活方式。大家会通过朋友圈分享有意思的文章与自己的生活。朋友圈比较有意思的信息是各位好友的个性签名。我们以所有好友的个性签名为数据源,爬取获得所有好友的个性签名信息。
表1 C语言实现两个数的求和
表2 Java语言实现两个数的求和
表3 Python语言实现两个数的求和
表4 C/Java语言与Python语言的比较
首先获取数据,借助Python的itchat库对所有好友的个性签名数据进行获取。itchat库很好的兼容了微信个人账号的API接口,使我们能便捷地获取微信的数据信息。但是由于获得到的个性签名数据中存在很多表情符号等非文字信息,所以需要对数据进行预处理处理,运用正则表达式替换掉无关表情和符号,最终获得所有好友的个性签名纯文本内容信息,代码实现如表5所示。
表5 获取朋友圈个性签名信息
由上可见,只需要10行代码即可完成所有好友个性签名的数据获取与清洗。而C/Java语言完成此操作相对困难,需要调用底层驱动程序。同样,C/Java读取、分析Excel数据特别复杂,而Python中有很多现成可以利用的数据分析库,如Pandas等,可以很方便的读取Excel、Csv和Sql等格式数据。并且Scikit-Learn机器学习库支持回归、分类、聚类等强大的数据挖掘算法,可以对获取到的数据进行快速的数据挖掘分析。
Python提供了丰富的用户交互界面,可以直观的了解数据分布形态。提供了很多绘制图形的标准库,比如强大的可视化matplotlib库,支持绘制散点图、折线图、条形图等二维和三维图形。程序员只需要加载、调用,即可实现现有库、函数功能的调用,省去自己编写大量复杂底层代码的过程。
我们根据上一步获得的个性签名信息数据,绘制微信好友个性签名词云图。词云图,又称为文字云,是对文本中出现频率较高的“关键词”的可视化突出展示。首先把获取到的数据拼接成为一个字符串,然后进行jieba分词,最后调用wordcloud库函数绘制相应的词云图,最终所生成词云图如图2所示。
图2 朋友圈词云图
如表6所示。
此外,我们可以根据自己的兴趣,获得朋友圈其它信息,例如性别、地区等信息,分析微信好友男女比例和地区分布等并进行图形展示。
表6 朋友圈个性签名词云图
Python有效的结合了高性能与编写程序简单有趣的特色。在数据输入输出、数据分析和数据可视化方面,用较少的代码快速完成某些复杂的实际应用,可以大大的提高学生的学习兴趣、热情,从而对编写程序产生乐趣,为经后学习其它程序设计语言奠定基础。