Python/Python numpy

Python numpy : percentile (백분위수), quantile (사분위수)

CosmosProject 2024. 3. 25. 23:04
728x90
반응형

 

 

 

numpy의 percentile() method는 어떠한 값들을 기준으로 백분위를 구하고

그 값들 사이에서의 백분위수를 return해주는 기능을 합니다.

 

(백분위에 대한 개념을 알고 싶으면 아래 글을 참조하면 좋습니다.)

https://cosmosproject.tistory.com/826

 

백분위(Percentile Rank), 백분위수(Percentile), 사분위수(Quartile) 알아보기

수학, 통계, 데이터 분석 등 다양한 곳에서 백분위라는 말이 쓰입니다. 수능 성적을 받아도 백분위라는 것이 있죠. 이 백분위라는 것이 무엇이고, 왜/어떻게 쓰이며, 어떻게 계산할 수 있는지 알

cosmosproject.tistory.com

 

 

 

Syntax

numpy.percentile(
    a=array,
    q=percentile_rank  # percentile rank (0 ~ 100)
)

 

- a

기준되는 값들이 담긴 array, list 형태의 데이터를 의미합니다.

 

- q

백분위 기준 몇%에 있는 백분위수를 추출할건지를 의미합니다.

0 이상 100 이하의 숫자이며 0은 0%를 100은 100%를 의미합니다.

 

 

 

 

import numpy as np

list_test = [
    10,
    20,
    30,
    40,
    50,
    60,
    70,
    80,
    90,
    100,
    110
]

print(np.percentile(a=list_test, q=50))


-- Result
60.0

 

10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110의 값들에 대해 (a=list_test)

백분위 50%(q=50) 위치에 있는 백분위수는 60입니다.

따라서 60이 return됩니다.

 

아래 표를 참고하면 됩니다.

 

 

 

 

import numpy as np

list_test = [
    10,
    20,
    30,
    40,
    50,
    60,
    70,
    80,
    90,
    100,
    110
]

print(np.percentile(a=list_test, q=15))


-- Result
25.0

 

10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110의 값들에 대해 (a=list_test)

백분위 15%(q=15) 위치에 있는 백분위수는 25입니다.

따라서 25가 return됩니다.

 

 

 

 

 

import numpy as np

list_test = [
    10,
    20,
    30,
    40,
    50,
    60,
    70,
    80,
    90,
    100,
    110
]


print('0사분위수 =', np.percentile(a=list_test, q=0))
print('1사분위수 =', np.percentile(a=list_test, q=25))
print('2사분위수 =', np.percentile(a=list_test, q=50))
print('3사분위수 =', np.percentile(a=list_test, q=75))
print('4사분위수 =', np.percentile(a=list_test, q=100))


-- Result
0사분위수 = 10.0
1사분위수 = 35.0
2사분위수 = 60.0
3사분위수 = 85.0
4사분위수 = 110.0

 

또한 q값을 조절하면 위처럼 0~4사분위수도 구할 수 있습니다.

 

 

 

Syntax

numpy.quantile(
    a=array,
    q=percentile_rank  # percentile rank (0 ~ 1)
)

 

quantile() method는 사분위수를 구해줍니다.

percentile() method와 상당히 비슷한 사용법과 기능을 가집니다.

단, 주의할 점은 q값이 0 이상 100 이하의 값이 아니라 0 이상 1 이하의 값을 받는다는 것입니다.

q = 0은 0%를 의미하고

q = 1은 100%를 의미합니다.

 

 

 

 

import numpy as np

list_test = [
    10,
    20,
    30,
    40,
    50,
    60,
    70,
    80,
    90,
    100,
    110
]


print('0사분위수 =', np.percentile(a=list_test, q=0))
print('1사분위수 =', np.percentile(a=list_test, q=25))
print('2사분위수 =', np.percentile(a=list_test, q=50))
print('3사분위수 =', np.percentile(a=list_test, q=75))
print('4사분위수 =', np.percentile(a=list_test, q=100))


print('0사분위수 =', np.quantile(a=list_test, q=0))
print('1사분위수 =', np.quantile(a=list_test, q=0.25))
print('2사분위수 =', np.quantile(a=list_test, q=0.5))
print('3사분위수 =', np.quantile(a=list_test, q=0.75))
print('4사분위수 =', np.quantile(a=list_test, q=1))



-- Result
0사분위수 = 10.0
1사분위수 = 35.0
2사분위수 = 60.0
3사분위수 = 85.0
4사분위수 = 110.0

0사분위수 = 10
1사분위수 = 35.0
2사분위수 = 60.0
3사분위수 = 85.0
4사분위수 = 110

 

위처럼 사분위수를 구할 수 있습니다.

 

 

 

 

import numpy as np

list_test = [
    10,
    20,
    30,
    40,
    50,
    60,
    70,
    80,
    90,
    100,
    110
]


print(np.quantile(a=list_test, q=0.1))
print(np.quantile(a=list_test, q=0.2))



-- Result
20.0
30.0

 

위처럼 quantile() method로도 q값을 조절하면 사분위수 뿐 아니라 다양한 백분위에 위치하는 값을 구할 수 있습니다.

 

 

 

 

 

728x90
반응형