mysql求分位数_分位函数(四分位数)概念与pandas中的quantile函数

本文介绍了pandas中DataFrame.quantile()函数的使用,包括参数解释、四分位数概念、插值方法以及计算示例。通过示例展示了如何计算分位数,并解释了在数据点之间插值的线性、下限、上限、中点和最近邻方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数原型

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.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

统计学上的四分为函数

原则上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

1

2

3

4

5

计算

df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=['a', 'b'])

print(df.quantile(.1))

1

2

结果是:

a 1.3

b 3.7

Name: 0.1, dtype: float64

1

2

3

默认使用的是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

在b中,假如pos等于2.5呢,即在2-3之间,那i对应就是10,j对应就是100,ret = 10 + (100-10) * 0.3 = 55

“分为点p位于两个数数据点 i and j 之间时”,比如 y= [1,10,100,100],x= [0,1,2,3],对应于[0,0.333,0.667,1],当p=0.4时,i、j分别为10、100,因此,pos = 1 + (4-1)*0.4=2.2,pos取小数部分即0.2,也即fraction=0.2(fraction由计算得到的pos的小数部分),,,故值为10+(100-10)* 0.2=28 。 验证: df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),columns=['a', 'b']) print df.quantile([0.1,0.2,0.4,0.5, 0.75])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值