趙 帥,薛亞輝
(焦作大學人工智能學院 河南 焦作 454000)
在大數據時代,數據的規模和復雜程度不斷增加,“成千上萬”的抽象數據正在驅動著整個經濟社會的發展,人們也越發關注數據背后的價值,如何從龐雜的數據中提取出有價值的信息,并對這些數據進行有效的分析和呈現,已經成為一個重要的研究領域。數據可視化是一種重要的數據分析和表達方式,而Python作為目前最流行的編程語言之一,具有強大的數據處理能力和豐富的數據可視化分析庫[1],支持創建多種類型的可視化圖表,在數據挖掘、分析領域應用較為廣泛,研究基于Python的數據可視化方法可以提高數據分析和可視化的效率,幫助人們更好地理解和處理數據,具有重要的現實意義和研究價值。
數據可視化是將抽象的、不易被理解的數據通過直觀的、易于理解的圖表、圖像等形式進行呈現的過程,以便更好地分析、提取和掌握數據信息,發現數據中的規律和趨勢,能夠幫助用戶更加深入地了解數據、更加關注數據背后隱藏的意義和價值[2],是大數據分析過程中必不可少的環節。
數據可視化技術的發展最早可以追溯到18世紀前后應用的手工測量繪圖及統計學圖表[3],如柱狀圖、折線圖、餅圖等。從20世紀60年代起,伴隨著計算機技術的快速發展,數據可視化的范圍和形式也在不斷擴展、更新,計算機科學家們開始嘗試使用圖形和圖表的形式來展示數據,誕生了許多數據可視化工具和軟件,如SPSS、Excel、Tableau、Power BI等。在大數據時代,數據量急劇增加,展示和分析大規模數據成為數據可視化領域研究的重要課題,數據可視化技術已經逐漸從二維空間向三維空間、虛擬現實等方向發展[4]。
目前,數據可視化的應用涵蓋了各個領域。在金融領域,股票價格走勢圖等金融數據可視化可以幫助分析師更直觀、全面地了解市場情況,提升股票投資的準確性,制定更明智的投資策略。在醫療領域,醫療數據可視化可以將患者的體溫、血壓、心率等復雜的生命體征數據用圖形化的方式展示,幫助醫生做出準確的診斷和治療方案。在教育領域,數據可視化可以用于學生成績分析、評價等方面,幫助教師更好地了解學生的學習情況,發現教學中存在的問題,制定更科學的教學計劃等。在市場營銷領域,企業可以使用數據可視化技術分析客戶行為數據,如購買偏好、消費群體、店鋪商品瀏覽歷史等,從而更充分地了解客戶需求,制定精準的市場營銷策略。此外,數據可視化還可以在科學研究、政府管理、智慧城市建設等諸多領域中發揮作用。
Python是面向對象的解釋型程序設計語言,具有語法簡潔、即寫即用、編碼效率高等特點,開發生態非常完善[4]。具備豐富的數據處理、分析和繪圖庫,如NumPy、Pandas等可以幫助用戶快速實現數據分析、處理操作。在繪圖庫方面,Matplotlib提供了多種圖形繪制方法,包括折線圖、散點圖、柱狀圖等;而Seaborn是在Matplotlib的基礎上進行了更高級的API封裝,代碼編寫更加簡潔,可視化效果更加豐富;Pyecharts是Python結合百度Echarts開發的繪圖庫,對中文支持非常友好;Plotly和Bokeh等庫可以實現交互式可視化等。利用這些強大的Python繪圖庫能夠快速地繪制出各種類型的可視化圖形,并提供交互式的數據分析和可視化功能,能夠滿足不同層次和領域的數據可視化需求。
Matplotlib是Python中最流行的可視化工具之一,可用于生成2 D的圖形。它提供了廣泛的繪圖選項,包括折線圖、散點圖、柱狀圖、雷達圖等,并且能夠與NumPy等科學計算庫協同工作。例如,用Matplotlib通過以下代碼可以繪制一個簡單的正弦曲線折線圖,如圖1所示。

圖1 用Matplotlib庫繪制正弦曲線折線圖
import matplotlib.pyplot as plt
import numpy as np
x=np.linspace(0, 10, 100)
y=np.sin(x)
plt.plot(x, y)
plt.show()
Seaborn在Matplotlib的基礎上提供了一系列高層次的API接口,使得數據可視化圖形變得更加簡單和美觀。Seaborn適用于生成統計圖表、熱圖、分布圖等。例如,用Seaborn通過以下代碼可以繪制一個簡單的數字熱力圖,如圖2所示。
import seaborn as sns
import pandas as pd
import numpy as np
df=pd.DataFrame(np.random.rand(10, 10))
sns.heatmap(df,annot=True,cmap="BuGn")
plt.show()
Plotly是一個交互式Python數據可視化工具,它提供了豐富的可視化選項和交互式界面,如圖片的高亮顯示、縮放、旋轉等;Plotly還提供了Python、R、Matlab等多種編程語言的接口,可以根據具體需求選擇合適的微編程語言。例如,用Plotly通過以下代碼可以繪制一個簡單的散點圖,如圖3所示。

