공부/에러해결

기타 - np.percentile의 결과가 nan으로 나오는 경우 해결 방법

정호랭이 2023. 11. 28. 23:08

문제상황

  • IQR을 이용한 데이터의 이상치 제거를 위해, np.percentile() 함수를 이용한 Q1, Q3값 획득 시도
  • Q1, Q3의 값이 nan(not a number, 결측치)로 반환되어 이상치 제거가 안됨

원인

  • np.percentile(데이터, 백분위수) 함수의 경우 입력된 데이터의 값을 정렬한 뒤, 원하는 백분위수의 값을 return
  • nan(결측치)의 경우 크기에 대한 정의가 없다. -> 결측치가 포함된 값을 정렬할 수 없다. -> 백분위수 계산 불가  

해결방법

  1. .fillna() 또는 .dropna() 로 결측치 처리 후, np.percentile 실시
    • fillna - 결측치 0으로 대체
    • fillna - 결측치 4로 대체
       
    • dropna - 결측치 제거
  2. np.nanpercentile 함수 사용 (dropna + percentile과 같은 값 출력)

주의사항

위 예시들에서 보는 것과 같이 해결방법에 따라 백분위수 값이 달라지므로, 본인의 데이터와 상황에 맞는 적절한 방법을 사용하여 문제 해결