* handling missing values는 preprocessing 단계의 일부로 하단 포스팅에서 일부 배웠다 ↓↓↓↓
- dropna, isnull, fillna -
Q) NaN 값이 몇%의 값으로 있는 지, NaN이 몇 % 이상 있는 비율 column만 선택해서 제거가 가능한지?
A) 가능 - isna().mean()으로 column별 NaN 비율을 확인할 수 있고, dropna thresh parameter로 일정 column만 제거 가능
*isna() docu*
🤟 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.isna.html 🤟
*dropna() docu*
🖐 https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.dropna.html 🖐
* seaborn 내장 dataset 'tips'
1> isna().sum()으로 각 column별 NaN 값 개수를 파악 가능
planets.isna().sum()
'''
method 0
number 0
orbital_period 43
mass 522
distance 227
year 0
dtype: int64
'''
2> isna().mean()으로 각 column별 NaN 값 비율을 파악 가능 (사실 sum()보다 더 유용함!)
→ mass 칼럼에서 절반 이상이 NaN값임을 알 수 있고, distance 칼럼에서 약 20% 정도가 NaN값이다!
planets.isna().mean()
'''
method 0.000000
number 0.000000
orbital_period 0.041546
mass 0.504348
distance 0.219324
year 0.000000
dtype: float64
'''
3> axis=1값으로 NaN값이 들어있는(들어있기만 하면) column을 모두! 삭제한다 (default는 0인 row)
planets.dropna(axis='columns')
4> 여기서 NaN값이 일정 비율 이상인 column만 선택적으로 삭제하고 싶으면 thresh 인자 사용!
"thresh int, optional - Require that many non-NA values."
ex> 50% 이상의 NaN 비율이 있는 column만 삭제 - 즉 mass column만 삭제
planets.dropna(thresh=len(planets)*0.5, axis='columns').head()
- mass column deleted -
- missing values handling 미션 끝! -
* 출처) https://youtu.be/RlIiVeig3hc
댓글