肖慧明
(遼寧軌道交通職業(yè)學(xué)院,遼寧沈陽,11000)
Python是目前主流的程序設(shè)計(jì)語言,主要是面向?qū)ο蟮摹⒛芎唵慰焖俚木幊蹋鼮殚_發(fā)者提供了高效的高級數(shù)據(jù)結(jié)構(gòu)。Python的創(chuàng)始人為吉多·范羅蘇姆 為打發(fā)圣誕節(jié)的無聊,決定研發(fā)一款基于ABC語言的新腳本解釋性程序。Python開發(fā)技術(shù)主要特征就是簡潔性、易讀易學(xué)、靈活擴(kuò)展、免費(fèi)開源、強(qiáng)大的數(shù)據(jù)庫等。Python另一大重要的技術(shù)發(fā)展特色社會就是被我們所昵稱為一種膠水式類型編譯器編程設(shè)計(jì)語言,它幾乎沒有可以很容易地把我們需要使用一些諸如C語言、C++語言、Java語言等其他數(shù)據(jù)類型編譯器編程教學(xué)語言學(xué)習(xí)所需要做的各個(gè)管理工作分析模塊都直接聯(lián)結(jié)起來到一起。因此,一些大型操作系統(tǒng)通常可以使用 Python快速構(gòu)建基于一個(gè)應(yīng)用程序的原型,然后用它來重新修改其所有符合特殊要求的基礎(chǔ)組件。
2008年在世界著名的TIOBE編程通用語言榜單上完全成為編程黑馬,現(xiàn)在世界排名第三,成為TIOBE2018編程通用語言,在人工智能研究領(lǐng)域排名第一,在編程腳本語言編寫工程技術(shù)研究領(lǐng)域排名第一,在電子系統(tǒng)測試工程技術(shù)研究領(lǐng)域排名第一。除此之外,Python還在微機(jī)編程和電子信息科學(xué)理論計(jì)算電子數(shù)據(jù)技術(shù)發(fā)展兩個(gè)不同方面都已經(jīng)是一直占據(jù)著重要的技術(shù)領(lǐng)導(dǎo)者這個(gè)社會地位。
Python具有強(qiáng)大的交互式網(wǎng)絡(luò)可視化信息管理庫的能力,具有眾多的信息可視性優(yōu)化庫,如在2D、3D信息可視化優(yōu)化庫matplotlib、seaborn及Pandas等。地圖信息可視化優(yōu)化庫 folium、basemap、mapbox、geoplotlib、pyechartsmap、geo等,社會服務(wù)網(wǎng)絡(luò)的信息可視化管理庫networkx,詞典和云圖的信息可視性優(yōu)化庫wordcloud、pyecharts的wordcloud等。本文介紹幾個(gè)簡單的實(shí)例Python基本可視化數(shù)據(jù)庫。
Matplotlib庫占據(jù)Python可視化程序庫的高級地位,在幾十年的程序變更中,它依然是Python社區(qū)中使用最廣泛的數(shù)據(jù)可視化繪圖庫,它的設(shè)計(jì)與MATLAB基本一致。Matplotlib 是Python中第一款數(shù)據(jù)可視化的第三方庫,它可以很方便迅速地獲得數(shù)據(jù)的大致信息,其強(qiáng)大的功能超出想象,但是使用起來卻非常復(fù)雜,上手相對較難。因此,后來陸續(xù)出現(xiàn)了很多第三方庫都是建立在Matplotlib庫的基礎(chǔ)上,有些甚至直接調(diào)取Matplotlib庫中的方法,例如Pandas庫、Seaborn庫,這兩個(gè)庫都是Matplotlib庫的外包,開發(fā)者調(diào)取 Matplotlib的方法不需復(fù)雜的代碼,只需幾條簡單的代碼即可調(diào)取,方便快捷。通過Matplotlib開發(fā)者可以很輕松地繪制各種圖表,僅僅幾行源碼就能根據(jù)數(shù)據(jù)繪制各種直方圖、線圖、功率譜、條形圖、錯(cuò)誤圖等,如圖1所示。

圖1 Matplotlib的直方圖示例
Seaborn基于matplotlib的圖形可視化python包,其優(yōu)勢是專攻于統(tǒng)計(jì)可視化,提供了一種高度交互式界面,它可以和pandas進(jìn)行無縫對接,更適用于初學(xué)者,簡單上手操作快速,用簡潔的代碼創(chuàng)建信息豐富和有吸引力的統(tǒng)計(jì)圖形庫,Seaborn提供了種類繁多的功能,比如用通過內(nèi)置的主題、各種函數(shù)及工具,利用這些就能實(shí)現(xiàn)單/雙因素、數(shù)據(jù)矩陣、線性回歸等,從而使開發(fā)者能夠快速構(gòu)建比較復(fù)雜的可視化數(shù)據(jù)信息。如圖二所示。Seaborn與Matplotlib相比較,其最大的不同在于Seaborn默認(rèn)繪圖的風(fēng)格、具有當(dāng)代審美觀點(diǎn)的顏色搭配。同時(shí)Seaborn的語法結(jié)構(gòu)更加簡潔明了,Seaborn庫僅僅能作為Matplotlib庫的補(bǔ)充庫,不可代替Matplotlib庫。Seaborn的兼容性較好,支持numpy和pandas的數(shù)據(jù)結(jié)構(gòu),掌握Seaborn庫能很大程度幫助我們更高效的觀察數(shù)據(jù)與圖表。Seaborn[6]有著如下特點(diǎn):基于matplotlib aesthetics繪圖風(fēng)格,增加了一些繪圖模式;增加調(diào)色板功能,利用色彩豐富的圖像揭示您數(shù)據(jù)中的模式;運(yùn)用數(shù)據(jù)子集繪制與比較單變量和雙變量分布的功能;運(yùn)用聚類算法可視化矩陣數(shù)據(jù);靈活運(yùn)用處理時(shí)間序列數(shù)據(jù);利用網(wǎng)格建立復(fù)雜圖像集。

