日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python 數(shù)據(jù)科學中的 Seaborn 繪圖可視化

 Python中文社區(qū) (ID:python-china)

創(chuàng)新互聯(lián)建站專注于網(wǎng)站制作、成都網(wǎng)站設計、網(wǎng)頁設計、網(wǎng)站制作、網(wǎng)站開發(fā)。公司秉持“客戶至上,用心服務”的宗旨,從客戶的利益和觀點出發(fā),讓客戶在網(wǎng)絡營銷中找到自己的駐足之地。尊重和關懷每一位客戶,用嚴謹?shù)膽B(tài)度對待客戶,用專業(yè)的服務創(chuàng)造價值,成為客戶值得信賴的朋友,為客戶解除后顧之憂。

本篇文章主要研究 Seaborn 庫——Seaborn 是一個統(tǒng)計繪圖庫,建立在 Matplotlib 基礎之上。它具有非常漂亮的默認繪圖樣式,并且也與 Pandas DataFrames 配合得很好。

Seaborn 可以像安裝任何其他 Python 包一樣使用“pip”進行安裝。

 
 
 
 
  1. pip install seaborn 

Seaborn 的官方文檔地址如下:

https://seaborn.pydata.org/

另一個重要的地址是官方 API,它引用了各種可用的繪圖類型。

https://seaborn.pydata.org/api.html

我將嘗試將 Seaborn 的功能分解為不同的類別——并從使我們能夠可視化數(shù)據(jù)集分布的圖開始。

讓我們從導入開始并加載數(shù)據(jù) - 我將使用“Financial Sample.xlsx”數(shù)據(jù)。excel文件可以長按掃碼文末二維碼后進入寬客量化俱樂部下載:

Financial Sample.xlsx

 
 
 
 
  1. import pandas as pd  
  2. import seaborn as sns  
  3. #如果使用 Jupyter Notebooks,下面的行允許我們在瀏覽器中顯示圖表  
  4. %matplotlib inline  
  5. #在 Pandas DataFrame 中加載我們的數(shù)據(jù)  
  6. df = pd.read_excel('Financial Sample.xlsx')   
  7. #打印前 5 行數(shù)據(jù)以確保正確加載  
  8. df.head() 

讓我們首先看看“distplot”——這讓我們可以看到一組單變量觀測值的分布——單變量只是意味著一個變量。

 
 
 
 
  1. #繪制 DataFrame "Profit" 列的分布  
  2. sns.displot(df['Profit']) 

我們現(xiàn)在有一個感興趣的分布圖——但作為一個快速入門,風格看起來有點平淡。讓我們給它一個更常見的“Seaborn”樣式,試圖讓它看起來更好一點……

 
 
 
 
  1. #設置我們希望用于繪圖的樣式  
  2. sns.set_style("darkgrid")  
  3. #繪制 DataFrame "Profit" 列的分布  
  4. sns.displot(df['Profit']) 

我們已經(jīng)設法用一行代碼繪制 DataFrame 數(shù)據(jù)的直方圖以及“KDE”線——即核密度估計圖。如果我們在 plot 調(diào)用中添加“kde=False”,我們可以刪除 KDE。我們還可以按如下方式更改直方圖中“bins”的數(shù)量——在本例中,它們被設置為 50:

 
 
 
 
  1. sns.displot(df['Profit'],kde=False,bins=50) 

現(xiàn)在讓我們看一個“聯(lián)合圖”——這允許我們組合兩個 distplots 并處理雙變量數(shù)據(jù)。讓我們創(chuàng)建一個快速的聯(lián)合圖。為此,我們需要通過傳入列名來指定我們想要繪制的 DataFrame 列,以及我們從中提取列的實際 DataFrame。這可以按如下方式完成:假設我想繪制“Profit”列與“Units Sold”列。

 
 
 
 
  1. sns.jointplot(x='Profit',y='Units Sold',data=df) 

我們現(xiàn)在有一個圖,顯示了兩個變量列之間的散點圖,以及它們在任一側(cè)的相應分布圖(它甚至在右上角為我們提供了皮爾遜相關系數(shù)和 p 分數(shù)。)

Jointplot 還允許我們設置一個名為“kind”的附加參數(shù)。這允許您影響主圖表的表示方式。目前它是一個“散點”,因為這是默認值,但是如果我們將其更改為“十六進制”,例如,我們將得到以下圖,它將圖表上的點表示為密度六邊形 - 即包含更多數(shù)據(jù)點的六邊形 顯示為比包含較少點的那些更暗。

 
 
 
 
  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='hex') 

我們可以為“kind”添加的另一個參數(shù)是“reg”,它代表回歸。這看起來很像散點圖,但這次將添加線性回歸線。

 
 
 
 
  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='reg') 

我們可以規(guī)定的另一種類型是“kde”,它將繪制一個二維 KDE 圖,它基本上只顯示數(shù)據(jù)點最常出現(xiàn)的位置的密度。

 
 
 
 
  1. sns.jointplot(x='Profit',y='Units Sold',data=df,kind='kde') 

