亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談四種快速易用的Python數(shù)據(jù)可視化方法

 更新時(shí)間:2023年04月10日 09:28:49   作者:程序員老華  
這篇文章主要介紹了淺談四種快速易用的Python數(shù)據(jù)可視化方法,數(shù)據(jù)可視化,是指用圖形的方式來(lái)展現(xiàn)數(shù)據(jù),從而更加清晰有效地傳遞信息,主要方法包括圖表類(lèi)型的選擇和圖表設(shè)計(jì)的準(zhǔn)則,需要的朋友可以參考下

數(shù)據(jù)可視化是數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)項(xiàng)目中十分重要的一環(huán)。通常,你需要在項(xiàng)目初期進(jìn)行探索性的數(shù)據(jù)分析(EDA),從而對(duì)數(shù)據(jù)有一定的了解,而且創(chuàng)建可視化確實(shí)可以使分析的任務(wù)更清晰、更容易理解,特別是對(duì)于大規(guī)模的高維數(shù)據(jù)集。在項(xiàng)目接近尾聲時(shí),以一種清晰、簡(jiǎn)潔而引人注目的方式展示最終結(jié)果也是非常重要的,讓你的受眾(通常是非技術(shù)人員的客戶(hù))能夠理解。

熱力圖

熱力圖(Heat Map)是數(shù)據(jù)的一種矩陣表示方法,其中每個(gè)矩陣元素的值通過(guò)一種顏色表示。不同的顏色代表不同的值,通過(guò)矩陣的索引將需要被對(duì)比的兩項(xiàng)或兩個(gè)特征關(guān)聯(lián)在一起。熱力圖非常適合于展示多個(gè)特征變量之間的關(guān)系,因?yàn)槟憧梢灾苯油ㄟ^(guò)顏色知道該位置上的矩陣元素的大小。通過(guò)查看熱力圖中的其他點(diǎn),你還可以看到每種關(guān)系與數(shù)據(jù)集中的其它關(guān)系之間的比較。顏色是如此直觀,因此它為我們提供了一種非常簡(jiǎn)單的數(shù)據(jù)解釋方式。

現(xiàn)在讓我們來(lái)看看實(shí)現(xiàn)代碼。與「matplotlib」相比,「seaborn」可以被用于繪制更加高級(jí)的圖形,它通常需要更多的組件,例如多種顏色、圖形或變量?!竚atplotlib」可以被用于顯示圖形,「NumPy」可被用于生成數(shù)據(jù),「pandas」可以被用于處理數(shù)據(jù)!繪圖只是「seaborn」的一個(gè)簡(jiǎn)單的功能。

# Importing libs
import seaborn as sns
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

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

print(data)

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

plt.show()

二維密度圖

二維密度圖(2D Density Plot)是一維版本密度圖的直觀擴(kuò)展,相對(duì)于一維版本,其優(yōu)點(diǎn)是能夠看到關(guān)于兩個(gè)變量的概率分布。例如,在下面的二維密度圖中,右邊的刻度圖用顏色表示每個(gè)點(diǎn)的概率。我們的數(shù)據(jù)出現(xiàn)概率最大的地方(也就是數(shù)據(jù)點(diǎn)最集中的地方),似乎在 size=0.5,speed=1.4 左右。正如你現(xiàn)在所知道的,二維密度圖對(duì)于迅速找出我們的數(shù)據(jù)在兩個(gè)變量的情況下最集中的區(qū)域非常有用,而不是像一維密度圖那樣只有一個(gè)變量。當(dāng)你有兩個(gè)對(duì)輸出非常重要的變量,并且希望了解它們?nèi)绾喂餐饔糜谳敵龅姆植紩r(shí),用二維密度圖觀察數(shù)據(jù)是十分有效的。

