目录:
statistics 模块在 Python3.4 引入,用于基础统计计算,提供图形计算器和科学计算器级别的统计功能,对于计算平均值、中位数、方差等常见统计指标来说。简单易用。
import statistics as stats
data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.mean(data)) # 输出: 5
总是返回浮点数。
import statistics as stats
data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.fmean(data)) # 输出: 5.0
中位数,又称中值,是指将一组数据按大小顺序排列后,位于中间位置的数值;
如果数据个数 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() 在数据排序后,对于奇数个数据点,它返回正中间的值;对于偶数个数据点,它返回中间两个值中较大的那个,保证返回值是数据集的一个成员。
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
众数是指在一组数据中出现次数最多(频率最高)的数值。它代表了数据中最普遍、最常见的水平。
当数据集中存在唯一一个最高频值时,返回该值;当存在多个并列的最高频值,返回最先遇到的那个众数值。
import statistics as stats
data = [2, 5, 7, 3, 5, 8, 4, 6]
print(stats.mode(data)) # 输出: 5 (出现两次)
无论数据集中有一个还是多个并列的最高频值,它都会返回一个包含所有最高频值的列表。
import statistics as stats
data = [1, 2, 3, 4, 3, 2]
print(stats.mode(data)) # 输出: 2
print(stats.multimode(data)) # 输出: [2, 3]
方差是衡量一组数据离散程度(即波动性)的核心统计量。
其定义为各数据点与其均值(平均数)之差的平方和的平均值。
方差越大,表明数据分布越分散,波动越大;方差越小,则数据越集中,波动越小。
当数据代表研究对象的全部个体(即总体)时使用,得到的是总体方差。
当数据只是从总体中抽取的一部分(即样本)时使用,得到的是样本方差。
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
标准差是方差的算术平方根。
标准差将离散程度的度量单位还原到与原数据相同的量纲,在实际应用中比方差更为直观。
标准差越大,表明数据分布越分散,波动越大;标准差越小,则数据越集中,波动越小。
例如,在金融领域,标准差直接代表了资产回报的波动风险。
当数据代表研究对象的全部个体(即总体)时使用,得到的是总体标准差。
当数据只是从总体中抽取的一部分(即样本)时使用,得到的是样本标准差。
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
↶ 返回首页 ↶