圖2 Seaborn繪制的直方圖
ggplot庫是基于R的一個(gè)作圖包 ggplot2,ggplot的運(yùn)行方式與matplotlib區(qū)別很大:它允許你對組件進(jìn)行分層以創(chuàng)建完整的繪圖,疊加不同的圖層。例如,可以從軸開始,然后添加點(diǎn)、添加線、趨勢線等。繪圖很直觀,但不適合制作非常個(gè)性化的圖像,它犧牲了圖像的復(fù)雜性,以達(dá)到簡單性。它于pandas的整合度非常高,所以當(dāng)你使用它的時(shí)候,最好將你的數(shù)據(jù)讀成 DataFrame。ggplot2的中心思想是將繪圖和數(shù)據(jù)徹底分離開,將與數(shù)據(jù)有關(guān)的繪圖同與數(shù)據(jù)無關(guān)的繪圖分離開。真正實(shí)現(xiàn)按照圖層來繪圖,同時(shí)保留命令式作圖,可以根據(jù)命令調(diào)整目標(biāo)函數(shù),使繪圖變得更加靈活,并將這些常見的統(tǒng)計(jì)數(shù)據(jù)變換可以融入學(xué)習(xí)到了繪圖中,如圖3所示。

圖3 ggplot繪制的圖
Bokeh庫與ggplot庫一樣,都是一個(gè) Python 交互式可視化庫。但與ggplot庫不同的是,它是原生Python的,而不是從R語言移植過來的。Bokeh庫的優(yōu)點(diǎn)是可用于創(chuàng)建可直接用于網(wǎng)絡(luò)的交互式站點(diǎn)圖。它能夠輕松地將其輸出為JSON對象、HTML頁面,甚至是交互式的Web應(yīng)用程序。Bokeh庫同時(shí)還支持流媒體和實(shí)時(shí)數(shù)據(jù)的實(shí)現(xiàn)。支持現(xiàn)代 web 瀏覽器,提供優(yōu)雅、簡潔和創(chuàng)新的圖形樣式,以及與大型數(shù)據(jù)集的高性能交互,允許您快速創(chuàng)建交互式圖形、儀表板和數(shù)據(jù)應(yīng)用程序,如圖4所示。其缺點(diǎn)是語法較復(fù)雜,不易上手。Bokeh根據(jù)不同的用戶需求,它提供三種不同的控制水平。最高級的控制管理水平可以幫助開發(fā)者實(shí)現(xiàn)快速地繪制圖表,主要包括用于制作常用圖像,比如直方圖、散點(diǎn)圖等。中等的控制管理水平,跟matplotlib庫原理相同,允許開發(fā)者控制圖像的基本元素信息(比如分布圖中的點(diǎn))。最低的控制級管理水平主要是針對高端的開發(fā)者和軟件工程師。這個(gè)級別的沒有默認(rèn)值,需要對圖表中的每個(gè)元素進(jìn)行定義。

圖4 Bokeh繪制的圖
Pygal庫與 Bokeh 、 Plotly相類似,Pygal庫的可交互圖表能夠直接嵌入到Web瀏覽器中,方便靈活。這就與另外兩個(gè)庫存在差異,Pygal庫可以將圖表的輸出定義為SVG格式。如果你使用較小的數(shù)據(jù)集,SVG格式的圖像就可以了。但是,如果您制作包含數(shù)十萬個(gè)數(shù)據(jù)點(diǎn)的圖表,它們可能難以呈現(xiàn)且響應(yīng)遲鈍。因?yàn)樗械膱D都包裝在方法中,而且默認(rèn)樣式很好,所以用幾行代碼就可以很容易地制作出漂亮的圖,如下所示。

圖5 Pygal繪制的圖
Python強(qiáng)大的可視化庫,使得每位開發(fā)人員都能輕松地將數(shù)據(jù)進(jìn)行分析,進(jìn)而繪制成滿足我們需要的圖表,通過這種數(shù)據(jù)可視化的方式用來表達(dá)管理分析數(shù)據(jù),反應(yīng)相應(yīng)數(shù)據(jù)信息的能力,從而向用戶展示數(shù)據(jù)內(nèi)部隱藏的信息,或系統(tǒng)地表達(dá)對數(shù)據(jù)的理解。一旦用戶接觸到這些可視化圖表(如直方圖、箱線圖、線圖、條形圖等)。用戶立刻會有感知到數(shù)據(jù)信息,認(rèn)知信息,進(jìn)而進(jìn)行數(shù)據(jù)交互及有效溝通。數(shù)據(jù)可視化在數(shù)據(jù)集分析中起著關(guān)鍵作用。最大的優(yōu)勢在于可以幫助開發(fā)者及客戶甚至決策者更深入的理解那些隱藏在數(shù)據(jù)集中的細(xì)微動態(tài)發(fā)展變化,讓用戶更容易的理解就是我們的數(shù)據(jù)。