事實(shí)再次證明,使用「seaborn」編寫(xiě)代碼是十分便捷的!這一次,我們將創(chuàng)建一個(gè)偏態(tài)分布,讓數(shù)據(jù)可視化結(jié)果更有趣。你可以對(duì)大多數(shù)可選參數(shù)進(jìn)行調(diào)整,讓可視化看結(jié)果看起來(lái)更清楚。

# Importing libs
import seaborn as sns
import matplotlib.pyplot as plt
from scipy.stats import skewnorm

# Create the data
speed = skewnorm.rvs(4, size=50) 
size = skewnorm.rvs(4, size=50)

# Create and shor the 2D Density plot
ax = sns.kdeplot(speed, size, cmap="Reds", shade=False, bw=.15, cbar=True)
ax.set(xlabel='speed', ylabel='size')
plt.show()

蜘蛛網(wǎng)圖

蜘蛛網(wǎng)圖(Spider Plot)是顯示一對(duì)多關(guān)系的最佳方法之一。換而言之,你可以繪制并查看多個(gè)與某個(gè)變量或類(lèi)別相關(guān)的變量的值。在蜘蛛網(wǎng)圖中,一個(gè)變量相對(duì)于另一個(gè)變量的顯著性是清晰而明顯的,因?yàn)樵谔囟ǖ姆较蛏希采w的面積和距離中心的長(zhǎng)度變得更大。如果你想看看利用這些變量描述的幾個(gè)不同類(lèi)別的對(duì)象有何不同,可以將它們并排繪制。在下面的圖表中,我們很容易比較復(fù)仇者聯(lián)盟的不同屬性,并看到他們各自的優(yōu)勢(shì)所在?。ㄕ?qǐng)注意,這些數(shù)據(jù)是隨機(jī)設(shè)置的,我對(duì)復(fù)仇者聯(lián)盟的成員們沒(méi)有偏見(jiàn)。)

在這里,我們可以直接使用「matplotlib」而非「seaborn」來(lái)創(chuàng)建可視化結(jié)果。我們需要讓每個(gè)屬性沿圓周等距分布。我們將在每個(gè)角上設(shè)置標(biāo)簽,然后將值繪制為一個(gè)點(diǎn),它到中心的距離取決于它的值/大小。最后,為了顯示更清晰,我們將使用半透明的顏色來(lái)填充將屬性點(diǎn)連接起來(lái)得到的線(xiàn)條所包圍的區(qū)域。

# Import libs
import pandas as pd
import seaborn as sns
import numpy as np
import matplotlib.pyplot as plt

# 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()

樹(shù)狀圖

我們從小學(xué)就開(kāi)始使用樹(shù)狀圖(Tree Diagram)了!樹(shù)狀圖是自然而直觀的,這使它們?nèi)菀妆唤忉?。直接相連的節(jié)點(diǎn)關(guān)系密切,而具有多個(gè)連接的節(jié)點(diǎn)則不太相似。在下面的可視化結(jié)果中,我根據(jù) Kaggle 的統(tǒng)計(jì)數(shù)據(jù)(生命值、攻擊力、防御力、特殊攻擊、特殊防御、速度)繪制了一小部分口袋妖怪游戲的數(shù)據(jù)集的樹(shù)狀圖。

因此,統(tǒng)計(jì)意義上最匹配的口袋妖怪將被緊密地連接在一起。例如,在圖的頂部,阿柏怪 和尖嘴鳥(niǎo)是直接連接的,如果我們查看數(shù)據(jù),阿柏怪的總分為 438,尖嘴鳥(niǎo)則為 442,二者非常接近!但是如果我們看看拉達(dá),我們可以看到其總得分為 413,這和阿柏怪、尖嘴鳥(niǎo)就具有較大差別了,所以它們?cè)跇?shù)狀圖中是被分開(kāi)的!當(dāng)我們沿著樹(shù)往上移動(dòng)時(shí),綠色組的口袋妖怪彼此之間比它們和紅色組中的任何口袋妖怪都更相似,即使這里并沒(méi)有直接的綠色的連接。

