Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Mathematical Statistics Functions ใน Python: โมดูล statistics

โมดูล 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 varianceSample (n-1)
pvariance()Population variancePopulation (n)
stdev()Sample std devSample (n-1)
pstdev()Population std devPopulation (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