공부/에러해결
기타 - np.percentile의 결과가 nan으로 나오는 경우 해결 방법
정호랭이
2023. 11. 28. 23:08
문제상황
- IQR을 이용한 데이터의 이상치 제거를 위해, np.percentile() 함수를 이용한 Q1, Q3값 획득 시도
- Q1, Q3의 값이 nan(not a number, 결측치)로 반환되어 이상치 제거가 안됨
원인
- np.percentile(데이터, 백분위수) 함수의 경우 입력된 데이터의 값을 정렬한 뒤, 원하는 백분위수의 값을 return
- nan(결측치)의 경우 크기에 대한 정의가 없다. -> 결측치가 포함된 값을 정렬할 수 없다. -> 백분위수 계산 불가
해결방법
- .fillna() 또는 .dropna() 로 결측치 처리 후, np.percentile 실시
- fillna - 결측치 0으로 대체
- fillna - 결측치 4로 대체
- dropna - 결측치 제거
- fillna - 결측치 0으로 대체
- np.nanpercentile 함수 사용 (dropna + percentile과 같은 값 출력)
주의사항
위 예시들에서 보는 것과 같이 해결방법에 따라 백분위수 값이 달라지므로, 본인의 데이터와 상황에 맞는 적절한 방법을 사용하여 문제 해결