Python3标准库:statistics统计计算

1. statistics统计计算

statistics模块实现了很多常用的统计公式,允许使用Python的各种数值类型(int、float、Decimal和Fraction)来完成高效计算。

1.1 平均值

共支持3种形式的平均值:均值(mean),中值或中位数(median),以及众数(mode)。可以用mean()计算算术平均值。

from statistics import *

data = [1, 2, 2, 5, 10, 12]

print('{:0.2f}'.format(mean(data)))

对于整数和浮点数,这个函数的返回值总是float。对于Decimal和Fraction输入数据,结果与输入的类型相同。

可以使用mode()计算一个数据集中最常见的数据点。 

from statistics import *

data = [1, 2, 2, 5, 10, 12]

print(mode(data))

其返回值总是输入数据集的一个成员。由于mode()把输入处理为一个离散值集合,并且统计出现次数,所以实际上输入不必是数值。

计算中值(或中位数)有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()与之类似,不过会返回两个中间元素中较大的一个。

中值计算的第4个版本是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)))

随着间隔宽度的增加,为相同数据集计算的中值会改变。

1.2 方差

统计使用两个值描述一个值集相对于均值的分散度。方差(variance)是各个值与均值之差平方的平均,标准偏差或标准差(standard deviation)是方差的平方根(这很有用,因为取平方根可以使标准差与输入数据有相同的单位)。如果方差或标准差的值很大,这说明一个数据集是分散的,而如果这个值很小,则说明数据在靠近均值聚集。 

import statistics

x =[1,2,3,4,5,10,9,8,7,6]
y1 = statistics.pvariance(x)
print(y1)
y2 = statistics.pstdev(x)
print(y2)
y3 = statistics.variance(x)
print(y3)
y4 = statistics.stdev(x)
print(y4)

Python包括两组函数来计算方差和标准差,具体取决于数据集是表示总体还是总体中的一个样本。这个例子首先pvariance()和pstdev()计算总体的方差和标准哈。然后使用variance()和stdev()计算一个子集的样本方差和标准差。

posted @ 2020-03-10 16:14  SmallGrayCode  阅读(1768)  评论(0编辑  收藏  举报