โมดูล statistics ใน Python standard library (Python 3.4+) ให้ฟังก์ชันสถิติพื้นฐานสำหรับ numeric data รองรับ int, float, Fraction, Decimal
Import
from statistics import *
Measures of Central Tendency (ขนาดตำแหน่งศูนย์กลาง)
1. mean() - ค่าเฉลี่ยเลขคณิต
numbers = [12, 34, 21, 7, 56]
mean(numbers) # 26
# รองรับ Decimal และ Fraction
from decimal import Decimal
from fractions import Fraction
mean([12, 34, 21, Decimal('7'), 56]) # Decimal('26')
mean([12, 20.55, Fraction(4,5), 21, 56]) # 22.07
2. harmonic_mean() - ค่าเฉลี่ยฮาร์มอนิก
Harmonic Mean = n / Σ(1/xᵢ) — ใช้สำหรับอัตรา/ความเร็ว
harmonic_mean([1, 2, 3, 4, 5]) # 2.18978102189781 # ตัวอย่าง: ความเร็วเฉลี่ย # ไป 60 km/h, กลับ 40 km/h → harmonic mean = 48 km/h (ไม่ใช่ 50) harmonic_mean([60, 40]) # 48.0
3. median() - มัธยฐาน
ค่ากึ่งกลางเมื่อเรียงลำดับ (ถ้าคี่ = ค่ากึ่งกลาง, ถ้าคู่ = เฉลี่ย 2 ค่ากึ่งกลาง)
median([2, 5, 4, 8, 6]) # 5 median([11, 33, 66, 55, 88, 22]) # 44.0
4. median_low() และ median_high()
data = [1, 3, 5, 7] median_low(data) # 3 (ค่ากึ่งกลางด้านล่าง) median_high(data) # 5 (ค่ากึ่งกลางด้านบน)
5. median_grouped() - มัธยฐานแบบจัดกลุ่ม
median_grouped([1, 2, 2, 3, 4, 4, 4, 4, 4, 5]) # 3.7
6. mode() - ฐานนิยม
ค่าที่เกิดบ่อยที่สุด (ใช้กับ numeric และ non-numeric ได้)
mode([4, 7, 8, 4, 9, 7, 12, 4, 8]) # 4 mode(['cc', 'aa', 'dd', 'cc', 'ff', 'cc']) # 'cc' # multimode() สำหรับหลายค่า (Python 3.8+) from statistics import multimode multimode([1, 1, 2, 2, 3]) # [1, 2]
Measures of Dispersion (ขนาดการกระจาย)
7. variance() - ความแปรปรวน (Sample Variance)
s² = Σ(xᵢ - x̄)² / (n-1) — ใช้ n-1 (Bessel's correction) สำหรับ sample
num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70] variance(num) # 981.2111111111111
8. pvariance() - Population Variance
σ² = Σ(xᵢ - μ)² / n — ใช้ n สำหรับ population ทั้งหมด
pvariance([1, 2, 3, 4, 5]) # 2.0
9. stdev() - ส่วนเบี่ยงเบนมาตรฐาน (Sample)
รากที่สองของ variance
num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70] stdev(num) # 31.324289474960338
10. pstdev() - Population Standard Deviation
pstdev([1, 2, 3, 4, 5]) # 1.4142135623730951
ฟังก์ชันเพิ่มเติม (Python 3.8+)
| ฟังก์ชัน | คำอธิบาย |
|---|---|
fmean() | Fast mean (float only, เร็วกว่า mean) |
geometric_mean() | ค่าเฉลี่ยเรขาคณิต (Πxᵢ)^(1/n) |
multimode() | คืน list ของ modes ทั้งหมด |
quantiles() | ควอนไทล์ (quartiles, percentiles, etc.) |
correlation() | Pearson correlation coefficient |
covariance() | Covariance |
linear_regression() | Simple linear regression (slope, intercept) |
ตัวอย่าง: Quantiles และ Correlation
from statistics import quantiles, correlation data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # Quartiles (4 quantiles) print(quantiles(data, n=4)) # [3.25, 5.5, 7.75] # Deciles (10 quantiles) print(quantiles(data, n=10)) # [1.9, 2.8, 3.7, 4.6, 5.5, 6.4, 7.3, 8.2, 9.1] # Correlation x = [1, 2, 3, 4, 5] y = [2, 4, 6, 8, 10] print(correlation(x, y)) # 1.0 (perfect positive correlation)
ตารางสรุปฟังก์ชันหลัก
| ฟังก์ชัน | คำอธิบาย | Sample/Population |
|---|---|---|
| mean() | Arithmetic mean | - |
| harmonic_mean() | Harmonic mean | - |
| median() | Median | - |
| mode() | Mode (single) | - |
| multimode() | Modes (multiple) | - |
| variance() | Sample variance | Sample (n-1) |
| pvariance() | Population variance | Population (n) |
| stdev() | Sample std dev | Sample (n-1) |
| pstdev() | Population std dev | Population (n) |
ข้อควรระวัง
variance()และstdev()ใช้ n-1 (sample) — สำหรับ population ใช้pvariance()และpstdev()- ต้องมีข้อมูลอย่างน้อย 2 จุดสำหรับ variance/stdev
mode()โยนStatisticsErrorหากไม่มี mode หรือมีหลาย mode (ใช้multimode()แทน)- รองรับ
FractionและDecimalสำหรับความแม่นยำสูง
สรุป
โมดูล statistics ให้ descriptive statistics พื้นฐานครบครัน ใช้งานง่าย ไม่ต้องติดตั้งเพิ่ม เหมาะสำหรับ data analysis งานเล็ก-กลาง สำหรับงานใหญ่หรือ advanced stats แนะนำใช้ pandas, scipy.stats, หรือ numpy