np.percentile, похоже, не дает правильного вывода - PullRequest
0 голосов
/ 21 января 2019

У меня есть список ниже.

33, 26, 24, 21, 19, 20, 18, 18, 52, 56, 27, 22, 18, 49, 22, 20, 23, 32, 20, 18

Все, что я пытаюсь - это найти 25-й процентиль.

Я использовал простую программу, чтобы найти ее.

import numpy as np
arr = [33, 26, 24, 21, 19, 20, 18, 18, 52, 56, 27, 22, 18, 49, 22, 20, 23, 32, 20, 18]
np.percentile(arr,25)

Вывод: 19,75

Но если мы считаем вручную или используем Excel, 25-й процентиль получается как 19,25.

enter image description here

Я ожидаю, что результат будет 19,25, но фактический результат от Numpy будет 19,75.Может кто-нибудь помочь, пожалуйста, что здесь не так?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

Видите ли, в Excel есть две процентильные функции: PERCENTILE.EXC и PERCENTILE.INC, и разница в " * * функции Percentile.Inc, значение k находится в диапазоне от 0 до 1 включительно, и вPercentile.Exc "( source )

percentile Функция Numpy's * вычисляет k-й процентиль гдеk должно быть от 0 до 100 включительно ( документы )

Давайте проверим это.

Difference beetwen INC and EXC excel's PERCENTILE functions

arr = [18, 18, 18, 18, 19, 20, 20, 20, 21, 22, 22, 23, 24, 26, 27, 32, 33, 49, 52, 56]
np.percentile(arr,25)

19,75

Надеюсь, что поможет

0 голосов
/ 21 января 2019

Проверьте свои входные значения и посмотрите, что использует excel, так как эти опции в numpy

t = ['linear', 'lower', 'higher', 'nearest', 'midpoint']    
arr = np.array([33, 26, 24, 21, 19, 20, 18, 18, 52, 56, 27, 22, 18, 49, 22, 20, 23, 32, 20, 18])
    for cnt, i in enumerate(t):
        v = np.percentile(arr, 25., interpolation=i)
        print("type: {} value: {}".format(i, v))

    type: linear value: 19.75
    type: lower value: 19
    type: higher value: 20
    type: nearest value: 20
    type: midpoint value: 19.5
...