p分位函数(四分位数)概念与pandas中的quantile函数
p分位函数(四分位数)概念与pandas中的quantile函数
函数原型
DataFrame.quantile(q=0.5, axis=0, numeric_only=True, interpolation=’linear’)
参数
- q : float or array-like, default 0.5 (50% quantile 即中位数-第2四分位数)
0 <= q <= 1, the quantile(s) to compute
- axis : {0, 1, ‘index’, ‘columns’} (default 0)
0 or ‘index’ for row-wise, 1 or ‘columns’ for column-wise
- interpolation(插值方法) : {‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}
当选中的分为点位于两个数数据点 i and j 之间时:
linear: i + (j - i) * fraction, fraction由计算得到的pos的小数部分(可以通过下面一个例子来理解这个fraction);
lower: i.
higher: j.
nearest: i or j whichever is nearest.
midpoint: (i + j) / 2.
统计学上的四分为函数
原则上p是可以取0到1之间的任意值的。但是有一个四分位数是p分位数中较为有名的。
所谓四分位数;即把数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数。
- 第1四分位数 (Q1),又称“较小四分位数”,等于该样本中所有数值由小到大排列后第25%的数字。
- 第2四分位数 (Q2),又称“中位数”,等于该样本中所有数值由小到大排列后第50%的数字。
- 第3四分位数 (Q3),又称“较大四分位数”,等于该样本中所有数值由小到大排列后第75%的数字。
第3四分位数与第1四分位数的差距又称四分位距(InterQuartile Range,IQR)
计算方法与举例
为了更一般化,在计算的过程中,我们考虑p分位。当p=0.25 0.5 0.75 时,就是在计算四分位数。
首先确定p分位数的位置(有两种方法):
方法1 pos = (n+1)*p
方法2 pos = 1+(n-1)*p
pandas 中使用的是方法2确定的。
给定测试数据:
a b
0 1 1
1 2 10
2 3 100
3 4 100
计算
df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=['a', 'b'])
print(df.quantile(.1))
结果是:
a 1.3
b 3.7
Name: 0.1, dtype: float64
默认使用的是linear 插值
计算a列
pos = 1 + (4 - 1)*0.1 = 1.3
fraction = 0.3
ret = 1 + (2 - 1) * 0.3 = 1.3
计算b列
pos = 1.3
ret = 1 + (10 - 1) * 0.3 = 3.7
来源:https://blog.csdn.net/u011327333/article/details/71263081?locationNum=14&fps=1