首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用python/numpy计算百分位数?

如何使用python/numpy计算百分位数?
EN

Stack Overflow用户
提问于 2010-03-04 04:21:13
回答 9查看 366.6K关注 0票数 259

有没有一种方便的方法来计算序列或一维numpy数组的百分位数?

我正在寻找类似于Excel的百分位函数的东西。

我查看了NumPy的统计资料,但找不到这个。我能找到的是中位数(50%),但不是更具体的东西。

EN

回答 9

Stack Overflow用户

发布于 2010-05-02 19:46:20

顺便说一句,这里有a pure-Python implementation of percentile function,以防有人不想依赖scipy。该函数复制如下:

代码语言:javascript
复制
## {{{ http://code.activestate.com/recipes/511478/ (r1)
import math
import functools

def percentile(N, percent, key=lambda x:x):
    """
    Find the percentile of a list of values.

    @parameter N - is a list of values. Note N MUST BE already sorted.
    @parameter percent - a float value from 0.0 to 1.0.
    @parameter key - optional key function to compute value from each element of N.

    @return - the percentile of the values
    """
    if not N:
        return None
    k = (len(N)-1) * percent
    f = math.floor(k)
    c = math.ceil(k)
    if f == c:
        return key(N[int(k)])
    d0 = key(N[int(f)]) * (c-k)
    d1 = key(N[int(c)]) * (k-f)
    return d0+d1

# median is 50th percentile.
median = functools.partial(percentile, percent=0.5)
## end of http://code.activestate.com/recipes/511478/ }}}
票数 81
EN

Stack Overflow用户

发布于 2013-06-12 15:45:25

代码语言:javascript
复制
import numpy as np
a = [154, 400, 1124, 82, 94, 108]
print np.percentile(a,95) # gives the 95th percentile
票数 34
EN

Stack Overflow用户

发布于 2013-03-24 00:35:03

下面是如何在不使用numpy的情况下使用python来计算百分位数。

代码语言:javascript
复制
import math

def percentile(data, perc: int):
    size = len(data)
    return sorted(data)[int(math.ceil((size * perc) / 100)) - 1]

percentile([10.0, 9.0, 8.0, 7.0, 6.0, 5.0, 4.0, 3.0, 2.0, 1.0], 90)
# 9.0
percentile([142, 232, 290, 120, 274, 123, 146, 113, 272, 119, 124, 277, 207], 50)
# 146
票数 26
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2374640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档