statistics --- 數學統計函式¶
在 3.4 版被加入.
這個模組提供計算數值 (Real-valued) 資料的數學統計函式。
這個模組並非旨在與 NumPy、SciPy 等第三方函式庫,或者像 Minitab、SAS 和 Matlab 等專門設計給專業統計學家的高階統計軟體互相競爭。此模組的目標在於繪圖和科學計算。
除非特別註明,這些函數支援 int、float、Decimal 以及 Fraction。目前不支援其他型別(無論是否為數值型別)。含有混合型別的資料的集合亦是尚未定義,且取決於該型別的實作。若你的輸入資料含有混合型別,你可以考慮使用 map() 來確保結果是一致的,例如:map(float, input_data)。
有些資料集使用 NaN (非數)來表示缺漏的資料。由於 NaN 具有特殊的比較語義,在排序資料或是統計出現次數的統計函數中,會引發意料之外或是未定義的行為。受影響的函數包含 median()、median_low()、 median_high()、 median_grouped()、 mode()、 multimode() 以及 quantiles()。在呼叫這些函數之前,應該先移除 NaN 值:
>>> from statistics import median
>>> from math import isnan
>>> from itertools import filterfalse
>>> data = [20.7, float('NaN'),19.2, 18.3, float('NaN'), 14.4]
>>> sorted(data) # This has surprising behavior
[20.7, nan, 14.4, 18.3, 19.2, nan]
>>> median(data) # This result is unexpected
16.35
>>> sum(map(isnan, data)) # Number of missing values
2
>>> clean = list(filterfalse(isnan, data)) # Strip NaN values
>>> clean
[20.7, 19.2, 18.3, 14.4]
>>> sorted(clean) # Sorting now works as expected
[14.4, 18.3, 19.2, 20.7]
>>> median(clean) # This result is now well defined
18.75
平均值與中央位置量數¶
這些函式計算來自一個母體或樣本的平均值或代表值。
資料的算術平均數(平均值)。 |
|
快速浮點數算數平均數,可調整權重。 |
|
資料的幾何平均數。 |
|
資料的調和平均數。 |
|
Estimate the probability density distribution of the data. |
|
Random sampling from the PDF generated by kde(). |
|
資料的中位數(中間值)。 |
|
資料中較小的中位數。 |
|
資料中較大的中位數。 |
|
分組資料的中位數(第 50 百分位數)。 |
|
離散 (discrete) 或名目 (nomial) 資料中的眾數(出現次數最多次的值),只回傳一個。 |
|
離散或名目資料中的眾數(出現次數最多次的值)組成的 list。 |
|
將資料分成數個具有相等機率的區間,即分位數 (quantile)。 |
離度 (spread) 的測量¶
這些函式計算母體或樣本偏離平均值的程度。
資料的母體標準差。 |
|
資料的母體變異數。 |
|
資料的樣本標準差。 |
|
資料的樣本變異數。 |
兩個輸入之間的關係統計¶
這些函式計算兩個輸入之間的關係統計數據。
兩變數的樣本共變異數。 |
|
Pearson 與 Spearman 相關係數 (correlation coefficient)。 |
|
簡單線性迴歸的斜率和截距。 |
函式細節¶
註:這些函數並不要求輸入的資料必須排序過。為了閱讀方便,大部份的範例仍已排序過。
- statistics.mean(data)¶
回傳 data 的樣本算數平均數,輸入可為一個 sequence 或者 iterable。
算數平均數為資料總和除以資料點的數目。他通常被稱為「平均值」,儘管它只是眾多不同的數學平均值之一。它是衡量資料集中位置的一種指標。
若 data 為空,則會引發
StatisticsError。使用範例:
>>> mean([1, 2, 3, 4, 4]) 2.8 >>> mean([-1.0, 2.5, 3.25, 5.75]) 2.625 >>> from fractions import Fraction as F >>> mean([F(3, 7), F(1, 21), F(5, 3), F(1, 3)]) Fraction(13, 21) >>> from decimal import Decimal as D >>> mean([D("0.5"), D("0.75"), D("0.625"), D("0.375")]) Decimal('0.5625')
備註
平均值強烈受到離群值 (outliers) 的影響,且不一定能當作這些資料點的典型範例。若要使用更穩健但效率較低的集中趨勢 (central tendency) 度量,請參考
median()。樣本平均數提供了對真實母體平均數的不偏估計 (unbiased estimate),所以從所有可能的樣本中取平均值時,
mean(sample)會收斂至整個母體的真實平均值。若 data 為整個母體而非單一樣本,則mean(data)等同於計算真實的母體平均數 μ。
- statistics.fmean(data, weights=None)¶
將 data 轉換為浮點數並計算其算數平均數。
這個函式運算比
mean()更快,並且它總是回傳一個float。data 可以是一個 sequence 或者 iterable。如果輸入的資料為空,則引發StatisticsError。>>> fmean([3.5, 4.0, 5.25])