Как я вычисляю процентили с python/numpy?

Существует ли удобный способ вычислить процентили для последовательности или одно-мерного массива numpy?

Я ищу что-то подобное функции процентили Excel.

Я смотрел в ссылке статистики NumPy и не мог найти это. Все, что я мог найти, является медианой (50-я процентиль), но не что-то более определенное.

192
задан kmario23 27 April 2019 в 12:20
поделиться

2 ответа

Возможно, вас заинтересует пакет SciPy Stats . Он имеет процентильную функцию , которую вы ищете, и многие другие статистические полезности.

процентиль () также доступен в numpy .

import numpy as np
a = np.array([1,2,3,4,5])
p = np.percentile(a, 50) # return 50th percentile, e.g median.
print p
3.0

Этот билет наводит меня на мысль, что в ближайшее время они не будут интегрировать percentile () в numpy.

253
ответ дан 23 November 2019 в 05:31
поделиться

Кстати, есть реализация процентильной функции на чистом Python , на случай, если кто-то не хочет зависеть от scipy. Функция скопирована ниже:

## {{{ 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/ }}}
68
ответ дан 23 November 2019 в 05:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: