熱線電話:13121318867

登錄
首頁數據分析教程數據分析師教程《統計學極簡入門》第2節 描述性統計
數據分析師教程《統計學極簡入門》第2節 描述性統計
2024-10-09
收藏

2. 描述性統計

上一篇介紹了數據的分類、統計學是什么、以及統計學知識的大分類,本篇我們重點學習描述性統計學。

我們描述一組數據的時候,通常分三個方面描述:集中趨勢、離散趨勢、分布形狀。通俗來說,集中趨勢是描述數據集中在什么位置,離散趨勢描述的是數據分散的程度,分布形狀描述的是數據形狀。

首先,來看描述數據的集中趨勢,使用的三個常見的統計量:

平均數

  • 算術平均數 算術平均數是n個數求和后除以n得到的結果。廣泛應用于各個領域,用于描述和分析數據的平均水平和集中趨勢

Excel求算術平均數的函數=AVERAGE(A1:A8)

PS:聰明的你肯定知道把上面8個數據 2,23,4,17,12,12,13,16,用左手復制到你Excel中的A1:A8單元格(記得豎著放?。?/p>

用Python求算術平均數

## 使用 numpy 庫里的 mean 函數
import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.mean(data))
# 12.375
  • 幾何平均數 幾何平均數就是n個數乘積的n次方根。在金融財務、投資和銀行業的問題中,幾何平均數的應用尤為常見。當你任何時候想確定過去幾個連續時期的平均變化率時,都能應用幾何平均數。其他通常的應用包括物種總體、農作物產量、污染水平以及出生率和死亡率的變化。(在第8節案例8.1中會舉例說明)。 公式如下:

Excel求幾何平均數的函數=GEOMEAN(A1:A8)

用Python求幾何平均數

# 使用 scipy 庫里的 gmean 函數求幾何平均數
from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.gmean(data))
# 9.918855683110795
  • 調和平均數

n個數的倒數的算術平均數的倒數

Excel求調和平均數的函數=HARMEAN(A1:A8)

Python求調和平均數

# 使用 scipy 庫里的 hmean 函數求調和平均數
from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.hmean(data))
# 6.906127821278071

還沒看暈吧?我們小結一下,三者的大小排序一般是算術平均值 ≥ 幾何平均值 ≥ 調和平均值。另外 數值類數據的均值一般用算術平均值,比例型數據的均值一般用幾何平均值,平均速度一般用調和平均數

中位數

中位數是把數據按照順序排列,處于中間位置的那個數

Excel求中位數的函數=MEDIAN(A1:A8)

Python求中位數

# 使用 numpy 庫里的 median 函數求中位數
import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.median(data))
# 12.5

眾數

眾數是一組數據中出現次數最多的變量值。

Excel求眾數的函數=MODE(A1:A8)

Python求眾數

# 使用 scipy 庫里的 mode 函數求眾數
from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.mode(data))
# ModeResult(mode=array([12]), count=array([2]))

以上便是描述數據集中趨勢的幾個統計量,接下來我們來看描述數據離散趨勢的統計量:

分位數

四分位數用3個分位數,將數據等分成4個部分。這3個四分位數,分別位于這組數據升序排序后的25%、50%和75%的位置上。另外,75%分位數與25%分位數的差叫做四分位距。

Excel求分位數的函數=QUARTILE(A1:A8,1) ,括號里面的參數:0代表最小值,1代表25%分位數,2代表50%分位數,3代表75%分位數,4代表最大值,

Python求該組數據的下四分位數與上四分位數

from scipy import stats as sts  
data =  [2,23,4,17,12,12,13,16]
print(sts.scoreatpercentile(data,25)) #25分位數
print(sts.scoreatpercentile(data,75)) #75分位數
10.0
16.25

補充一點,關于描述性統計部分的圖表可視化,本系列教程不做展開,唯一值得一提的是箱線圖,不論是描述數據、還是判斷異常都是你應該掌握的數據分析利器(在第8節案例8.2中會詳細舉例說明)這里先簡單舉例如下

用四分位數繪制的箱線圖

import seaborn as sns
data = [2,23,4,17,12,12,13,16]
# 使用sns.boxplot()函數繪制箱線圖
sns.boxplot(data=data)

箱線圖可以很直觀地看到:數據的最大值、最小值、以及大部分數據集中在什么區間。

