python变异系数_使用Python进行描述性统计【目录】1 描述性统计是什么?2 使用NumPy和SciPy进行数 ......
【目錄】
1 描述性統計是什么?2 使用NumPy和SciPy進行數值分析 2.1 基本概念 2.2 中心位置(均值、中位數、眾數) 2.3 發散程度(極差,方差、標準差、變異系數) 2.4 偏差程度(z-分數) 2.5 相關程度(協方差,相關系數) 2.6 回顧3 使用Matplotlib進行圖分析 3.1 基本概念 3.2 頻數分析 3.2.1 定性分析(柱狀圖、餅形圖) 3.2.2 定量分析(直方圖、累積曲線) 3.3 關系分析(散點圖) 3.4 探索分析(箱形圖) 3.5 回顧4 總結
1 描述性統計是什么?
描述性統計是借助圖表或者總結性的數值來描述數據的統計手段。數據挖掘工作的數據分析階段,我們可借助描述性統計來描繪或總結數據的基本情況,一來可以梳理自己的思維,二來可以更好地向他人展示數據分析結果。數值分析的過程中,我們往往要計算出數據的統計特征,用來做科學計算的NumPy和SciPy工具可以滿足我們的需求。Matpotlob工具可用來繪制圖,滿足圖分析的需求。
2 使用NumPy和SciPy進行數值分析
2.1 基本概念
1 from numpy importarray2 from numpy.random importnormal, randint3 #使用List來創造一組數據4 data = [1, 2, 3]5 #使用ndarray來創造一組數據6 data = array([1, 2, 3])7 #創造一組服從正態分布的定量數據8 data = normal(0, 10, size=10)9 #創造一組服從均勻分布的定性數據10 data = randint(0, 10, size=10)
2.2 中心位置(均值、中位數、眾數)
數據的中心位置是我們最容易想到的數據特征。借由中心位置,我們可以知道數據的一個平均情況,如果要對新數據進行預測,那么平均情況是非常直觀地選擇。數據的中心位置可分為均值(Mean),中位數(Median),眾數(Mode)。其中均值和中位數用于定量的數據,眾數用于定性的數據。
對于定量數據(Data)來說,均值是總和除以總量(N),中位數是數值大小位于中間(奇偶總量處理不同)的值:
均值相對中位數來說,包含的信息量更大,但是容易受異常的影響。使用NumPy計算均值與中位數:
1 from numpy importmean, median2 3 #計算均值4 mean(data)5 #計算中位數6 median(data)
對于定性數據來說,眾數是出現次數最多的值,使用SciPy計算眾數:
1 from scipy.stats importmode2 3 #計算眾數4 mode(data)
2.3 發散程度(極差、方差、標準差、變異系數)
對數據的中心位置有所了解以后,一般我們會想要知道數據以中心位置為標準有多發散。如果以中心位置來預測新數據,那么發散程度決定了預測的準確性。數據的發散程度可用極差(PTP)、方差(Variance)、標準差(STD)、變異系數(CV)來衡量,它們的計算方法如下:
極差是只考慮了最大值和最小值的發散程度指標,相對來說,方差包含了更多的信息,標準差基于方差但是與原始數據同量級,變異系數基于標準差但是進行了無量綱處理。使用NumPy計算極差、方差、標準差和變異系數:
1 from numpy importmean, ptp, var, std2 3 #極差4 ptp(data)5 #方差6 var(data)7 #標準差8 std(data)9 #變異系數10 mean(data) / std(data)
2.4 偏差程度(z-分數)
之前提到均值容易受異常值影響,那么如何衡量偏差,偏差到多少算異常是兩個必須要解決的問題。定義z-分數(Z-Score)為測量值距均值相差的標準差數目:
當標準差不為0且不為較接近于0的數時,z-分數是有意義的,使用NumPy計算z-分數:
1 from numpy importmean, std2 3 #計算第一個值的z-分數4 (data[0]-mean(data)) / std(data)
通常來說,z-分數的絕對值大于3將視為異常。
2.5 相關程度
有兩組數據時,我們關心這兩組數據是否相關,相關程度有多少。用協方差(COV)和相關系數(CORRCOEF)來衡量相關程度:
協方差的絕對值越大表示相關程度越大,協方差為正值表示正相關,負值為負相關,0為不相關。相關系數是基于協方差但進行了無量綱處理。使用NumPy計算協方差和相關系數:
1 from numpy importarray, cov, corrcoef2 3 data =array([data1, data2])4 5 #計算兩組數的協方差6 #參數bias=1表示結果需要除以N,否則只計算了分子部分7 #返回結果為矩陣,第i行第j列的數據表示第i組數與第j組數的協方差。對角線為方差8 cov(data, bias=1)9 10 #計算兩組數的相關系數11 #返回結果為矩陣,第i行第j列的數據表示第i組數與第j組數的相關系數。對角線為112 corrcoef(data)
2.6 回顧
包
方法
說明
numpy
array
創造一組數
numpy.random
normal
創造一組服從正態分布的定量數
numpy.random
randint
創造一組服從均勻分布的定性數
numpy
mean
計算均值
numpy
median
計算中位數
scipy.stats
mode
計算眾數
numpy
ptp
計算極差
numpy
var
計算方差
numpy
std
計算標準差
numpy
cov
計算協方差
numpy
corrcoef
計算相關系數
3 使用Matplotlib進行圖分析
3.1 基本概念
使用圖分析可以更加直觀地展示數據的分布(頻數分析)和關系(關系分析)。柱狀圖和餅形圖是對定性數據進行頻數分析的常用工具,使用前需將每一類的頻數計算出來。直方圖和累積曲線是對定量數據進行頻數分析的常用工具,直方圖對應密度函數而累積曲線對應分布函數。散點圖可用來對兩組數據的關系進行描述。在沒有分析目標時,需要對數據進行探索性的分析,箱形圖將幫助我們完成這一任務。
在此,我們使用一組容量為10000的男學生身高,體重,成績數據來講解如何使用Matplotlib繪制以上圖形,創建數據的代碼如下:
View Code
3.2 頻數分析
3.2.1 定性分析(柱狀圖、餅形圖)
柱狀圖是以柱的高度來指代某種類型的頻數,使用Matplotlib對成績這一定性變量繪制柱狀圖的代碼如下:
1 from matplotlib importpyplot
23#繪制柱狀圖
4defdrawBar(grades):
5 xticks = ['A','B','C','D','E']6 gradeGroup ={}
7 #對每一類成績進行頻數統計
8 forgradeingrades:
9 gradeGroup[grade] = gradeGroup.get(grade, 0) 1
10 #創建柱狀圖
11 #第一個參數為柱的橫坐標
12 #第二個參數為柱的高度
13 #參數align為柱的對齊方式,以第一個參數為參考標準
14 pyplot.bar(range(5), [gradeGroup.get(xtick, 0)forxtickinxticks], align='center')
1516 #設置柱的文字說明
17 #第一個參數為文字說明的橫坐標
18 #第二個參數為文字說明的內容
19 pyplot.xticks(range(5), xticks)
2021 #設置橫坐標的文字說明
22 pyplot.xlabel('Grade')
23 #設置縱坐標的文字說明
24 pyplot.ylabel('Frequency')
25 #設置標題
26 pyplot.title('Grades Of Male Students')
27 #繪圖
28pyplot.show()
29
30drawBar(grades)
繪制出來的柱狀圖的效果如下:
而餅形圖是以扇形的面積來指代某種類型的頻率,使用Matplotlib對成績這一定性變量繪制餅形圖的代碼如下:
1 from matplotlib importpyplot2 3 #繪制餅形圖4 defdrawPie(grades):5 labels = ['A', 'B', 'C', 'D', 'E']6 gradeGroup ={}7 for grade ingrades:8 gradeGroup[grade] = gradeGroup.get(grade, 0) 19 #創建餅形圖10 #第一個參數為扇形的面積11 #labels參數為扇形的說明文字12 #autopct參數為扇形占比的顯示格式13 pyplot.pie([gradeGroup.get(label, 0) for label in labels], labels=labels, autopct='%1.1f%%'
總結
以上是生活随笔為你收集整理的python变异系数_使用Python进行描述性统计【目录】1 描述性统计是什么?2 使用NumPy和SciPy进行数 ......的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI,让大海永远蔚蓝如诗
- 下一篇: 【jdk1.8特性】之Instant