在数据分析中,均值、加权均值、标准差和变异系数是常用的统计指标。本文将通过两个实际案例,带你学习如何使用 NumPy 库快速计算这些指标。
案例一:成绩的均值与加权均值计算
在学生成绩分析中,普通均值和加权均值能从不同角度反映学生的整体水平。下面以小明和小刚的三门课程成绩为例,演示具体计算过程。
1. 数据准备与普通均值计算
首先,我们用 NumPy 数组存储两人的成绩,然后通过np.average()函数计算普通均值(即未加权均值)。
python
import numpy as np
# 存储小明和小刚的三门课程成绩 xiaoming = np.array([80,90,95])
xiaogang = np.array([95 ,90,80])
# 计算并打印普通均值
print('没有加权的情况下小明的平均分是',np.average(xiaoming))
print('没有加权的情况下小刚的平均分是',np.average(xiaogang))
运行结果显示,两人的普通均值均为 88.33333333333333,仅从普通均值无法区分两人成绩的差异。
2. 加权均值计算
实际教学中,不同课程的重要性可能不同,此时需要计算加权均值。假设三门课程的权重分别为 0.2、0.3、0.5,通过np.average()的weights参数传入权重数组即可计算。
python
# 定义权重数组
quanzhong = np.array([0.2,0.3,0.5])
# 计算并打印加权均值
print('加权情况下小明的平均分是',np.average(xiaoming, weights = quanzhong))
print('加权情况下小刚的平均分是',np.average(xiaogang, weights = quanzhong))
运行结果显示,小明的加权均值为 90.5,小刚的加权均值为 86.0。此时能清晰看出,由于权重较大的课程成绩不同,两人的整体水平出现了明显差异。
案例二:多维度数据的均值、标准差与变异系数计算
在实际业务中,常需要对多列数据进行统计分析。下面以一个 7 行 4 列的多维度数据为例,计算每一列的均值、标准差和变异系数。
1. 数据准备与均值计算
先用 NumPy 数组存储多维度数据,再通过np.mean()函数,指定axis=0(按列计算),得到每一列的均值。
python
# 存储7年的4个维度统计数据
stat_info = np.array([ [110.93, 16.46, 0.2376, 0.0573],
[-0.13, 31.01, 0.1188, 0.0836],
[8.94, 26.67, 0.0565, 0.0676],
[17.24, 19.53, 0.1512, 0.0433],
[43.86, -10.14, 0.097, 0.0421],
[-15.34, -13.04, 0.0902, 0.0732],
[-20.82, -23.37, 0.0582, 0.1091] ])
# 计算每一列的均值并打印
ave=np.mean(stat_info,axis=0)
print(ave)
运行结果为[20.66857143 6.73142857 0.11564286 0.06802857],分别对应 4 个维度数据的 7 年均值。
2. 标准差计算
标准差能反映数据的离散程度,通过np.std()函数,同样指定axis=0,可计算每一列的标准差。
python
# 计算每一列的标准差并打印
std=np.std(stat_info,axis=0)
print(std)
运行结果为[4.18923479e+01 2.00965338e+01 5.84811046e-02 2.18930983e-02],离散程度的大小可通过数值直观判断。
3. 变异系数计算
变异系数是标准差与均值的比值,能消除量纲影响,用于比较不同维度数据的离散程度。只需将标准差除以均值即可得到。
python
# 计算每一列的变异系数并打印
cv=np.std(stat_info,axis=0)/np.mean(stat_info,axis=0)
print(cv)
运行结果为[2.02686228 2.98547828 0.50570442 0.32182211],数值越大,说明该维度数据的离散程度相对越高。