對(duì)于樹(shù)狀圖,我們實(shí)際上需要使用「Scipy」來(lái)繪制!讀取數(shù)據(jù)集中的數(shù)據(jù)之后,我們將刪除字符串列。這么做只是為了使可視化結(jié)果更加直觀、便于理解,但在實(shí)踐中,將這些字符串轉(zhuǎn)換為分類(lèi)變量會(huì)得到更好的結(jié)果和對(duì)比效果。我們還設(shè)置了數(shù)據(jù)幀的索引,以便能夠恰當(dāng)?shù)貙⑵溆米饕妹總€(gè)節(jié)點(diǎn)的列。最后需要告訴大家的是,在「Scipy」中計(jì)算和繪制樹(shù)狀圖只需要一行簡(jiǎn)單的代碼。

# Import libs
import pandas as pd
from matplotlib import pyplot as plt
from scipy.cluster import hierarchy
import numpy as np

# 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()

到此這篇關(guān)于淺談四種快速易用的Python數(shù)據(jù)可視化方法的文章就介紹到這了,更多相關(guān)Python數(shù)據(jù)可視化方法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果

    python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果

    這篇文章主要為大家詳細(xì)介紹了python封裝對(duì)象實(shí)現(xiàn)時(shí)間效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-10-10
  • 基于pip install django失敗時(shí)的解決方法

    基于pip install django失敗時(shí)的解決方法

    今天小編就為大家分享一篇基于pip install django失敗時(shí)的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • python人工智能tensorflow優(yōu)化器Optimizer算法匯總

    python人工智能tensorflow優(yōu)化器Optimizer算法匯總

    這篇文章主要為大家介紹了python人工智能tensorflowtf優(yōu)化器Optimizer算法匯總,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • 詳細(xì)解讀Python中的json操作

    詳細(xì)解讀Python中的json操作

    json操作是最為基本的、最為常用的,Python自帶的json模塊就可以滿(mǎn)足大部分應(yīng)用場(chǎng)景,而且使用起來(lái)極為簡(jiǎn)單,下面這篇文章主要給大家介紹了關(guān)于Python中json操作的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • python文件操作之批量修改文件后綴名的方法

    python文件操作之批量修改文件后綴名的方法

    這篇文章主要介紹了python文件操作之批量修改文件后綴名,需要的朋友可以參考下
    2018-08-08
  • Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本

    Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本

    這篇文章主要給大家介紹了關(guān)于Python讀取pdf、word、excel、ppt、csv和txt文件提取所有文本的相關(guān)資料,文中通過(guò)代碼示例將實(shí)現(xiàn)的方法介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • python隊(duì)列基本操作和多線(xiàn)程隊(duì)列

    python隊(duì)列基本操作和多線(xiàn)程隊(duì)列

    pythonQueue隊(duì)列模塊提供了同步線(xiàn)程安全的隊(duì)列類(lèi),包括FIFO(先入先出)隊(duì)列Queue,LIFO(后入先出)隊(duì)列LifoQueue,和優(yōu)先級(jí)隊(duì)列PriorityQueue,這些隊(duì)列都實(shí)現(xiàn)了鎖原語(yǔ),能夠在多線(xiàn)程中直接使用,可以使用隊(duì)列來(lái)實(shí)現(xiàn)線(xiàn)程間的同步,下面我們就來(lái)看看python隊(duì)列基本操作吧
    2022-02-02
  • python代碼實(shí)現(xiàn)備忘錄案例講解

    python代碼實(shí)現(xiàn)備忘錄案例講解

    這篇文章主要介紹了python代碼實(shí)現(xiàn)備忘錄案例講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • python pandas獲取csv指定行 列的操作方法

    python pandas獲取csv指定行 列的操作方法

    這篇文章主要介紹了pandas獲取csv指定行,列的操作方法,本文簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • python中刪除某個(gè)元素的方法解析

    python中刪除某個(gè)元素的方法解析

    這篇文章主要介紹了python中刪除某個(gè)元素的方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11

最新評(píng)論