前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python【statistics】 — 统计学计算(总结一)

Python【statistics】 — 统计学计算(总结一)

作者头像
Python知识大全
发布2020-02-13 16:01:15
9880
发布2020-02-13 16:01:15
举报
文章被收录于专栏:Python 知识大全Python 知识大全

阅读本文需要3.9分钟

目的:常见的统计计算实现。

statistics 模块实现了许多常用的统计公式,以便使用 Python 的各种数值类型(intfloatDecimalFraction)进行高效的计算。

平均值

均值支持三种形式,平均值,中位数和众数。mean() 用来计算算术平均值。

statistics_mean.py

代码语言:javascript
复制
from statistics import *

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

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

整数和浮点数的返回值始终为 浮点数。 对于 “Decimal” 和 “Fraction” 输入数据,结果与输入的类型相同。

代码语言:javascript
复制
$ python3 statistics_mean.py

5.33

使用 mode() 计算数据集中出现最多的数据点。

statistics_mode.py

代码语言:javascript
复制
from statistics import *

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

print(mode(data))

返回值始终是输入数据集的成员。因为 mode() 将输入视为一组离散值,并计算重复次数,输入实际上不需要是数值。

代码语言:javascript
复制
$ python3 statistics_mode.py

2

计算中位数或中值有四种变化。前三个是常用算法的直接版本,使用不同的解决方案来处理具有偶数元素的数据集。

statistics_median.py

代码语言:javascript
复制
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() 同样地返回两个中间项中的较高者。

代码语言:javascript
复制
$ python3 statistics_median.py

median     : 3.50
low        : 2.00
high       : 5.00

中位数计算的第四个版本, median_grouped(),将输入视为连续数据,并通过优先使用提供的间隔宽度找到中值范围,然后使用落在该范围内的数据集中的实际值的位置在该范围内插值来计算 50% 百分位中值。

statistics_median_grouped.py

代码语言:javascript
复制
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)))

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

代码语言:javascript
复制
$ python3 statistics_median_grouped.py

1: 29.50
2: 29.00
3: 28.50

方差

统计使用两个值来表示一组值相对于均值的分散程度。方差是每个值与均值的差值的平方的平均值,标准差是方差的平方根(这是有用的,因为取平方根允许标准差表示在与输入数据相同的单位)。方差或标准差的较大值表示一组数据是分散的,而较小的值表示数据的分组更接近均值。

statistics_variance.py

代码语言:javascript
复制
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)))

Python 包括两组用于计算方差和标准差的函数,具体取决于数据集是代表整个总体还是代表总体样本。这个例子使用 wc 来计算所有示例程序的输入文件中的行数,然后使用 pvariance()pstdev() 计算整个总体的方差和标准差,然后再使用 variance()stddev() 用于计算通过使用找到的每个第二个文件的长度创建的子集的样本方差和标准差。

代码语言:javascript
复制
$ python3 statistics_variance.py

Basic statistics:
  count     : 1282
  min       :   4.00
  max       : 228.00
  mean      :  27.78

Population variance:
  pstdev    :  17.86
  pvariance : 318.84

Estimated variance for sample:
  count     : 641
  stdev     :  16.94
  variance  : 286.90
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python 知识大全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 平均值
  • 方差
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档