讓我們從jointplots繼續(xù)看“pairplots”。這些使我們能夠查看整個數(shù)據(jù)幀(對于數(shù)值數(shù)據(jù))的成對關系,并且還支持分類數(shù)據(jù)點的“色調(diào)”參數(shù)。所以 pairplot 本質(zhì)上是為 DataFrame 中數(shù)字列的每個可能組合創(chuàng)建一個聯(lián)合圖。我將快速創(chuàng)建一個新的 DataFrame,它刪除“Month Number”和“Year”列,因為這些并不是我們連續(xù)數(shù)字數(shù)據(jù)的一部分,例如“利潤”和“COGS”(銷售成本)。我還將刪除其他幾列以縮小我們的 DataFrame,這樣我們的輸出圖就不會過于擁擠。

 
 
 
 
  1. #刪除不需要的列  
  2. new_df = df.drop(['Month Number','Year','Manufacturing Price','Sale Price'],axis=1)  
  3. sns.pairplot(new_df) 

請注意,我們基本上對每對列都有一個配對圖,并且在對角線上我們有一個分布的直方圖,因為將數(shù)據(jù)與自身進行聯(lián)合圖是沒有意義的。這是快速可視化數(shù)據(jù)的好方法。我們還可以添加一個“色調(diào)”——這是我們指定一個用于分割數(shù)據(jù)的分類變量的地方。讓我們添加“Segment”列作為我們的“色調(diào)”。

 
 
 
 
  1. sns.pairplot(new_df,hue='Segment') 

現(xiàn)在數(shù)據(jù)點根據(jù)分類數(shù)據(jù)著色——顏色圖例顯示在圖的右側(cè)邊緣。我們還可以通過設置“調(diào)色板”參數(shù)來更改繪圖使用的調(diào)色板。以下是使用“巖漿”配色方案的示例。所有可用的方案都可以在 Matplotlib 站點上找到。

 
 
 
 
  1. sns.pairplot(new_df,hue='Segment',palette='magma') 

我們將看到的下一個圖是一個“rugplot”——這將幫助我們構(gòu)建和解釋我們之前創(chuàng)建的“kde”圖是什么——無論是在我們的 distplot 中還是當我們傳遞“kind=kde”作為我們的參數(shù)時。

 
 
 
 
  1. sns.rugplot(df['Profit']) 

如上所示,對于 rugplot,我們將要繪制的列作為參數(shù)傳遞 - rugplot 的作用是為分布中的每個點繪制一個破折號。所以 rugplot 和 distplot 之間的區(qū)別在于 distplot 涉及“bins”的概念,并將把每個 bin 中的所有數(shù)據(jù)點相加,并繪制這個數(shù)字,而 rugplot 只是在每個數(shù)據(jù)點繪制一個標記。

所以現(xiàn)在讓我們將 rugplot 轉(zhuǎn)換為 KDE 圖。KDE 代表“核密度估計”。下圖是解釋如何將 rugplots 構(gòu)建到 KDE 圖中的。

如果我們愿意的話,我們可以從一組數(shù)據(jù)和 rugplot 中構(gòu)建我們自己的 KDE 圖,看看它是否與使用內(nèi)置的“kdeplot”直接創(chuàng)建的 KDE 圖相匹配.

 
 
 
 
  1. #設置一組 30 個取自正態(tài)分布的數(shù)據(jù)點  
  2. x = np.random.normal(0, 1, size=30)  
  3. #設置 KDE 點的帶寬  
  4. bandwidth = 1.06* x.std() * x.size ** (-1/ 5.)  
  5. #設置 y 軸的限制  
  6. support = np.linspace(-4, 4, 200)  
  7. #遍歷數(shù)據(jù)點并為每個點創(chuàng)建內(nèi)核,然后繪制內(nèi)核  
  8. kernels = []  
  9. for x_i in x:  
  10.     kernel = stats.norm(x_i, bandwidth).pdf(support)  
  11.     kernels.append(kernel)  
  12.     plt.plot(support, kernel, color="r")  
  13. sns.rugplot(x, color=".2", linewidth=3) 

 
 
 
 
  1. #使用復合梯形規(guī)則沿給定軸積分并創(chuàng)建 KDE 圖  
  2. from scipy.integrate import trapz  
  3. density = np.sum(kernels, axis=0)  
  4. density /= trapz(density, support)  
  5. plt.plot(support, density) 

現(xiàn)在讓我們使用內(nèi)置的“kdeplot”繪制 KDE 圖。

 
 
 
 
  1. sns.kdeplot(x, shade=True) 

我們可以看到兩個圖是相同的,我們已經(jīng)正確地創(chuàng)建了我們的 KDE 圖。本文已經(jīng)涵蓋了大部分分布圖功能。


新聞名稱:Python 數(shù)據(jù)科學中的 Seaborn 繪圖可視化
標題URL:http://m.5511xx.com/article/dphcejg.html