Python statistics
Python3 学习笔记 · 整理自菜鸟教程
一句话
statistics 是标准库里的统计模块,直接对序列算平均值、中位数、方差、标准差等,不用装第三方库。
要点
- 标准库自带,
import statistics即可,无需pip install。 - 面向小数据、教学与精确计算;超大数组或矩阵运算用
numpy更快。 - 整数输入尽量返回精确结果(如中位数可能是
Fraction)。 - 区分总体(
p*,分母 n)与样本(pstdev/variance之外,分母 n-1)统计量。 median_low/median_high在偶数个元素时返回不同侧的中位数。- 支持权重版:
fmean(加权均值)、quantiles(分位数)。
语法 / 常用方法
| 方法 | 说明 | 示例 |
|---|---|---|
mean(data) |
算术平均 | mean([1,2,3]) → 2 |
fmean(data) |
浮点快速平均,支持权重 | fmean([1,2,3]) → 2.0 |
median(data) |
中位数,偶数取两数平均 | median([1,2,3,4]) → 2.5 |
median_low(data) |
偶数时取较小中位数 | median_low([1,2,3,4]) → 2 |
median_high(data) |
偶数时取较大中位数 | median_high([1,2,3,4]) → 3 |
mode(data) |
众数(出现最多) | mode([1,1,2]) → 1 |
multimode(data) |
所有众数,返回列表 | multimode([1,1,2,2]) → [1,2] |
pstdev(data) |
总体标准差(分母 n) | 整体数据离散度 |
stdev(data) |
样本标准差(分母 n-1) | 抽样数据离散度 |
pvariance(data) |
总体方差 | pstdev 的平方 |
variance(data) |
样本方差 | stdev 的平方 |
quantiles(data, n) |
分成 n 段的分位点 | quantiles(data, n=4) |
harmonic_mean(d) |
调和平均 | 平均速度等场景 |
geometric_mean(d) |
几何平均 | 增长率、比率 |
代码示例
1 | |
易错点
stdev(样本,分母 n-1)与pstdev(总体,分母 n)结果不同,按数据性质选。mode在 Python 3.8+ 返回第一个众数;要全部众数用multimode。- 空序列会抛
StatisticsError,算之前先判空。 - 只有一个数据时算
stdev/variance会报错(分母为 0)。 mean返回可能是整数或Fraction,需要小数时用fmean或float()。- 大数组性能不行,动辄百万级数据请改用
numpy。