搜尋
首頁後端開發Python教學Python資料視覺化的四種方法介紹(附範例)

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

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

本篇文章帶給大家的內容是關於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中文網其他相關文章!

陳述
本文轉載於:segmentfault。如有侵權,請聯絡admin@php.cn刪除
Python vs.C:申請和用例Python vs.C:申請和用例Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。Python以简洁和强大的生态系统著称,C 则以高性能和底层控制能力闻名。

2小時的Python計劃:一種現實的方法2小時的Python計劃:一種現實的方法Apr 11, 2025 am 12:04 AM

2小時內可以學會Python的基本編程概念和技能。 1.學習變量和數據類型,2.掌握控制流(條件語句和循環),3.理解函數的定義和使用,4.通過簡單示例和代碼片段快速上手Python編程。

Python:探索其主要應用程序Python:探索其主要應用程序Apr 10, 2025 am 09:41 AM

Python在web開發、數據科學、機器學習、自動化和腳本編寫等領域有廣泛應用。 1)在web開發中,Django和Flask框架簡化了開發過程。 2)數據科學和機器學習領域,NumPy、Pandas、Scikit-learn和TensorFlow庫提供了強大支持。 3)自動化和腳本編寫方面,Python適用於自動化測試和系統管理等任務。

您可以在2小時內學到多少python?您可以在2小時內學到多少python?Apr 09, 2025 pm 04:33 PM

兩小時內可以學到Python的基礎知識。 1.學習變量和數據類型,2.掌握控制結構如if語句和循環,3.了解函數的定義和使用。這些將幫助你開始編寫簡單的Python程序。

如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?如何在10小時內通過項目和問題驅動的方式教計算機小白編程基礎?Apr 02, 2025 am 07:18 AM

如何在10小時內教計算機小白編程基礎?如果你只有10個小時來教計算機小白一些編程知識,你會選擇教些什麼�...

如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?如何在使用 Fiddler Everywhere 進行中間人讀取時避免被瀏覽器檢測到?Apr 02, 2025 am 07:15 AM

使用FiddlerEverywhere進行中間人讀取時如何避免被檢測到當你使用FiddlerEverywhere...

Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Python 3.6加載Pickle文件報錯"__builtin__"模塊未找到怎麼辦?Apr 02, 2025 am 07:12 AM

Python3.6環境下加載Pickle文件報錯:ModuleNotFoundError:Nomodulenamed...

如何提高jieba分詞在景區評論分析中的準確性?如何提高jieba分詞在景區評論分析中的準確性?Apr 02, 2025 am 07:09 AM

如何解決jieba分詞在景區評論分析中的問題?當我們在進行景區評論分析時,往往會使用jieba分詞工具來處理文�...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。