李文娟
甘肅省定西市安定區(qū)教育局 甘肅定西 743000
在數據科學、人工智能、大數據分析等迅猛發(fā)展的當前,數據可視化的方法不勝枚舉,數據可視化的目的主要是直觀展示信息的分析結果和構思,使大量抽象的數據具象顯示。國外常用的數據可視化工具有Visual Eyes、Google Trends、Many Eyes、Grasshopper、WebGL 等,國內常見的數據分析工具有Excel 數據圖表分析、SPSS 在線(軟件)數據分析、CiteSpace 可視化文獻分析、Python 第三方庫數據可視化等。本文以Python 語言數據可視化的過程為例,展現Python 強大的數據分析及可視化功能。
奧地利科學家維克托·邁爾-舍恩伯格是最早洞見大數據時代發(fā)展趨勢的數據科學家之一,2012年他在《大數據時代》中前瞻性地指出,大數據帶來的信息風暴正在變革我們的生活、工作和思維方式。國際互聯網數據中心預測,2025年全球每年產生的數據將達到175ZB,如果把175ZB 全部存在DVD 光盤中,那么DVD 疊加起來的高度可以繞地球222 圈。在如此海量的數據中,如何快速便捷地展現和發(fā)掘其中的價值,是一個巨大的挑戰(zhàn)。大數據時代信息量暴增,高效地獲取數據成為人們最關注的問題,也將成為未來研究的趨勢。
數據可視化的發(fā)展可追溯至20世紀50年代計算機圖形學的早期。在中國知網學術平臺上,以“數據可視化”為主題詞檢索發(fā)現,最早在1993年有一篇數據可視化的研究報告,文中提到1986年美國提出科學計算可視化的概念,在國際上引起廣泛重視。從20世紀90年代開始,國內一些高校和研究所相繼開展了可視化技術的研究[1]。根據知網發(fā)文年度趨勢表可知,從1993年至今,有關數據可視化的文獻數量逐年增多,尤其從2012年開始增長速度加快,在2020年達到峰值,至今研究熱度一直未減。
表1 中簡述了當前常用的6 種數據可視化工具,它們在各自的應用領域有獨特的功能優(yōu)勢,Visual Eyes 常用于可視化教學;Google Trends 應用于全球新聞等各類信息的可視化;Many Eyes 用于展現在線的可視化社區(qū)信息;Grasshopper 在建筑信息可視化方面更占優(yōu)勢;WebGL 是一個不需要組件加載的網絡三維可視化技術;Cite Space 在論文熱點研究可視化方面功能強大。相較這些技術手段,Python 的應用領域更為廣泛,發(fā)展前景更好。
Python 是Guido van Rossum 在1990年開發(fā)的一個輕語法、弱類型的高級編程語言軟件,它擁有強大的第三方庫,最大的優(yōu)勢是比其他語言更簡單易學,功能強大,數據結構高效,能快速實現面向對象的編程。除了數據可視化功能,該語言也廣泛支持應用程序的開發(fā),在詞云、數據可視化、數據倉庫與數據挖掘、仿真系統等方面都有很多應用。在云端、網站、游戲開發(fā)、機器人、航天飛機控制、物聯網終端等領域,Python 應用無處不在[8]。此外,Python 還可以利用第三方庫爬取網絡、網頁以及網站內容,從而快速地收集所需要的信息。近年來,Python 在人工智能領域扮演著重要的角色,有很多典型的應用案例,例如:谷歌的無人駕駛、谷歌的AlphaGo 項目、微軟的小冰、蘋果的Siri、IBM的Watson 等[9]。
Python 有標準庫和第三方庫兩類,標準庫Python 安裝自帶,可供使用者隨意使用,第三方庫則需要另外下載或者在線安裝。強大的標準庫是基礎,豐富的第三方庫是強化,隨著應用領域的拓展,強大的第三方庫使用途徑越來越廣泛,在高中信息技術教材中,涉及的第三方庫較多,每一個庫都有一個典型的應用特例,下面通過表2 對這些庫進行匯總介紹。
表2 Python 第三方庫介紹
通過查閱大量文獻,發(fā)現利用Python 實現數據可視化的過程都有固定的模式。如戴瑗、鄭傳行基于Python,在爬取及分析南京二手房數據時,對數據進行采集、清洗,再對清洗后的數據進行可視化分析。翟高粵基于Python 的數據分析過程包含需求分析、數據獲取、數據預處理、分析建模、模型評價與優(yōu)化、部署等步驟。陳都、徐峰的創(chuàng)傷流行病學可視化研究包括數據導入、數據清洗、統計分析、數據可視化以及模型建立等步驟。錢貝貝、陳志波基于Python 爬蟲的音樂數據可視化分析過程包含數據采集、數據預處理、數據分析和可視化展示等步驟,研究隱藏在這些海量數據背后的規(guī)律。本文將借鑒高中信息技術教材中數據處理的過程進行數據可視化研究,按照數據采集、數據整理、數據分析與數據可視化四個步驟,展示Python數據可視化的過程。
基于《三國演義》小說文本,利用Python 實現文本和數值數據可視化。首先用詞云將文本數據可視化,主要利用jieba 庫分詞統計、imageio庫導入圖像、WordCloud 庫生成詞云功能;其次用圖表將數值數據可視化,在第一步的基礎上,采集jieba 分詞統計出來的高頻人物詞,利用CSV 文件處理,利用pandas 庫中的函數read_csv()讀取,利用NumPy 庫指定生成柱狀圖的列數,利用Matplotlib 庫中pyplot 函數繪制柱狀圖。
Requests 庫和Beautiful Soup 庫在《普通高中教科書·信息技術必修1 數據與計算》教材中沒作介紹,教材涉及的相關內容主要是網絡爬取數據這一內容的拓展,向學生展示爬蟲爬取數據的原理與過程,本文將不再贅述。
3.1.1 數據采集與整理
數據采集主要是明確數據需求、確定數據來源、選擇數據采集的方法。選擇處理的對象是《三國演義》小說文本,通過網絡采集的方法,下載獲取文件;數據整理是相對煩瑣的一步,主要通過Word文檔整拼寫檢查及文檔校對功能校正文字,然后整理成txt 文件,放在指定文件夾中。
3.1.2 數據分析與可視化
數據分析與數據可視化既緊密聯系又相互融合,此處使用結構分析法,將分析的結果以詞云的形式生動、直觀地呈現出來。首先使用jieba 庫進行前20 個高頻詞統計,具體過程如圖1所示,從圖中可知在《三國演義》中曹操、孔明、劉備等詞語出現頻率很高,大概可以得出小說主要圍繞這些人物展開故事。
圖1 《三國演義》前20 個高頻詞統計
具體代碼如下:
print(items[i][0],items[i][1]) #輸出詞和出現次數
其次在jieba 分詞的基礎上應用imageio 庫和Wordcloud 庫生成詞云,具體如圖2所示,通過文字大小決定詞語頻率,詞云可以將小說出現頻率較高的主要詞語直觀呈現出來。
圖2 《三國演義》詞云
具體代碼如下:
3.2.1 數據采集與整理
此處的數據采集基于以上網絡采集的文本,具體步驟是根據上面jieba 分詞統計的高頻詞,刪除與人物無關的高頻詞匯,只保留人物詞匯,將詞匯與頻次統計整理在數據表格文件中并保存為csv 文件,放在指定文件夾中。
3.2.2 數據分析與可視化
為清晰顯示每個高頻人物詞出現的數量,選擇對比分析法,生成柱狀圖,從而直觀地展示小說中出現頻率較高的七位人物的頻次差距,從圖3 得出頻率較高的七位三國人物是曹操、孔明、劉備、關羽、張飛、呂布、趙云,出現頻次分別為1 451、1 383、1 252、784、358、300、278。
圖3 《三國演義》前七位高頻人物出現的頻次
具體代碼如下:
Python作為眾多數據可視化呈現的工具之一,有簡潔實用等多種優(yōu)勢,作為三大主力編程語言榜首的Python,除了應用領域廣泛外,相較其他數據可視化軟件或語言,既能用圖表實現數值數據可視化,也能生成詞云實現文本數據可視化,這是Python實現數據可視化或者數據分析的獨特優(yōu)勢,也是本文探索的價值所在,Python 的前景優(yōu)勢可歸納為以下三點。
在爬蟲、數據分析、機器學習等模塊,Python具有巨大的潛力,強大的第三方庫賦予Python 更多的應用領域,其中pandas、NumPy、 SciPy 等用于數據分析,Matplotlib 用于作圖,sklearn 用于機器學習,PyBrain 用于神經網絡,PyGame 用于多媒體開發(fā)和游戲軟件開發(fā),webpy 用于搭建Web 框架等。
Python 入門簡單易學,從事Python 開發(fā),工作機會很多,未來發(fā)展空間也很大,在數據科學、人工智能、網絡爬蟲、游戲開發(fā)和桌面應用開發(fā)等方面,相關職位種類逐漸增多,如Python 數據分析師、人工智能工程師、爬蟲開發(fā)工程師、游戲軟件開發(fā)工程師等。
未來Python 將會在功能應用方面更快更高更強,Python 本身就是一個很實用的編程軟件,其標準庫和第三方庫非常強大,任何方向的技術編程都能找到相應的支持庫,眾多開發(fā)公司將它作為開發(fā)語言。近幾年PyPy 解釋器在不斷加快Python 的運行速度,相信再過幾年Python 在運行速度和開發(fā)效率方面將有很大的提升。