目錄
熱圖(Heat Map)
二維密度圖(2D Density Plot)
蜘蛛圖(Spider Plot)
樹形圖(Tree Diagram)
首頁 後端開發 Python教學 Python資料視覺化的四種方法介紹(附範例)

Python資料視覺化的四種方法介紹(附範例)

Nov 27, 2018 pm 03:33 PM
pandas python 數據視覺化 機器學習 深度學習

本篇文章帶給大家的內容是關於Python資料視覺化的四種方法介紹(附範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

摘要:本文講述了熱圖、二維密度圖、蜘蛛圖、樹狀圖這四種Python資料視覺化方法。

資料視覺化是任何資料科學或機器學習專案的一個重要組成部分。人們常常會從探索數據分析(EDA)開始,來深入了解數據,並且創建視覺化確實有助於讓問題更清晰和更容易理解,尤其是對於那些較大的高維度數據集。在專案結束的時候,能夠以清晰的、簡潔的和令人信服的方式呈現最終結果,這是非常重要的,讓你的使用者能夠理解和理解。

你可能已經看過我之前的文章《5種快速且簡單的Python資料視覺化方法(含程式碼)》(5 Quick and Easy Data Visualizations in Python with Code) ,其中介紹了5種基本視覺化方法:散點圖、線圖、長條圖、長條圖和箱形圖。這五個是簡單而強大的視覺化方法,你絕對可以透過這些方法從資料集中得到巨大的收穫。在本文中,將介紹另外4個資料視覺化方法,但稍微複雜一些,你可以在看完上一篇文章介紹的基本方法之後再用。

熱圖(Heat Map)

熱圖是資料的矩陣表示方式,其中每個矩陣的值以一種顏色來表示。不同的顏色代表不同的級別,矩陣指數將兩個對比的列或特徵連接在一起。熱圖可以很好地顯示出多個特徵變數之間的關係,因為可以直接把一個層次看成一種顏色。也可以透過觀察熱圖中的一些點來查看每個關係是如何與資料集中的其它關係進行比較的。這些顏色的確提供了簡單的表示方式,因為這是非常直觀的。

Python資料視覺化的四種方法介紹(附範例)

現在來看程式碼:與matplotlib函式庫相比,seaborn函式庫可用於更高階的圖表,通常也需要更多的元件,如更多的顏色、圖形或變數。 Matplotlib庫用於顯示圖表,numpy用於生成數據,而pandas用於控制。繪圖只是呼叫一個簡單的seaborn函數,如果你發現了一些在視覺上很特別的東西,透過這個函數,還可以設定顏色映射。

# Importing libs
importseaborn as sns
import pandas aspd
importnumpyasnp
importmatplotlib.pyplotasplt

# Create a random dataset
data=pd.DataFrame(np.random.random((10,6)), columns=["Iron Man","CaptainAmerica","BlackWidow","Thor","Hulk", "Hawkeye"])

print(data)

# Plot the heatmap
heatmap_plot=sns.heatmap(data, center=0, cmap='gist_ncar')

plt.show()
登入後複製

二維密度圖(2D Density Plot)

二維密度圖是一維版本的簡單擴展,能夠看到關於2個變數的機率分佈。讓我們看看下面的二維密度圖,右邊的刻度用顏色表示每一點的機率。最高的機率,看下資料集,似乎大約是0.5的大小和1.4-ish的速度。如你所看到的,二維密度圖對於快速確定資料對於兩個變數最集中的區域非常地顯著,而不是像一維密度圖那樣只集中一個變數。當你有兩個對輸出結果非常重要的變量,並且希望了解它們如何一起對輸出結果分佈起作用的時候,二維密度圖尤其適合。

Python資料視覺化的四種方法介紹(附範例)

Seaborn的程式碼超級簡單,我們將透過建立一個偏態分佈來介紹它。如果你發現某些顏色和陰影在視覺上更特別,那麼大多數的可選參數都是為了看起來更清晰。

蜘蛛圖(Spider Plot)

蜘蛛圖是顯示一對多關係最好的方法之一。也就是說,你可以繪製並查看區別於單一變數或類別的多個變數的值。在蜘蛛圖中,一個變數相對於另一個變數的特性是顯而易見的,因為面積和長度在一些方向上變化了。如果你希望了解幾個類別關於這些變數是如何疊加起來的,可以並排繪製一下。在下圖中,很容易比較三個電影角色的不同屬性,並了解他們的優勢所在! 

Python資料視覺化的四種方法介紹(附範例)

這次我們將能夠直接使用matplotlib來建立視覺化,而不是用seaborn。需要計算每個屬性所在的角度,因為我們希望它們沿著圓週被平均地分隔開。我們將在每個計算的角度放置標籤,然後把值繪製成一個點,該點到中心的距離取決於它的值或是等級。最後,為了清晰起見,我們將使用半透明的顏色填滿連接各屬性點的線所包含的區域。

# Import libs
import pandas aspd
importseabornassns
importnumpyasnp
importmatplotlib.pyplotasplt

# Get the data
df=pd.read_csv("avengers_data.csv")
print(df)

"""
   #             Name  Attack  Defense  Speed  Range  Health
0  1         Iron Man      83       80     75     70      70
1  2  Captain America      60       62     63     80      80
2  3             Thor      80       82     83    100     100
3  3             Hulk      80      100     67     44      92
4  4      Black Widow      52       43     60     50      65
5  5          Hawkeye      58       64     58     80      65

"""

# Get the data for Iron Man
labels=np.array(["Attack","Defense","Speed","Range","Health"])
stats=df.loc[0,labels].values

# Make some calculations for the plot
angles=np.linspace(0, 2*np.pi, len(labels), endpoint=False)
stats=np.concatenate((stats,[stats[0]]))
angles=np.concatenate((angles,[angles[0]]))

# Plot stuff
fig=plt.figure()
ax=fig.add_subplot(111, polar=True)
ax.plot(angles, stats, 'o-', linewidth=2)
ax.fill(angles, stats, alpha=0.25)
ax.set_thetagrids(angles *180/np.pi, labels)
ax.set_title([df.loc[0,"Name"]])
ax.grid(True)

plt.show()
登入後複製

樹形圖(Tree Diagram)

我們從小學就開始使用樹形圖了,樹狀圖既自然又直觀,還易於解釋。直接連接的節點關係密切,而與有多個連接的節點差異很大。在下圖中,我已經根據統計繪製了一小部分來自Kaggle的Pokemon with stats資料集:

#HP、攻擊、防禦、特殊攻擊、特殊防禦、速度

因此,与stats wise最匹配的Pokemon将紧密连接在一起。例如,我们看到,在顶部,Arbok和Fearow是直接连接的,而且,如果我们查看数据,Arbok总共有438个,而Fearow有442个,非常接近。但是一旦我们移动到Raticate,我们得到的总数是413,这与Arbok和Fearow的差别很大,这就是它们被分开的原因。当我们移动树的时候,基于相似性,Pokemon被分的组越来越多。在绿色组中的Pokemon相互之间比红色组中的更相似,即使没有直接的绿色连接。

Python資料視覺化的四種方法介紹(附範例)

对于树形图,我们实际上要使用Scipy的。在查看了数据集之后,我们将去掉字符串类型的列。我们这么做只是为了要得到正确的可视化结果,但在实践中,最好是把这些字符串转换成分类变量,为了得到更好的结果和进行比较,我们还设置了数据帧索引,以便能够适当地用它作为引用每个节点的列。最后,在Scipy中计算和绘制树形图是非常简单的事了。

# Import libs
import pandas aspd
frommatplotlibimportpyplotasplt
fromscipy.clusterimport hierarchy
importnumpyasnp
# Read in the dataset
# Drop any fields that are strings
# Only get the first 40 because this dataset is big
df=pd.read_csv('Pokemon.csv')
df=df.set_index('Name')
del df.index.name
df=df.drop(["Type 1", "Type 2", "Legendary"], axis=1)
df=df.head(n=40)
# Calculate the distance between each sample
Z =hierarchy.linkage(df, 'ward')
# Orientation our tree
hierarchy.dendrogram(Z, orientation="left", labels=df.index)
plt.show()
登入後複製


以上是Python資料視覺化的四種方法介紹(附範例)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1653
14
CakePHP 教程
1413
52
Laravel 教程
1306
25
PHP教程
1251
29
C# 教程
1224
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles