Python中numpy的 np.percentile 百分位函数详解

1、什么是百分位

        百分位,人体测量用语,确定人体尺寸分布值的方法。

        百分位表示具有某一人体尺寸和小于该尺寸的人占统计对象总人数的百分比。以第5百分位、人体身高尺寸为例,表示有5%的人身高等于或小于该尺寸。

        由于人的人体尺寸有很大的变化,它不是某一确定的数值,而是分布于一定的范围内。如亚洲人的身高是151~188厘米这个范围,而我们设计时只能用一个确定的数值,而且并不能象我们一般理解的那样用平均值。确定要使用那一数值就是百分位的方法要解决的问题。

2、具体应用

        大部分的人体测量数据是按百分位表达的,把研究对象分成一百份,根据一些指定的人体尺寸项目(如身高),从最小到最大顺序排列,进行分段,每一段的截至点即为一个百分位。例如我们若以身高为例:第5百分位的尺寸表示有5%的人身高等于或小于这个尺寸。换句话说就是有95%的人身高高于这个尺寸。第95百分位则表示有95%的人等于或小于这个尺寸,5%的人具有更高的身高。第50百分位为中点,表示把一组数据平分成两组,较大的50%较小的50%。第50百分位的数值可以说接近平均值,但决不能理解为有”平均人”这样的尺寸。

        统计学表明,任意一组特定对象的人体尺寸,其分布规律符合正态分布的规律,即大部分属于中间值,只有一小部分属于过大和过小的值,它们分布在范围的两端,设第5百分位和第95百分位,第5百分位表示身材较小的,有5%的人低此尺寸;第95百分位表示高,即有5%的人高于此值。在设计上满足所有人的要求是不可能的,但必须满足大多数人。所以必须从中间部分取用能够满足大多数人的尺寸数据作为依据,因此一般都是舍去两头,只涉及中间90%、95%或99%的大多数人,只排除少数人。应该排除多少取决于排除的后果情况和经济效果。

3、如何在 Python 中计算百分位数

        百分位数是统计学中常用的一种指标,用于度量数据分布的集中程度。

        1、统计学术语,如果将一组数据从小到大排序,并计算相应的累计百分位,则某一百分位所对应数据的值就称为这一百分位的百分位数。可表示为:一组n个观测值按数值大小排列。如,处于p%位置的值称第p百分位数。

        2、百分位通常用第几百分位来表示,如第五百分位,它表示在所有测量数据中,测量值的累计频次达5%。以身高为例,身高分布的第五百分位表示有5%的人的身高小于此测量值,95%的身高大于此测量值。

        在 Python 中,可以使用 numpy  库来计算百分位数。

4、函数说明

np.percentile(a, q, axis=None, out=None, overwrite_input=False, interpolation='linear', keepdims=False)
 
a : array,用来算分位数的对象,可以是多维的数组
q : 介于0-100的float,用来计算是几分位的参数,如四分之一位就是25,如要算两个位置的数就(25,75)
axis : 坐标轴的方向,一维的就不用考虑了,多维的就用这个调整计算的维度方向,取值范围0/1
out : 输出数据的存放对象,参数要与预期输出有相同的形状和缓冲区长度
overwrite_input : bool,默认False,为True时及计算直接在数组内存计算,计算后原数组无法保存
interpolation : 取值范围{'linear', 'lower', 'higher', 'midpoint', 'nearest'}
            默认liner,比如取中位数,但是中位数有两个数字6和7,选不同参数来调整输出
keepdims : bool,默认False,为真时取中位数的那个轴将保留在结果中

5、代码示例

import numpy as np

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
p = 50

result = np.percentile(data, p)

print("第", p, "个百分位数是", result)

        在上面的代码中,我们使用了 numpy 库的 percentile 函数来计算数据集 data 的第 50 个百分位数。输出结果为第 50 个百分位数是 5.5。

        除了计算单个百分位数,numpy 库还支持计算多个百分位数。以下是示例代码:

import numpy as np

data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
p = [25, 50, 75]

result = np.percentile(data, p)

print("第", p, "个百分位数分别是", result)

        在上面的代码中,我们使用了 numpy 库的 percentile 函数来计算数据集 data 的第 25、50、75 个百分位数。输出结果为第 [25, 50, 75] 个百分位数分别是 [3.25, 5.5, 7.75]。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年10月18日
下一篇 2023年10月18日

相关推荐