具體來說就是: 異常值、上邊緣 Q3+1.5(Q3-Q1)、上四分位數 Q3、中位數 Q2 下四分位數 Q1、下邊緣 Q1-1.5(Q3-Q1)

  • 極差

極差又稱范圍誤差或全距,是指一組數據中最大值與最小值的差

Excel求極差的函數=MAX(A1:A8) - MIN(A1:A8)

Python 求極差

import numpy as np
data =  [2,23,4,17,12,12,13,16]
print(np.ptp(data))
# 21
  • 四分位距

四分位距是上四分位數與下四分位數之差,一般用表示

Excel求分位數的函數=QUARTILE(A1:A8,3)-QUARTILE(A1:A8,1) Python 求四分位距

from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.scoreatpercentile(data,75)-sts.scoreatpercentile(data,25))
# 6.25

方差

方差是一組數據中的各數據值與該組數據算術平均數之差的平方的算術平均數。

Excel求方差的函數=VAR(A1:A8)

Python求方差

from scipy import stats as sts
data =  [2,23,4,17,12,12,13,16]
print(sts.tvar(data,ddof = 1))# ddof=1時,分母為n-1;ddof=0時,分母為n
#46.55357142857143

標準差

標準差方差的開方??傮w標準差常用σ表示,樣本標準差常用S表示。 Excel求方差的函數=STDEV(A1:A8) Python求標準差:

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.tstd(data,ddof = 1))# ddof=1時,分母為n-1;ddof=0時,分母為n
# 6.823017765517794

變異系數

對不同變量或不同數組的離散程度進行比較時,如果它們的平均水平和計量單位都相同,才能利用上述指標進行分析,否則需利用變異系數來比較它們的離散程度。

變異系數又稱為離散系數,是一組數據中的極差、四分位差或標準差等離散指標與算術平均數的比率。

Excel求變異系數的函數=STDEV(A1:A8)/AVERAGE(A1:A8)

Python求標準差變異系數:

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.tstd(data)/sts.tmean(data))
# 0.5513549709509329

看完了描述數據離散程度的幾個統計量,我們接著看描述數據分布形狀的偏度和峰度:

偏度

偏度系數是對分布偏斜程度的測度,通常用SK表示。偏度衡量隨機變量概率分布的不對稱性,是相對于平均值不對稱程度的度量。

當偏度系數為正值時,表示正偏離差數值較大,可以判斷為正偏態或右偏態;反之,當偏度系數為負值時,表示負偏離差數值較大,可以判斷為負偏態或左偏態。偏度系數的絕對值越大,表示偏斜的程度就越大。

Excel求偏度的函數=SKEW(A1:A8)

Python如何求偏度:

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.skew(data,bias=False)) # bias=False 代表計算的是總體偏度,bias=True 代表計算的是樣本偏度
# -0.21470003988916822

峰度

峰度描述的是分布集中趨勢高峰的形態,通常與標準正態分布相比較。在歸一化到同一方差時,若分布的形狀比標準正態分布更“瘦”、更“高”,則稱為尖峰分布;若比標準正態分布更“矮”、更“胖”,則稱為平峰分布。

峰度系數是對分布峰度的測度,通常用K表示:

由于標準正態分布的峰度系數為0,所以當峰度系數大于0時為尖峰分布,當峰度系數小于0時為平峰分布。

Excel求峰度的函數 =KURT(A1:A8)

Python如何求峰度:

from scipy import stats as sts
data = [2,23,4,17,12,12,13,16]
print(sts.kurtosis(data,bias=False)) # bias=False 代表計算的是總體峰度,bias=True 代表計算的是樣本峰度
# -0.17282884047242897

下期預告:《Python統計學極簡入門》第3節 數據分布

這里分享一個你一定用得到的小程序——CDA數據分析師考試小程序。 它是專為CDA數據分析認證考試報考打造的一款小程序??梢詭湍憧焖賵竺荚?、查成績、查證書、查積分,通過該小程序,考生可以享受更便捷的服務。 掃碼加入CDA小程序,與圈內考生一同學習、交流、進步!

數據分析咨詢請掃描二維碼

若不方便掃碼,搜微信號:CDAshujufenxi

數據分析師資訊
更多

OK
客服在線
立即咨詢
日韩人妻系列无码专区视频,先锋高清无码,无码免费视欧非,国精产品一区一区三区无码
客服在線
立即咨詢