白魚秀
(榆林學院 信息工程學院, 榆林 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有效的結合了高性能與編寫程序簡單有趣的特色。在數據輸入輸出、數據分析和數據可視化方面,用較少的代碼快速完成某些復雜的實際應用,可以大大的提高學生的學習興趣、熱情,從而對編寫程序產生樂趣,為經后學習其它程序設計語言奠定基礎。