본문 바로가기
PROGRAMMING/Python

[PYTHON] 파이썬 np.percentile 백분위수 구하기

by HYUNHP 2021. 10. 15.
728x90
반응형

안녕하세요 파이썬과 관련하여 추가적으로 필요한 정보가 있으시면,

DATA101에서 확인 가능하십니다.

감사합니다.


안녕하세요, Hello

 

백분위수(Percentile)는 오름차순으로 정렬했을 때, 최소값 0부터 최대값 100까지 백분율로 특정 위치를 나타내는 값입니다. 예를 들어 데이터의 90%는 90번째에 위치하고, 데이터의 10%는 10번째에 위치합니다.

 

추가적으로, 사분위수(Quartile)는 데이터를 균등한 관찰값 수를 합계 100%를 25%, 50%, 75%, 100%로  4개의 그룹으로 나눈 값입니다. 제1 사분위수(또는 하위 사분위수) Q1은 0.25인 값으로 정의됩니다. 즉, 25번째 백분위수와 같습니다. 제3 사분위수(또는 상위 사분위수) Q3은 0.75입니다. 사분위수 범위 IQR(Inter Quartile Range)은 Q3-Q1으로 정의됩니다.

 


 

사용법은 numpy 내 percentile 함수를 호출해서 적용하면 됩니다.

 

import numpy as np
data = np.arange(1, 11) # [ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10]

np.percentile(data, [0, 25, 50, 75, 100])
# 결과: 1,  3,  5,  8, 10

 


또한, 사분위수가 아닌 값도 지정해서 활용할 수 있으며, 아래와 같이 dataframe 값을 수정해서 적용할 수 있습니다.

 

ulimit = np.percentile(merged.logerror.values, 99)
llimit = np.percentile(merged.logerror.values, 1)
merged['logerror'].iloc[merged['logerror']>ulimit] = ulimit
merged['logerror'].iloc[merged['logerror']<llimit] = llimit

fig, ax = plt.subplots()
fig.set_size_inches(20, 5)
sn.distplot(merged.logerror.values, bins = 50, kde=False, ax=ax)
ax.set(xlabel = 'logerror', ylabel = 'vif score', title='distribution of dependent variable')

 

cols = ["bathroomcnt","bedroomcnt","roomcnt","numberofstories","logerror","calculatedfinishedsquarefeet"]
mergedFiltered = merged[cols].dropna()
for col in cols:
    ulimit = np.percentile(mergedFiltered[col].values, 99.5)
    llimit = np.percentile(mergedFiltered[col].values, 0.5)
    mergedFiltered[col].iloc[mergedFiltered[col]>ulimit] = ulimit
    mergedFiltered[col].iloc[mergedFiltered[col]<llimit] = llimit

 

<참조: Zillow EDA On Missing Values (By Vivek), HYUNHP, used  Zillow Prize: Zillow’s Home Value Prediction (Zestimate) dataset>

 


■ 마무리

numpy 내 percentile 함수를 통해, 백분위수를 구하는 것을 살펴봤습니다.

감사합니다.

위 포스팅은 카카오 티스토리, 네이버 블로그에도 동일하게 업로드합니다.

반응형

댓글