平均值
statistics模块实现了很多常用的统计公式,允许使用Python的各种数值类型(int、float、Decimal和Fraction)来完成高效计算。
共支持3种形式的平均值:均值(mean),中值或中位数(median),以及众数(mode)。可以用mean()计算算术平均值。
新建statistics_mean.py文件。
from statistics import *
data = [1, 2, 2, 5, 10, 12]
print('{:0.2f}'.format(mean(data)))
以上代码输出结果为:
5.33
以上代码,对于整数和浮点数,这个函数的返回值总是float。对于Decimal和Fraction输入数据,结果与输入的类型相同。
可以使用mode()计算一个数据中最常见的数据点。
新建statistics_mode.py文件。
from statistics import *
data = [1, 2, 2, 5, 10, 12]
print(mode(data))
以上代码输出结果为:
2
以上代码,其返回值总是输入数据集的一个成员。由于mode()把输人处理为一个离散值集合,并且统计出现次数,所以实际上输入不需要是数值。
计算中值(或中位数)有4种变形。前三种是一般算法的简单版本,只是在处理元素个数为偶数的数据集时采用了不同方法。
新建statistics_median.py文件。
from statistics import *
data = [1, 2, 2, 5, 10, 12]
print('median : {:0.2f}'.format(median(data)))
print('low : {:0.2f}'.format(median_low(data)))
print('high : {:0.2f}'.format(median_high(data)))
以上代码输出结果为:
median : 3.50
low : 2.00
high : 5.00
以上代码,median()会查找中间的值。如果数据集包含偶数个值,则取两个中间元素的平均值。median_low()总是返回输入数据集中的一个值,对于有偶数个元素的数据集,会返回两个中间元素中较小的一个。median_high()与之类似,不过会返回两个中间元素中较大的一个。
中值计算的第4个版本是median_grouped(),它会把输入看作连续数据。这个函数计算50%百分位数(即中值)的做法是首先使用所提供使用落入该区间的数据集中的具体值位置在该区间中托兴的间隔宽度找出中值区间,然后使用落入该区间的数据集中的具体位置在区间中插入值。
新建statistics_median_grouped.py文件。
from statistics import *
data = [10, 20, 30, 40]
print('1: {:0.2f}'.format(median_grouped(data, interval=1)))
print('2: {:0.2f}'.format(median_grouped(data, interval=2)))
print('3: {:0.2f}'.format(median_grouped(data, interval=3)))
以上代码输出结果为:
1: 29.50
2: 29.00
3: 28.50
以上代码,随着间隔宽度的增加,为相同数据集计算的中值会改变。