圖3 用Plotly庫繪制散點圖
import plotly.graph_objs as go
import numpy as np
x=np.random.randn(500)
y=np.random.randn(500)
trace=go.Scatter(x=x,y=y,mode="markers")
fig=go.Figure(trace)
fig.show()
Pyecharts是Python與百度Echarts相結合的一個可視化庫,提供了簡單易用的API接口,可以快速創建各種類型的圖表;還提供了多種可定制的功能和實例代碼,包括圖表主題、顏色、字體、標記等,便于快速理解和掌握庫的使用方法,實現對圖表的深層次設計。例如,用Pyecharts通過以下代碼可以繪制一個簡單的餅圖,如圖4所示。

圖4 用Pyecharts庫繪制餅圖
frompyechartsimportPie
pie=Pie()
pie.add(name='飲品銷量占比',attr=['飲料','牛奶','咖啡','奶茶'],value=[15,25,
34,7],is_label_show=True)
pie.render()
數據可視化是將數據以圖形化的形式呈現,使得數據更加易于理解和分析的過程。為了實現這個目標,數據可視化利用各種圖表、圖形和其他視覺元素,如顏色、形狀等來展示數據的不同方面和關系。常用的數據可視化圖形方法見表1。

表1 數據可視化可供選擇的圖形方法表
除了上述方法之外,還有許多其他數據可視化方法,如詞云圖、雷達圖、水平條形圖、氣泡圖等,每種圖形都有其獨特的作用和表達方式,選擇合適的方法取決于具體的數據類型、數據結構和研究問題的需要等。
數據可視化不僅僅是一種呈現數據的手段,也是一種藝術表達方式,需要具有美感、平衡感和一定的視覺沖擊效果,以吸引讀者的注意力,從而更有效地傳達信息[5]。可視化的設計需要遵循如下基本的原則。
(1)明確目標和受眾。在進行數據可視化之前,需要明確目標和受眾,圖表的設計和選擇應該根據受眾的需求和理解水平進行選擇。例如,對于專業人士,可以使用更復雜的圖表類型;而對于普通讀者,則需要使用簡單、直觀的圖表類型。
(2)選擇合適的圖表類型。在選擇圖表類型時,要根據數據的類型、分布和關系等因素來綜合考量。例如,對于時間序列數據,可以使用折線圖;對于分類數據,可以使用條形圖或餅圖;對于關系數據,可以使用散點圖或熱力圖。
(3)注重簡潔、重點突出。可視化圖表應盡可能簡潔,只需要包含必要的信息,不應該過度裝飾或添加不必要的元素,要能夠清晰明了地展示數據結構和標簽,說明數據的含義和單位等,可以使用顏色、形狀、線型等方式來突出重點信息,以便讀者正確、快速地理解數據。
(4)數據準確。可視化圖表應該反映準確的數據,在制作圖表前,要對數據可靠性進行甄別、處理,以獲取準確的統計運算結果、正確的比例、兼容的數據類型等;另外可以提供合適的圖片背景及上下文信息,如圖表的標題、標簽和注釋等,以供讀者理解數據。
(5)進行交互式可視化。對于復雜的數據可以使用交互式可視化,讓讀者利用交互功能自由地探索數據。例如,使用Plotly和Bokeh等工具創建的交互式圖表,可以在圖表中添加滑塊、下拉菜單、鼠標懸停提示等交互元素,讓讀者能夠與數據進行更深入的互動。
(6)參考常見的可視化風格。可以參考一些常見的可視化風格和規范,例如:Edward Tufte的數據可視化原則,包括避免使用不必要的圖形元素、確保圖形元素的比例和大小與數據的比例和大小相匹配、保持圖形元素的樣式和排版一致等;還有Ivanovitch Silva的數據可視化模式和數據驅動設計模式等,幫助人們設計出更有效的數據可視化圖表。
數據可視化技術經歷了從靜態圖表到交互式可視化、再到混合可視化的發展過程,基于Python的數據可視化技術具有開源免費、可擴展性強、可視化庫豐富等優點,有利于數據的挖掘、清洗、轉換和可視化表達,可以用多樣的可視化庫繪制出精美、好看的圖表,滿足各類不同的數據可視化需求。但是Python數據可視化技術也存在部分缺點,例如:Python是一種解釋型語言,相對于C++、Java等編譯型語言,其運行效率較低,在處理大規模的數據時可能會面臨性能瓶頸問題;Python數據可視化庫與其他第三方庫之間的依賴關系較強,在使用過程中可能需要花費一些精力解決庫之間的依賴性問題。另外,雖然Python簡單易學,但數據可視化還需要具備數據分析、統計學等方面的知識,如果缺乏相關的知識背景也可能對可視化效果產生一定的影響,基于Python的數據可視化技術還需要繼續深入研究和探索,不斷提高其性能和可靠性。
在大數據背景下,基于Python的數據可視化研究還有很大的發展空間,如結合深度學習技術的可視化方法研究,通過神經網絡訓練和分類等功能,實現更加高效、準確的數據可視化;還可以利用自然語言處理技術,將數據轉化為可視化故事、動畫等,提供更加生動的數據表現形式;另外,更多維度的數據可視化技術研究可以讓人們更好地理解高維度數據間的結構和關系等[6];還有Python可視化技術的跨平臺和多設備應用研究以及更高效的算法和技術支持方面的研究等。未來基于Python的數據可視化研究、發展與應用將進一步滿足大數據時代人們日益增長的數據呈現需求,更好地發揮數據的價值內涵,為經濟社會的發展注入更多的活力。