数据分析师一定要掌握的基础——描述性统计分析
2020-06-28 10:17:12 来源:易采站长站 作者:易采站长站整理
如果n-1不能被4整除又该怎么办呢?
假设有这么一组数据:
n=6,四分位处的值会得出一个小数,这时候我们就不能用索引的方式直接计算。
Q1结果等于5 * 1/4 = 1.25,1.25是介于1和2之间

但更接近于索引1,也就离12这个数更近,说明12这个数的权重更高。
怎么计算权重呢?用1减去小数部分,就是左边的权重,小数部分本身就是右边的权重。
用1-0.25=0.75,0.75就是12的权重,那么13的权重就是0.25。
当我们得到权重之后,怎么计算四分位数呢,例如计算1/4(Q1):
Q1=12 * 0.75+13 * 0.25,结果就是1/4位数。
剩下Q2、Q3是类似的方法计算即可。
index为整数的情况
我们首先来计算四分位的位置:
x = np.arange(10, 19) #9个数
n = len(x)
# 计算四分位的索引(index)。
q1_index = (n - 1) * 0.25
q2_index = (n - 1) * 0.5
q3_index = (n - 1) * 0.75
print(q1_index, q2_index, q3_index)
结果:2.0 4.0 6.0
拿着2.0 4.0 6.0的索引值去找对应的四分位值即可。但是因为索引值没有小数,需要把0去掉转为整数类型:
# 将index转换成整数类型。
index = np.array([q1_index, q2_index, q3_index]).astype(np.int32)
print(x[index])
结果:[12 14 16],即1/4位,中位,3/4位数。
可视化呈现:
plt.figure(figsize=(15, 4))
plt.xticks(x)
plt.plot(x, np.zeros(len(x)), ls="", marker="D", ms=15, label="元素值")
plt.plot(x[index], np.zeros(len(index)), ls="", marker="X", ms=15, label="四分位值")
plt.legend()

index不是整数的情况
当index不是整数时,我们使用最近位置的两个整数,加权计算来得到四分位的位置。每个整数的权重为距离的反比。
x = np.arange(10, 20)
n = len(x)
q1_index = (n - 1) * 0.25
q2_index = (n - 1) * 0.5
q3_index = (n - 1) * 0.75
print(q1_index, q2_index, q3_index)
结果:2.25 4.5 6.75
可以看到计算结果不是整数
我们使用该值临近的两个整数来计算四分位值。
index = np.array([q1_index, q2_index, q3_index])
暂时禁止评论













闽公网安备 35020302000061号