上一課已經體驗到了 Seaborn 相對 Matplotlib 的優勢,本課將要介紹的是 Seaborn 對分類數據的統計,也是它的長項。

創新互聯專注于企業全網營銷推廣、網站重做改版、岳塘網站定制設計、自適應品牌網站建設、html5、成都做商城網站、集團公司官網建設、外貿營銷網站建設、高端網站制作、響應式網頁設計等建站業務,價格優惠性價比高,為岳塘等各大城市提供網站開發制作服務。
針對分類數據的統計圖,可以使用 sns.catplot 繪制,其完整參數如下:
本課使用演繹的方式來學習,首先理解這個函數的基本使用方法,重點是常用參數的含義。
其他的參數,根據名稱也能基本理解。
下面就依據 kind 參數的不同取值,分門別類地介紹各種不同類型的分類統計圖。
讀入數據集:
然后用這個數據集制圖,看看效果:
輸出結果:
毫無疑問,這里繪制的是散點圖。但是,該散點圖的橫坐標是分類特征 time 中的三個值,并且用 hue='kind' 又將分類特征插入到圖像中,即用不同顏色的的點代表又一個分類特征 kind 的值,最終得到這些類別組合下每個記錄中的 pulse 特征值,并以上述圖示表示出來。也可以理解為,x='time', hue='kind' 引入了圖中的兩個特征維度。
語句 ① 中,就沒有特別聲明參數 kind 的值,此時是使用默認值 'strip'。
與 ① 等效的還有另外一個對應函數 sns.stripplot。
輸出結果:
② 與 ① 的效果一樣。
不過,在 sns.catplot 中的兩個參數 row、col,在類似 sns.stripplot 這樣的專有函數中是沒有的。因此,下面的圖,只有用 sns.catplot 才能簡潔直觀。
輸出結果:
不過,如果換一個叫角度來說,類似 sns.stripplot 這樣的專有函數,表達簡單,參數與 sns.catplot 相比,有所精簡,使用起來更方便。
仔細比較,sns.catplot 和 sns.stripplot 兩者還是稍有區別的,雖然在一般情況下兩者是通用的。
因此,不要追求某一個是萬能的,各有各的用途,存在即合理。
不過,下面的聲明請注意: 如果沒有非常的必要,比如繪制分區圖,在本課中后續都演示如何使用專有名稱的函數。
前面已經初步解釋了這個函數,為了格式完整,這里再重復一下,即 sns.catplot 中參數 kind='strip'。
如果非要將此函數翻譯為漢語,可以稱之為“條狀散點圖”。以分類特征為一坐標軸,在另外一個坐標軸上,根據分類特征,將該分類特征數據所在記錄中的連續值沿坐標軸描點。
從語句 ② 的結果圖中可以看到,這些點雖然縱軸的數值有相同的,但是沒有將它們重疊。因此,我們看到的好像是“一束”散點,實際上,所有點的橫坐標都應該是相應特征分類數據,也不要把分類特征的值理解為一個范圍,分散開僅僅是為了圖示的視覺需要。
輸出結果:
④ 相對 ② 的圖示,在于此時同一縱軸值的都重合了——本來它們的橫軸值都是一樣的。實現此效果的參數是 jitter=0,它可以表示點的“振動”,如果默認或者 jitter=True,意味著允許描點在某個范圍振動——語句 ② 的效果;還可設置為某個 0 到 1 的浮點,表示許可振動的幅度。請對比下面的操作。
輸出結果:
語句 ② 中使用 hue='kind' 參數向圖中提供了另外一個分類特征,但是,如果感覺圖有點亂,還可以這樣做:
輸出結果:
dodge=True 的作用就在于將 hue='kind' 所引入的特征數據分開,相對 ② 的效果有很大差異。
并且,在 ⑤ 中還使用了 paletter='Set2' 設置了色彩方案。
sns.stripplot 函數中的其他有關參數,請讀者使用幫助文檔了解。
此函數即 sns.catplot 的參數 kind='swarm'。
輸出結果:
再繪制一張簡單的圖,一遍研究這種圖示的本質。
輸出結果:
此圖只使用了一個特征的數據,簡化表象,才能探究 sns.swarmplot 的本質。它同樣是將該特征中的數據,依據其他特征的連續值在圖中描點,并且所有點在默認情況下不彼此重疊——這方面與 sns.stripplot 一樣。但是,與之不同的是,這些點不是隨機分布的,它們經過調整之后,均勻對稱分布在分類特征數值所在直線的兩側,這樣能很好地表示數據的分布特點。但是,這種方式不適合“大數據”。
sns.swarmplot 的參數似乎也沒有什么太特殊的。下面使用幾個,熟悉一番基本操作。
在分類維度上還可以再引入一個維度,用不同顏色的點表示另外一種類別,即使用 hue 參數來實現。
輸出結果:
這里用 hue = 'smoker' 參數又引入了一個分類特征,在圖中用不同顏色來區分。
如果覺得會 smoker 特征的值都混在一起有點亂,還可以使用下面方式把他們分開——老調重彈。
輸出結果:
生成此效果的參數就是 dodge=True,它的作用就是當 hue 參數設置了特征之后,將 hue 的特征數據進行分類。
sns.catplot 函數的參數 kind 可以有三個值,都是用于繪制分類的分布圖:
下面依次對這三個專有函數進行闡述。
bar()柱形圖
barh()條形圖
hist()直方分布圖
pie()餅圖|
polar()雷達圖
scater()氣泡圖
stem()棉棒圖
boxplot()箱線圖
errorbar()誤差棒圖
如果隨機變量X的所有取值都可以逐個列舉出來,則稱X為離散型隨機變量。相應的概率分布有二項分布,泊松分布。
如果隨機變量X的所有取值無法逐個列舉出來,而是取數軸上某一區間內的任一點,則稱X為連續型隨機變量。相應的概率分布有正態分布,均勻分布,指數分布,伽馬分布,偏態分布,卡方分布,beta分布等。(真多分布,好恐怖~~)
在離散型隨機變量X的一切可能值中,各可能值與其對應概率的乘積之和稱為該隨機變量X的期望值,記作E(X) 。比如有隨機變量,取值依次為:2,2,2,4,5。求其平均值:(2+2+2+4+5)/5 = 3。
期望值也就是該隨機變量總體的均值。 推導過程如下:
= (2+2+2+4+5)/5
= 1/5 2 3 + 4/5 + 5/5
= 3/5 2 + 1/5 4 + 1/5 5
= 0.6 2 + 0.2 4 + 0.2 5
= 60% 2 + 20% 4 + 20%*5
= 1.2 + 0.8 + 1
= 3
倒數第三步可以解釋為值為2的數字出現的概率為60%,4的概率為20%,5的概率為20%。 所以E(X) = 60% 2 + 20% 4 + 20%*5 = μ = 3。
0-1分布(兩點分布),它的隨機變量的取值為1或0。即離散型隨機變量X的概率分布為:P{X=0} = 1-p, P{X=1} = p,即:
則稱隨機變量X服從參數為p的0-1分布,記作X~B(1,p)。
在生活中有很多例子服從兩點分布,比如投資是否中標,新生嬰兒是男孩還是女孩,檢查產品是否合格等等。
大家非常熟悉的拋硬幣試驗對應的分布就是二項分布。拋硬幣試驗要么出現正面,要么就是反面,只包含這兩個結果。出現正面的次數是一個隨機變量,這種隨機變量所服從的概率分布通常稱為 二項分布 。
像拋硬幣這類試驗所具有的共同性質總結如下:(以拋硬幣為例)
通常稱具有上述特征的n次重復獨立試驗為n重伯努利試驗。簡稱伯努利試驗或伯努利試驗概型。特別地,當試驗次數為1時,二項分布服從0-1分布(兩點分布)。
舉個栗子:拋3次均勻的硬幣,求結果出現有2個正面的概率 。
已知p = 0.5 (出現正面的概率) ,n = 3 ,k = 2
所以拋3次均勻的硬幣,求結果出現有2個正面的概率為3/8。
二項分布的期望值和方差 分別為:
泊松分布是用來描述在一 指定時間范圍內或在指定的面積或體積之內某一事件出現的次數的分布 。生活中服從泊松分布的例子比如有每天房產中介接待的客戶數,某微博每月出現服務器癱瘓的次數等等。 泊松分布的公式為 :
其中 λ 為給定的時間間隔內事件的平均數,λ = np。e為一個數學常數,一個無限不循環小數,其值約為2.71828。
泊松分布的期望值和方差 分別為:
使用Python繪制泊松分布的概率分布圖:
因為連續型隨機變量可以取某一區間或整個實數軸上的任意一個值,所以通常用一個函數f(x)來表示連續型隨機變量,而f(x)就稱為 概率密度函數 。
概率密度函數f(x)具有如下性質 :
需要注意的是,f(x)不是一個概率,即f(x) ≠ P(X = x) 。在連續分布的情況下,隨機變量X在a與b之間的概率可以寫成:
正態分布(或高斯分布)是連續型隨機變量的最重要也是最常見的分布,比如學生的考試成績就呈現出正態分布的特征,大部分成績集中在某個范圍(比如60-80分),很小一部分往兩端傾斜(比如50分以下和90多分以上)。還有人的身高等等。
正態分布的定義 :
如果隨機變量X的概率密度為( -∞x+∞):
則稱X服從正態分布,記作X~N(μ,σ2)。其中-∞μ+∞,σ0, μ為隨機變量X的均值,σ為隨機變量X的標準差。 正態分布的分布函數
正態分布的圖形特點 :
使用Python繪制正態分布的概率分布圖:
正態分布有一個3σ準則,即數值分布在(μ-σ,μ+σ)中的概率為0.6827,分布在(μ-2σ,μ+2σ)中的概率為0.9545,分布在(μ-3σ,μ+3σ)中的概率為0.9973,也就是說大部分數值是分布在(μ-3σ,μ+3σ)區間內,超出這個范圍的可能性很小很小,僅占不到0.3%,屬于極個別的小概率事件,所以3σ準則可以用來檢測異常值。
當μ=0,σ=1時,有
此時的正態分布N(0,1) 稱為標準正態分布。因為μ,σ都是確定的取值,所以其對應的概率密度曲線是一條 形態固定 的曲線。
對標準正態分布,通常用φ(x)表示概率密度函數,用Φ(x)表示分布函數:
假設有一次物理考試特別難,滿分100分,全班只有大概20個人及格。與此同時語文考試很簡單,全班絕大部分都考了90分以上。小明的物理和語文分別考了60分和80分,他回家后告訴家長,這時家長能僅僅從兩科科目的分值直接判斷出這次小明的語文成績要比物理好很多嗎?如果不能,應該如何判斷呢?此時Z-score就派上用場了。 Z-Score的計算定義 :
即 將隨機變量X先減去總體樣本均值,再除以總體樣本標準差就得到標準分數啦。如果X低于平均值,則Z為負數,反之為正數 。通過計算標準分數,可以將任何一個一般的正態分布轉化為標準正態分布。
小明家長從老師那得知物理的全班平均成績為40分,標準差為10,而語文的平均成績為92分,標準差為4。分別計算兩科成績的標準分數:
物理:標準分數 = (60-40)/10 = 2
語文:標準分數 = (85-95)/4 = -2.5
從計算結果來看,說明這次考試小明的物理成績在全部同學中算是考得很不錯的,而語文考得很差。
指數分布可能容易和前面的泊松分布混淆,泊松分布強調的是某段時間內隨機事件發生的次數的概率分布,而指數分布說的是 隨機事件發生的時間間隔 的概率分布。比如一班地鐵進站的間隔時間。如果隨機變量X的概率密度為:
則稱X服從指數分布,其中的參數λ0。 對應的分布函數 為:
均勻分布的期望值和方差 分別為:
使用Python繪制指數分布的概率分布圖:
均勻分布有兩種,分為 離散型均勻分布和連續型均勻分布 。其中離散型均勻分布最常見的例子就是拋擲骰子啦。拋擲骰子出現的點數就是一個離散型隨機變量,點數可能有1,2,3,4,5,6。每個數出現的概率都是1/6。
設連續型隨機變量X具有概率密度函數:
則稱X服從區間(a,b)上的均勻分布。X在等長度的子區間內取值的概率相同。對應的分布函數為:
f(x)和F(x)的圖形分別如下圖所示:
均勻分布的期望值和方差 分別為:
標題名稱:python繪統計圖函數 Python繪圖函數
分享URL:http://www.js-pz168.com/article5/hhceii.html
成都網站建設公司_創新互聯,為您提供網站導航、虛擬主機、定制網站、Google、全網營銷推廣、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