肖慧明
(遼寧軌道交通職業(yè)學院,遼寧沈陽,11000)
Python是目前主流的程序設計語言,主要是面向?qū)ο蟮?、能簡單快速的編程,它為開發(fā)者提供了高效的高級數(shù)據(jù)結構。Python的創(chuàng)始人為吉多·范羅蘇姆 為打發(fā)圣誕節(jié)的無聊,決定研發(fā)一款基于ABC語言的新腳本解釋性程序。Python開發(fā)技術主要特征就是簡潔性、易讀易學、靈活擴展、免費開源、強大的數(shù)據(jù)庫等。Python另一大重要的技術發(fā)展特色社會就是被我們所昵稱為一種膠水式類型編譯器編程設計語言,它幾乎沒有可以很容易地把我們需要使用一些諸如C語言、C++語言、Java語言等其他數(shù)據(jù)類型編譯器編程教學語言學習所需要做的各個管理工作分析模塊都直接聯(lián)結起來到一起。因此,一些大型操作系統(tǒng)通??梢允褂?Python快速構建基于一個應用程序的原型,然后用它來重新修改其所有符合特殊要求的基礎組件。
2008年在世界著名的TIOBE編程通用語言榜單上完全成為編程黑馬,現(xiàn)在世界排名第三,成為TIOBE2018編程通用語言,在人工智能研究領域排名第一,在編程腳本語言編寫工程技術研究領域排名第一,在電子系統(tǒng)測試工程技術研究領域排名第一。除此之外,Python還在微機編程和電子信息科學理論計算電子數(shù)據(jù)技術發(fā)展兩個不同方面都已經(jīng)是一直占據(jù)著重要的技術領導者這個社會地位。
Python具有強大的交互式網(wǎng)絡可視化信息管理庫的能力,具有眾多的信息可視性優(yōu)化庫,如在2D、3D信息可視化優(yōu)化庫matplotlib、seaborn及Pandas等。地圖信息可視化優(yōu)化庫 folium、basemap、mapbox、geoplotlib、pyechartsmap、geo等,社會服務網(wǎng)絡的信息可視化管理庫networkx,詞典和云圖的信息可視性優(yōu)化庫wordcloud、pyecharts的wordcloud等。本文介紹幾個簡單的實例Python基本可視化數(shù)據(jù)庫。
Matplotlib庫占據(jù)Python可視化程序庫的高級地位,在幾十年的程序變更中,它依然是Python社區(qū)中使用最廣泛的數(shù)據(jù)可視化繪圖庫,它的設計與MATLAB基本一致。Matplotlib 是Python中第一款數(shù)據(jù)可視化的第三方庫,它可以很方便迅速地獲得數(shù)據(jù)的大致信息,其強大的功能超出想象,但是使用起來卻非常復雜,上手相對較難。因此,后來陸續(xù)出現(xiàn)了很多第三方庫都是建立在Matplotlib庫的基礎上,有些甚至直接調(diào)取Matplotlib庫中的方法,例如Pandas庫、Seaborn庫,這兩個庫都是Matplotlib庫的外包,開發(fā)者調(diào)取 Matplotlib的方法不需復雜的代碼,只需幾條簡單的代碼即可調(diào)取,方便快捷。通過Matplotlib開發(fā)者可以很輕松地繪制各種圖表,僅僅幾行源碼就能根據(jù)數(shù)據(jù)繪制各種直方圖、線圖、功率譜、條形圖、錯誤圖等,如圖1所示。
圖1 Matplotlib的直方圖示例
Seaborn基于matplotlib的圖形可視化python包,其優(yōu)勢是專攻于統(tǒng)計可視化,提供了一種高度交互式界面,它可以和pandas進行無縫對接,更適用于初學者,簡單上手操作快速,用簡潔的代碼創(chuàng)建信息豐富和有吸引力的統(tǒng)計圖形庫,Seaborn提供了種類繁多的功能,比如用通過內(nèi)置的主題、各種函數(shù)及工具,利用這些就能實現(xiàn)單/雙因素、數(shù)據(jù)矩陣、線性回歸等,從而使開發(fā)者能夠快速構建比較復雜的可視化數(shù)據(jù)信息。如圖二所示。Seaborn與Matplotlib相比較,其最大的不同在于Seaborn默認繪圖的風格、具有當代審美觀點的顏色搭配。同時Seaborn的語法結構更加簡潔明了,Seaborn庫僅僅能作為Matplotlib庫的補充庫,不可代替Matplotlib庫。Seaborn的兼容性較好,支持numpy和pandas的數(shù)據(jù)結構,掌握Seaborn庫能很大程度幫助我們更高效的觀察數(shù)據(jù)與圖表。Seaborn[6]有著如下特點:基于matplotlib aesthetics繪圖風格,增加了一些繪圖模式;增加調(diào)色板功能,利用色彩豐富的圖像揭示您數(shù)據(jù)中的模式;運用數(shù)據(jù)子集繪制與比較單變量和雙變量分布的功能;運用聚類算法可視化矩陣數(shù)據(jù);靈活運用處理時間序列數(shù)據(jù);利用網(wǎng)格建立復雜圖像集。
圖2 Seaborn繪制的直方圖
ggplot庫是基于R的一個作圖包 ggplot2,ggplot的運行方式與matplotlib區(qū)別很大:它允許你對組件進行分層以創(chuàng)建完整的繪圖,疊加不同的圖層。例如,可以從軸開始,然后添加點、添加線、趨勢線等。繪圖很直觀,但不適合制作非常個性化的圖像,它犧牲了圖像的復雜性,以達到簡單性。它于pandas的整合度非常高,所以當你使用它的時候,最好將你的數(shù)據(jù)讀成 DataFrame。ggplot2的中心思想是將繪圖和數(shù)據(jù)徹底分離開,將與數(shù)據(jù)有關的繪圖同與數(shù)據(jù)無關的繪圖分離開。真正實現(xiàn)按照圖層來繪圖,同時保留命令式作圖,可以根據(jù)命令調(diào)整目標函數(shù),使繪圖變得更加靈活,并將這些常見的統(tǒng)計數(shù)據(jù)變換可以融入學習到了繪圖中,如圖3所示。
圖3 ggplot繪制的圖
Bokeh庫與ggplot庫一樣,都是一個 Python 交互式可視化庫。但與ggplot庫不同的是,它是原生Python的,而不是從R語言移植過來的。Bokeh庫的優(yōu)點是可用于創(chuàng)建可直接用于網(wǎng)絡的交互式站點圖。它能夠輕松地將其輸出為JSON對象、HTML頁面,甚至是交互式的Web應用程序。Bokeh庫同時還支持流媒體和實時數(shù)據(jù)的實現(xiàn)。支持現(xiàn)代 web 瀏覽器,提供優(yōu)雅、簡潔和創(chuàng)新的圖形樣式,以及與大型數(shù)據(jù)集的高性能交互,允許您快速創(chuàng)建交互式圖形、儀表板和數(shù)據(jù)應用程序,如圖4所示。其缺點是語法較復雜,不易上手。Bokeh根據(jù)不同的用戶需求,它提供三種不同的控制水平。最高級的控制管理水平可以幫助開發(fā)者實現(xiàn)快速地繪制圖表,主要包括用于制作常用圖像,比如直方圖、散點圖等。中等的控制管理水平,跟matplotlib庫原理相同,允許開發(fā)者控制圖像的基本元素信息(比如分布圖中的點)。最低的控制級管理水平主要是針對高端的開發(fā)者和軟件工程師。這個級別的沒有默認值,需要對圖表中的每個元素進行定義。
圖4 Bokeh繪制的圖
Pygal庫與 Bokeh 、 Plotly相類似,Pygal庫的可交互圖表能夠直接嵌入到Web瀏覽器中,方便靈活。這就與另外兩個庫存在差異,Pygal庫可以將圖表的輸出定義為SVG格式。如果你使用較小的數(shù)據(jù)集,SVG格式的圖像就可以了。但是,如果您制作包含數(shù)十萬個數(shù)據(jù)點的圖表,它們可能難以呈現(xiàn)且響應遲鈍。因為所有的圖都包裝在方法中,而且默認樣式很好,所以用幾行代碼就可以很容易地制作出漂亮的圖,如下所示。
圖5 Pygal繪制的圖
Python強大的可視化庫,使得每位開發(fā)人員都能輕松地將數(shù)據(jù)進行分析,進而繪制成滿足我們需要的圖表,通過這種數(shù)據(jù)可視化的方式用來表達管理分析數(shù)據(jù),反應相應數(shù)據(jù)信息的能力,從而向用戶展示數(shù)據(jù)內(nèi)部隱藏的信息,或系統(tǒng)地表達對數(shù)據(jù)的理解。一旦用戶接觸到這些可視化圖表(如直方圖、箱線圖、線圖、條形圖等)。用戶立刻會有感知到數(shù)據(jù)信息,認知信息,進而進行數(shù)據(jù)交互及有效溝通。數(shù)據(jù)可視化在數(shù)據(jù)集分析中起著關鍵作用。最大的優(yōu)勢在于可以幫助開發(fā)者及客戶甚至決策者更深入的理解那些隱藏在數(shù)據(jù)集中的細微動態(tài)發(fā)展變化,讓用戶更容易的理解就是我們的數(shù)據(jù)。