原創(chuàng) 讀芯術(shù) 2019-07-24 17:01:00 全文共6661字,預(yù)計(jì)學(xué)習(xí)時(shí)長(zhǎng)20分鐘或更長(zhǎng) 圖片來(lái)源:pexels.com/@divinetechygirl 在現(xiàn)代數(shù)字世界中,數(shù)據(jù)就像空氣一樣重要。 人們每天都會(huì)自覺(jué)或不自覺(jué)地消費(fèi)和產(chǎn)生大量數(shù)據(jù)。近來(lái),許多商家試圖利用這些數(shù)據(jù)來(lái)進(jìn)行營(yíng)銷(xiāo)和吸引消費(fèi)者。所有行業(yè)都開(kāi)始在其服務(wù)中增添人性化色彩,向消費(fèi)者兜售絕佳的用戶體驗(yàn)。而這一切都是基于數(shù)據(jù)科學(xué)下人工智能和機(jī)器學(xué)習(xí)技術(shù)的發(fā)展。機(jī)器正變得越發(fā)聰明,能通過(guò)分析大量數(shù)據(jù)從而做出決策。 為了分析大量數(shù)據(jù)集,機(jī)器需要使用通過(guò)Python語(yǔ)言構(gòu)建的數(shù)據(jù)視覺(jué)化工具。因此,今天需要了解以下問(wèn)題: 1. 什么是數(shù)據(jù)視覺(jué)化呈現(xiàn)? 2. 有哪些數(shù)據(jù)視覺(jué)化呈現(xiàn)工具? 3. 如何使用這些工具? 4. 為什么需要學(xué)習(xí)使用這些工具? 數(shù)據(jù)科學(xué)中的數(shù)據(jù)視覺(jué)化眾所周知,人腦更易于理解圖像。因此有句俗語(yǔ)說(shuō):一圖勝千言。而這完全適用于數(shù)據(jù)科學(xué),因?yàn)槠湫枰治龃罅恳曈X(jué)化呈現(xiàn)的數(shù)據(jù)以推演數(shù)據(jù)模型。 數(shù)據(jù)視覺(jué)化是數(shù)據(jù)科學(xué)領(lǐng)域的一項(xiàng)技術(shù),可使你講出具有信服力的故事,通過(guò)易于理解、模擬化的方式將數(shù)據(jù)和分析結(jié)果視覺(jué)化呈現(xiàn)。這項(xiàng)技術(shù)能讓復(fù)雜的數(shù)據(jù)看起來(lái)很簡(jiǎn)單,并易于理解。 數(shù)據(jù)視覺(jué)化呈現(xiàn)工具 以下介紹幾個(gè)常用的數(shù)據(jù)視覺(jué)化工具: 1. Matplotlib 2. Seaborn 3. Plotly 4. Pandas 學(xué)習(xí)使用這些視覺(jué)化工具可促進(jìn)數(shù)據(jù)理解、信息提取和決策制定。本文將對(duì)Matplotlib工具進(jìn)行詳細(xì)介紹。 MatplotlibMatplotlib是一個(gè)Python的2D繪圖庫(kù),它以各種硬拷貝格式和跨平臺(tái)的交互式環(huán)境生成出版質(zhì)量級(jí)別的圖形。Matplotlib可在多種環(huán)境下運(yùn)行,包括Python腳本、Python及IPython shell命令行,Jupyter notebook,網(wǎng)絡(luò)應(yīng)用服務(wù)器與四個(gè)圖形用戶界面工具包。 Matplotlib廣泛應(yīng)用于數(shù)據(jù)視覺(jué)化,運(yùn)行良好,用戶界面與Matlab相似度較低,并給予用戶極大的編碼靈活度。寫(xiě)編碼可能會(huì)很無(wú)聊,但Matplotlib會(huì)給用戶極大的自由。 安裝Matplotlib1. 使用畫(huà)中畫(huà) python -m pip install -U pip 2. 使用Python科學(xué)包 有許多第三方科學(xué)包,如: · Anaconda · Canopy · Activestate 本文最推薦Anaconda。它是常用Python數(shù)據(jù)科學(xué)包之一,可幫助輕松安裝所有數(shù)據(jù)科學(xué)包,并預(yù)裝Numpy,SciPy, Pandas, Matplotlib, Plotly等工具。推薦所有人安裝這個(gè)科學(xué)包,安裝時(shí)間只需要幾秒鐘。 可在conda終端運(yùn)行conda命令以安裝任何科學(xué)包。不過(guò)需要訪問(wèn)官網(wǎng)獲取準(zhǔn)確的命令形式。 conda install PackageName 對(duì)于Matpotlib工具: conda install matplotlib 不同類(lèi)型的Matpolotlib工具提供的功能不同: 1. 線、條、標(biāo)志 2. 圖像、輪廓、場(chǎng) 3. 餅狀圖、極坐標(biāo)圖 4. 統(tǒng)計(jì)性繪圖 以及許多其它功能。這些功能廣泛應(yīng)用于折線圖、柱狀圖、直方圖、餅狀圖等。 圖庫(kù)傳送門(mén):https:///gallery/index.html 案例學(xué)習(xí)如上所述,可使用Matplotlib繪制多種圖形,如散點(diǎn)圖、柱狀圖和直方圖。根據(jù)數(shù)據(jù)視覺(jué)化過(guò)程中的實(shí)際需求選擇圖形類(lèi)型,如群組對(duì)比、定量變量對(duì)比、數(shù)據(jù)分布分析等。 以下介紹幾個(gè)常用的繪圖技巧: 基本要求 解決實(shí)際問(wèn)題之前,須安裝好工具: 安裝Anaconda科學(xué)包 1. 首先,確保安裝Anaconda 安裝流程傳送門(mén):https://docs./anaconda/install/ 啟動(dòng)JupyterNotebook Anaconda科學(xué)包安裝完成后,打開(kāi)Anaconda指南,啟動(dòng)Jupyter notebook(如下圖所示)。使用Jupyter notebook對(duì)案例進(jìn)行編碼。 檢查安裝預(yù)裝包 參考下圖:在Environments菜單下,右側(cè)顯示有預(yù)裝包。比如,搜索Pandas,界面右側(cè)顯示Pandas已安裝。同樣,可輸入需要的安裝包名稱(chēng)進(jìn)行安裝。檢查并確保安裝matplotlib,numpy, pandas, seaborn等工具。 確保安裝所有科學(xué)包后,學(xué)習(xí)繪制餅狀圖。 關(guān)于Matplotlibs的幾個(gè)要點(diǎn) Matplotlibs包含一個(gè)幫助繪圖的子模塊,稱(chēng)為Pyplot。繪圖中可使用Jupyter notebook,它易于使用、操作簡(jiǎn)單。運(yùn)行import matplotlib.pyplot as plt命令導(dǎo)入Matplotlibs下的Pyplot模塊。 · 使用Pandas pd.read_csv()導(dǎo)入所需圖庫(kù)和數(shù)據(jù)集。 · 使用plt.plot()繪制折線圖及其他圖形。所有繪圖功能都需要數(shù)據(jù),數(shù)據(jù)以參數(shù)形式提供。 · 使用plot.xlabel , plt.ylabel分別標(biāo)記x軸和y軸。 · 使用plt.xticks , plt.yticks分別標(biāo)記x軸和y軸觀察點(diǎn)。 · 使用 plt.legend()表示觀察變量。 · 使用plt.title()設(shè)置圖片標(biāo)題。 · 使用plot.show()展示圖片。 1. 繪制餅狀圖
將以上編碼復(fù)制粘貼到Jupyter notebook,運(yùn)行該命令,餅狀圖如下所示: 說(shuō)明: 導(dǎo)入matplotlib包后,其子模塊pyplot運(yùn)行餅狀圖繪制命令。 通過(guò)以下說(shuō)明了解plt. bar繪圖方法。
詳情傳送門(mén):https:///3.1.0/api/_as_gen/matplotlib.pyplot.bar.html 2. 直方圖直方圖由一系列高度不等的縱向條紋或線段表示數(shù)據(jù)分布的情況。 直方圖可用以估測(cè)數(shù)據(jù)分布,頻率值被劃分到某一數(shù)值段。 若需想為某一直方賦值,使用numpyhistogram()方法,運(yùn)行如下命令。若需估測(cè)數(shù)值分布,可使用.hist()方法,繪制簡(jiǎn)單直方圖。 Matplotlib可通過(guò)NumPy’s histogram()方法視覺(jué)化呈現(xiàn)Python直方圖,并提供通用包裝: 案例:
說(shuō)明: 可通過(guò)matplotlib下pyplot.hist()命令繪制直方圖。須確定所需直方內(nèi)線條數(shù)量。X軸接觸線條邊緣,y軸為相應(yīng)頻率。在以上直方圖中,bins='auto'命令從兩個(gè)算法中選擇,以估算理想的線條數(shù)。更深層面,算法的目標(biāo)是選擇合適的線寬,以最忠實(shí)地表現(xiàn)數(shù)據(jù)。 源代碼輸出:#以上提到的直方圖編碼: 3. 散點(diǎn)圖散點(diǎn)圖是繪圖或數(shù)學(xué)圖形,使用笛卡爾坐標(biāo)表現(xiàn)一組數(shù)據(jù)中兩個(gè)變量的數(shù)值。如果對(duì)散點(diǎn)進(jìn)行編碼(顏色/形狀/規(guī)模),可額外表現(xiàn)一個(gè)變量。散點(diǎn)圖將數(shù)據(jù)顯示為一組點(diǎn),一變量值決定散點(diǎn)水平位置,另一變量值確定其垂直位置。 散點(diǎn)圖可以顯示不同變量之間的相互關(guān)聯(lián)關(guān)系,并具有一定的機(jī)密間隔。比如,重量和高度,y軸為重量,x軸為高度。關(guān)聯(lián)關(guān)系可以是正向的(起)、反向的(落)、不存在的(無(wú)關(guān)聯(lián))。如果散點(diǎn)模型從左下向右上傾斜,顯示變量之間為正相關(guān)。如果傾斜趨勢(shì)為從左上到右下,則為負(fù)相關(guān)。 模型: matplotlib.pyplot.scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None, *, plotnonfinite=False, data=None, **kwargs)[source] 更多信息傳送門(mén):https:///3.1.0/api/_as_gen/matplotlib.pyplot.scatter.html 案例: #scatter plot lib example usingmatplotlb 在jupyternotebook上編碼,結(jié)果如下所示: 通過(guò)實(shí)際數(shù)據(jù)集理解數(shù)據(jù)視覺(jué)化使用從kaggle下載的汽車(chē)數(shù)據(jù)集理解MatplotLib數(shù)據(jù)視覺(jué)化:https://www./toramky/automobile-dataset 切記: 1. 從上述網(wǎng)站下載Automobile.csv文件 2. 將Jupyter文件上載至編碼所在的工作目錄 3. 繪制直方圖:分類(lèi)使用群組數(shù)據(jù): 可在一次繪圖中繪制多幅直方圖,有助于比較分類(lèi)持續(xù)變量的分布。 使用Automobile.csv數(shù)據(jù)集進(jìn)行理解: 讀取數(shù)據(jù)集:
將以下編碼編寫(xiě)/復(fù)制-粘貼至jupyter notebook文件: import matplotlib.pyplot as plt 以下直方圖使用了給定數(shù)據(jù)集的數(shù)值 顯然,馬力值集中在110-120 hp區(qū)段。 散點(diǎn)圖: 用散點(diǎn)圖表現(xiàn)數(shù)據(jù)分布?;谲?chē)型觀察價(jià)格分布。 將以下編碼復(fù)制/粘貼至jupyter notebook文件,并運(yùn)行命令。 # Scatter Plot 輸出: 觀察: 數(shù)據(jù)點(diǎn)集中與轎車(chē)車(chē)型,價(jià)格通常在10,000至15,000美元之間。倉(cāng)門(mén)式汽車(chē)次之。貨車(chē)車(chē)型的價(jià)格最低。 更多繪圖類(lèi)型: 1. 小提琴圖 2. 堆積圖 3. 莖葉圖 4. 線條圖 5. 箱型圖 以下這幅圖全面展示了常用數(shù)據(jù)視覺(jué)化圖(表)類(lèi)型,根據(jù)數(shù)據(jù)分析要求選擇適合的圖(表): 圖片來(lái)源:https://twitter.com/TonyDeJonker/status/1097191707916025856/photo/1 |
|