Python之statistics模块的使用
statistics模块的作用
statistics模块实现了很多常用的统计公式,允许使用Python的各种数值类型(int,float,Decimal和Fraction)来完成高效的计算。
1、求一个列表的平均数
from statistics import * data = [1, 2, 2, 5, 10, 12] print('{:0.2f}'.format(mean(data)))
运行效果
5.33
2、显示一个元素在列表中出现次数最多的,如果数次相同则抛出异常statistics.StatisticsError
from statistics import * data = [1, 2, 2, 5, 10, 12] print('{}'.format(mode(data)))
运行效果
2
3、计算中间最小,最大值,和中数的平均值
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
4、取中间值,每次减少0.5的示例
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
5、方差计算
from statistics import * import subprocess def get_line_lengths(): cmd = 'wc -l ../[a-z]*/*.py' out = subprocess.check_output( cmd, shell=True).decode('utf-8') for line in out.splitlines(): parts = line.split() if parts[1].strip().lower() == 'total': break nlines = int(parts[0].strip()) if not nlines: continue # skip empty files yield (nlines, parts[1].strip()) data = list(get_line_lengths()) lengths = [d[0] for d in data] sample = lengths[::2] print('Basic statistics:') print(' count : {:3d}'.format(len(lengths))) print(' min : {:6.2f}'.format(min(lengths))) print(' max : {:6.2f}'.format(max(lengths))) print(' mean : {:6.2f}'.format(mean(lengths))) print('\nPopulation variance:') # 方差 print(' pstdev : {:6.2f}'.format(pstdev(lengths))) print(' pvariance : {:6.2f}'.format(pvariance(lengths))) print('\nEstimated variance for sample:') # 标准差 print(' count : {:3d}'.format(len(sample))) print(' stdev : {:6.2f}'.format(stdev(sample))) print(' variance : {:6.2f}'.format(variance(sample)))
运行效果
[root@localhost ~]# python python python2 python2.6 python3 [root@YZS_3WYY_WEB ~]# python3 p.py Basic statistics: count : 4 min : 7.00 max : 134.00 mean : 46.75 Population variance: pstdev : 51.89 pvariance : 2692.69 Estimated variance for sample: count : 2 stdev : 89.10 variance : 7938.00