Module statistics của thư viện Python chứa các hàm tính công thức thống kê dùng kiểu dữ liệu số bao gồm Fraction và Decimal.
Cần câu lệnh import sau để dùng các hàm mô tả trong bài:
>>> from statistics import *
Các hàm sau tính xu hướng trung tâm (central tendency) của dữ liệu mẫu.
mean() – Tính trung bình cộng (arithmetic mean) của dữ liệu dạng sequence hoặc iterator.
>>> from statistics import mean >>> numbers = [12,34,21,7,56] >>> mean(numbers) 26
Dữ liệu mẫu có thể chứa đối tượng Decimal hoặc Fraction
>>> from decimal import Decimal >>> numbers = [12,34,21,Decimal('7'),56] >>> mean(numbers) Decimal('26') >>> from fractions import Fraction >>> numbers = [12,20.55,Fraction(4,5),21,56] >>> mean(numbers) 22.07 harmonic_mean() – Trung bình điều hòa (harmonic mean) tính bằng cách lấy trung bình cộng của nghịch đảo các phần tử trong mẫu, rồi lấy nghịch đảo của trung bình cộng đó.
Mẫu = [1,2,3,4,5]
Nghịch đảo = [1/1, 1/2, 1/3, 1/4, 1/5] = 2.28333333333
Trung bình = 2.28333333333/5 = 0.45666666666666667
Trung bình điều hòa = 1 / 0.45666666666666667 = 2.189784218663093
>>> harmonic_mean([1,2,3,4,5]) 2.18978102189781
median() – Trung vị (median) là giá trị giữa của dữ liệu mẫu. Dữ liệu tự động sắp xếp tăng dần để tìm median. Nếu số phần tử lẻ, median là giá trị giữa. Nếu chẵn, trung bình của hai giá trị giữa là median.
>>> median([2,5,4,8,6]) 5 >>> median([11,33,66,55,88,22]) 44.0
mode() – Trả về giá trị phổ biến nhất (most common) trong mẫu. Hàm này áp dụng cho dữ liệu số hoặc phi số.
>>> mode((4,7,8,4,9,7,12,4,8)) 4 >>> mode(['cc','aa','dd','cc','ff','cc']) 'cc'
Các hàm sau xử lý độ phân tán (dispersion) của các phần tử trong mẫu so với giá trị trung tâm.
variance() – Phản ánh sự biến thiên hoặc độ phân tán của dữ liệu trong mẫu. Variance lớn nghĩa là dữ liệu rải rác. Variance nhỏ cho thấy dữ liệu tập trung chặt.
Quy trình tìm variance:
- Tìm trung bình cộng của tất cả phần tử trong mẫu.
- Tìm bình phương hiệu giữa trung bình và mỗi phần tử và cộng các bình phương.
- Chia tổng cho n-1 nếu kích thước mẫu là n để được variance
Về mặt toán học, quy trình trên biểu diễn bằng công thức:
$$s^2 = \frac{1}{n-1}\displaystyle\displaystyle\sum\limits_{i=1}^n(x_{i}-\overline{x})^2$$
May mắn thay hàm variance() lo việc tính toán công thức trên.
>>> num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70] >>> variance(num) 981.2111111111111
stdev() – Trả về độ lệch chuẩn (standard deviation) của dữ liệu trong mẫu. Độ lệch chuẩn là căn bậc hai của variance.
>>> num = [4, 9, 2, 11, 5, 22, 90, 32, 56, 70] >>> stdev(num) 31.324289474960338