Numpy 什么是np.quantile和np.percentile
在numpy库中,np.quantile和np.percentile是两个用于计算数组分位数的函数。
numpy.percentile函数计算数组的百分位数,也就是统计数据中排在某个百分比位置上的数值。例如,如果要计算一个数组中的75%分位数,可以使用np.percentile(arr, 75)。
而np.quantile函数则是计算数组的分位数,也就是将数组按照顺序分成若干部分,其中每一部分的数值都落在一定的范围内。例如,如果要计算一个数组中的75%分位数,可以使用np.quantile(arr, 0.75)。
可以看到,这两个函数的计算结果相同,只是输入参数有所不同。np.percentile使用的是百分比作为参数,而np.quantile使用的是分位数作为参数。
阅读更多:Numpy 教程
np.quantile和np.percentile有什么用处?
在数据分析和统计学中,常常需要统计某个数据集的分布情况,包括均值、标准差、中位数、分位数等。其中分位数尤为重要,它可以表示数据分布的不同部分之间的位置关系。
比如,一个数组的25%分位数是5,75%分位数是10。这说明该数组中有25%的数值小于5,75%的数值小于10。根据分位数的特点,我们可以得到一些有用的信息:
- 中位数是50%分位数,可以表示数据的中心位置。
- 1/4位数是25%分位数,可以表示数据的下四分位数。
- 3/4位数是75%分位数,可以表示数据的上四分位数。
- 最大值是100%分位数,最小值是0%分位数。
通过计算分位数,可以更加深入地了解数据的分布情况,从而作出更加准确的统计分析和预测。
np.quantile和np.percentile的区别
虽然np.quantile和np.percentile可以实现同样的功能,但是它们的输入参数不同,具体表现在:
- np.percentile可以使用单个整数或整个列表/数组来计算百分位数,例如np.percentile(a, q=50)、np.percentile(a, q=[25, 50, 75])。
- np.quantile则只能输入单个数值,且必须在0到1之间,例如np.quantile(a, q=0.5),代表的是中位数。
同时,两者在实现时的算法也不同,np.percentile直接使用排序算法,而np.quantile则需要先对数组进行排序,再计算分位数。
np.quantile和np.percentile的使用示例
下面通过一些实例来说明np.quantile和np.percentile的使用方法和效果。
假设有一个数组a,包含10个正整数,可以使用以下代码生成:
import numpy as np
a = np.array([1, 2, 4, 5, 7, 8, 8, 8, 10, 15])
现在我们来计算这个数组的一些分位数和百分位数。
计算中位数
中位数可以通过np.quantile和np.percentile两个函数来计算,代码如下:
median1 = np.quantile(a, 0.5)
median2 = np.percentile(a, 50)
print("中位数分别为{},{}".format(median1, median2))
结果为:
中位数分别为7.5,7.5
可以看到,两个函数计算出的中位数相同。
计算四分位数
四分位数可以使用np.quantile函数来计算,代码如下:
q1 = np.quantile(a, 0.25)
q3 = np.quantile(a, 0.75)
print("下四分位数为{}, 上四分位数为{}".format(q1, q3))
结果为:
下四分位数为3.25, 上四分位数为8.5
计算90%分位数和99%分位数
可以使用np.percentile函数来计算90%分位数和99%分位数,代码如下:
p90 = np.percentile(a, 90)
p99 = np.percentile(a, 99)
print("90%分位数为{}, 99%分位数为{}".format(p90, p99))
结果为:
90%分位数为12.2, 99%分位数为14.71
计算多个百分位数
可以使用np.percentile函数来计算多个百分位数,代码如下:
p25, p50, p75 = np.percentile(a, [25, 50, 75])
print("25%分位数为{}, 中位数为{}, 75%分位数为{}".format(p25, p50, p75))
结果为:
25%分位数为3.25, 中位数为7.5, 75%分位数为8.5
总结
总体来看,numpy库中的np.quantile和np.percentile函数在数据分析中具有重要作用,可以用于计算数组的分位数和百分位数,从而更加深入的了解数据的分布情况。其中,np.percentile以百分比作为参数,np.quantile以分位数作为参数,两者算法不同,但都能计算出相同的结果。在使用时,可以根据需要选择使用哪个函数,以达到最佳效果。