【python 内置模块】statistics

2024-01-20 00:00:00

目录:

statistics 模块在 Python3.4 引入,用于基础统计计算,提供图形计算器和科学计算器级别的统计功能,对于计算平均值、中位数、方差等常见统计指标来说。简单易用。

mean(): 算术平均值

import statistics as stats

data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.mean(data)) # 输出: 5

fmean(): 浮点数平均值

总是返回浮点数。

import statistics as stats

data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.fmean(data)) # 输出: 5.0

median(): 中位数

中位数,又称中值,是指将一组数据按大小顺序排列后,位于中间位置的数值;
如果数据个数 N 为奇数,则中位数是排序后位于正中间的那个数,即第 (N+1)/2 个数;
如果数据个数 N 为偶数,则中位数是排序后中间两个数的算术平均值,即第 N/2 个数和第 (N/2)+1 个数的平均数。

import statistics as stats

data = [2, 5, 7, 3, 5, 8, 4, 6] 
# 按大小顺序排列后 [2,3,4,5,5,6,7,8]
print(stats.median(data)) # 输出: 5.0

median_low()/median_high(): 最小/最大中位数

对于中位数计算,当数据个数为偶数个时,中位数是排序后中间两个数的算术平均值,最终结果可能不是原数据集中的元素。

低中位数 median_low() 在数据排序后,对于奇数个数据点,它返回正中间的值;对于偶数个数据点,它返回中间两个值中较小的那个,保证返回值是数据集的一个成员。

高中位数 median_high() 在数据排序后,对于奇数个数据点,它返回正中间的值;对于偶数个数据点,它返回中间两个值中较大的那个,保证返回值是数据集的一个成员。

import statistics as stats

data = [2, 5, 7, 3, 1, 8, 4, 6]
# 排序后数据 [1, 2, 3, 4, 5, 6, 7, 8]
print(stats.median(data)) # 输出: 4.5
print(stats.median_low(data)) # 输出: 4
print(stats.median_high(data)) # 输出: 5

mode(): 众数

众数是指在一组数据中出现次数最多(频率最高)的数值。它代表了数据中最普遍、最常见的水平。

当数据集中存在唯一一个最高频值时,返回该值;当存在多个并列的最高频值,返回最先遇到的那个众数值。

import statistics as stats

data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.mode(data)) # 输出: 5 (出现两次)

multimode(): 多个众数

无论数据集中有一个还是多个并列的最高频值,它都会返回一个包含所有最高频值的列表。

import statistics as stats

data = [1, 2, 3, 4, 3, 2]
print(stats.mode(data)) # 输出: 2
print(stats.multimode(data)) # 输出: [2, 3]

variance()/pvariance(): 样本/总体方差

方差是衡量一组数据离散程度(即波动性)的核心统计量。
其定义为各数据点与其均值(平均数)之差的平方和的平均值。
方差越大,表明数据分布越分散,波动越大;方差越小,则数据越集中,波动越小。

当数据代表研究对象的全部个体(即总体)时使用,得到的是总体方差。
当数据只是从总体中抽取的一部分(即样本)时使用,得到的是样本方差。

from statistics import variance, pvariance

data = [1, 2, 3, 4, 5] # 数据波动小

# 计算方差
sample_var = variance(data)   # 样本方差
population_var = pvariance(data) # 总体方差
print(f"样本方差: {sample_var}")      # 输出: 2.5
print(f"总体方差: {population_var}")    # 输出: 2.0

data = [1, 3, 104, 315] # 数据波动大

# 计算方差
sample_var = variance(data)   # 样本方差
population_var = pvariance(data) # 总体方差
print(f"样本方差: {sample_var}")      # 输出: 21772.916666666668
print(f"总体方差: {population_var}")    # 输出: 16329.6875

stdev()/pstdev():样本/总体标准差

标准差是方差的算术平方根。
标准差将离散程度的度量单位还原到与原数据相同的量纲,在实际应用中比方差更为直观。
标准差越大,表明数据分布越分散,波动越大;标准差越小,则数据越集中,波动越小。
例如,在金融领域,标准差直接代表了资产回报的波动风险。

当数据代表研究对象的全部个体(即总体)时使用,得到的是总体标准差。
当数据只是从总体中抽取的一部分(即样本)时使用,得到的是样本标准差。

from statistics import stdev, pstdev

data = [1, 2, 3, 4, 5] # 数据波动小

# 计算标准差
sample_std = stdev(data)      # 样本标准差
population_std = pstdev(data)   # 总体标准差
print(f"样本标准差: {sample_std:.2f}")    # 输出: 1.58
print(f"总体标准差: {population_std:.2f}")  # 输出: 1.41

data = [1, 3, 104, 315] # 数据波动大

# 计算标准差
sample_std = stdev(data)      # 样本标准差
population_std = pstdev(data)   # 总体标准差
print(f"样本标准差: {sample_std:.2f}")    # 输出: 147.56
print(f"总体标准差: {population_std:.2f}")  # 输出: 127.79

返回首页

本文总阅读量  次
皖ICP备17026209号-3
总访问量: 
总访客量: