5.5 statistics:统计计算
statistics模块实现常用的统计公式,允许使用python的各种数值类型(int,float,Decimal和Fraction)来完成高效计算。
5.5.1 平均值
共支持3种形式的平均值:均值(mean),中值或中位数(median),以及众数(mode)。可以用mean()计算算术平均值。
from statistics import *
data = [1,2,2,5,10,12]
print('{:0.2f}'.format(mean(data)))
对于整数和浮点数,这个函数的返回值总算float。对于Decimal和Franction输入数据,结果与输入的类型相同。
运行结果:
5.33
可以使用mode()计算一个数据集中最常见的数据点。
from statistics import *
data = [1,2,2,5,10,12]
print(mode(data))
其返回值总算输入数据集的一个成员。由于mode()把输入处理为一个离散值集合,并且统计出现次数,所以实际上输入不需要是数值。
运行结果:
2
计算中值(或中位数)有4种变形。前三种是一般算法的简单版本,只是在处理元素个数为偶数的数据集时采用了不同方法。
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()会查找中间的值。如果数据集包含偶数个数,则取两个中间元素的平均值。median_low()总算返回输入数据集中的一个值,对于有偶数个数元素的数据集,会返回两个中间元素中较小的一个。median_high()与之类似,不过会返回两个元素中较大的一个。
运行结果:
中值计算的第四个版本是median_grouped(),它会把输入看作连续数据。这个函数计算50%百分位数(即中值)的做法是首先使用提供的间隔宽度找出中值区间,然后使用落入该区间的数据集中的具体位置在该区间中插值。
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)))