Python/Pandas&Numpy

pandas Tricks_08👉🏻 'missing values - dropna() & isna() (advanced)' (Kevin by DataSchool)

metamong 2022. 4. 9.

* handling missing values는 preprocessing 단계의 일부로 하단 포스팅에서 일부 배웠다 ↓↓↓↓

 

- dropna, isnull, fillna - 

 

 

Data Preprocessing

* concepts🤲 ⊙ Although EDA and Data Preprocessing are two distinct terms, they involve many overlapping subtasks. At times, they are even used interchangeably ⊙ → 즉! 모아진 raw data를 data..

sh-avid-learner.tistory.com

 

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


댓글