백분위수(percentile)는 통계학에서 특정 점수가 동일한 데이터 집합에 속한 다른 점수들과 비교했을 때 어느 상대적 위치에 있는지를 나타내는 지표입니다. 예를 들어, 90번째 백분위수에 해당하는 값은 전체 데이터 중 90%가 그 값보다 작거나 같다는 의미를 가집니다.
이 글에서는 Python의 Pandas 라이브러리를 사용하여 시리즈(Series)의 n번째 백분위수를 구하는 방법을 단계별로 살펴보겠습니다.
알고리즘
1단계: Pandas 시리즈를 정의합니다. 2단계: 구하고자 하는 백분위수 값을 입력받습니다. 3단계: quantile() 함수로 백분위수를 계산합니다. 4단계: 계산된 백분위수를 출력합니다.
예제 코드
import pandas as pd
series = pd.Series([10,20,30,40,50])
print("Series:\n", series)
n = int(input("Enter the percentile you want to calculate: "))
n = n/100
percentile = series.quantile(n)
print("The {} percentile of the given series is: {}".format(n*100, percentile))실행 결과
Series: 0 10 1 20 2 30 3 40 4 50 dtype: int64 Enter the percentile you want to calculate: 50 The 50.0 percentile of the given series is: 30.0
코드 설명
Pandas의 quantile() 함수는 매개변수로 0부터 1 사이의 값만 받습니다. 따라서 사용자가 입력한 백분위수 값(예: 50)을 그대로 전달하면 오류가 발생할 수 있으므로, 반드시 100으로 나누어 소수 형태(예: 0.5)로 변환한 뒤 함수에 전달해야 합니다.
위 예제에서는 [10, 20, 30, 40, 50]으로 구성된 시리즈의 50번째 백분위수(즉, 중앙값)를 구했으며, 결과로 30.0이 출력되었습니다.
추가 팁: 보간(interpolation) 옵션 활용하기
quantile() 함수는 기본적으로 선형 보간(linear interpolation) 방식을 사용하지만, 필요에 따라 interpolation 매개변수를 활용해 계산 방식을 변경할 수 있습니다.
# 'lower', 'higher', 'midpoint', 'nearest' 등의 옵션 사용 가능 percentile = series.quantile(0.5, interpolation='lower')
이처럼 Pandas의 quantile() 함수를 사용하면 복잡한 통계 계산 없이도 간단하게 원하는 백분위수를 손쉽게 구할 수 있습니다.