近期在编写python代码的时候遇到了python的numpy包中的quantitle()方法,产生了困惑,没有明白其得到的是什么,查阅之后发现,其实意思是分为数的意思,里面的参数q如果传入的是一个值就是求一个分位数,如果是一个list就是分别求不同的分位数,那么?

如何通俗地理解分位数?

直观来看,分位数就是用概率作为依据将一批数据分开的那个点。注意选取的是值而不是索引,这在python数据操作中着重注意一下

一、数据

分位数是数据分析中常用的一个统计量,经过抽样得到一个样本值,以考核分数为例:

60,70,87,56,35,64,28,84,89,65.

二、p分位数

如果想在这10位员工中淘汰至少35%,同时让至少65%的员工留存下来,如何考虑?

最简单的想法就是找一个数,小于等于这个数的员工至少有35%,大于等于这个数的员工至少有65%, 我们就把这个数记为0.35分位点,记为x_0.35 ,见下图:

我们可以看到因为35%在10个员工中计算得到的是3.5也就是必然要求我们去近似,默认求上界,然后剩余的65%占多少比例用前面的求上界后的个数和总数做减法即可,也就是只能分出来40%和60%的水平,这个时候发现60刚好满足条件,注意小于等于和大于等于都是包含60的。

上面是直观的通过观察就可以得到的,如果要想通过计算找到这个数,需要将数据排序:

28, 35, 56, 60,64, 65, 70, 84, 87, 89

排序后上面十个数分别记为x(1)到x(10).

至少有35%,即至少有10*35%=3.5个员工,取上界4,所以x_0.35 ≥60=x(4); 0.35分位数应该是大于等于60

至少有65%,即至少有10*65%=6.5个学生,取下界6,所以x_0.35≤60=x(4); 0.35分位数应该是小于等于60

故二者取交集,令x_0.35 =60.

以上是np不为整数的情况,如果np为整数,不妨设p=0.3

至少有30%,即至少有10*30%=3个员工,所以x_0.3 ≥56=x(3);

至少有70%,即至少有10*70%=7个员工,所以x_0.3≤60=x(4);

二者取交集,有两个值,一个是56,一个是60,如何选取?就取二者的平均值:

x_0.3=(56+60)/2=58.

三、小结

通过以上讨论,我们做如下总结:

 

借鉴了:https://www.zhihu.com/question/67763556/answer/394626078

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