[Python Pandas] 결측치를 제거하는 함수 dropna 이해하기

이번 포스팅에서는 데이터 분석 시 필수적으로 알아야 하는 Python Pandas 라이브러리의 함수 중 결측치를 제거하는 함수 dropna 에 대해서 알아 보겠습니다.

결측치를 제거하는 함수 dropna 구문

결측치를 제거하는 함수 dropna의 구문은 아래와 같고,


DataFrame.dropna(*axis=0
how=_NoDefault.no_default
thresh=_NoDefault.no_default
subset=None,
 inplace=False
ignore_index=False)


반환 값은 DataFrame 혹은 None입니다.


결측치를 제거하는 함수 dropna 인수

  • axis : 결측치가 포함된 행 혹은 열을 제거하기 위한 옵션입니다. 0 또는 ‘index’ , 1 또는 ‘columns’ 값을 가집니다.
    • 0 혹은 ‘index’ : 결측치가 포함된 행을 제거합니다.
    • 1 혹은 ‘columns’ : 결측치가 포함된 열을 제거합니다.
    • 기본값은 0 이고, 둘 중 하나의 값만 가질 수 있습니다.

  • how : 하나 이상의 결측치가 존재하거나 모든 값이 결측치인 경우 행 또는 열을 제거하기 위한 옵션입니다. ‘any’ 또는 ‘all’ 값을 가집니다.
    • ‘any’ : 결측치가 하나라도 존재하면 행이나 열을 삭제합니다.
    • ‘all’ : 모든 값이 결측치인 경우, 행이나 열을 삭제합니다.

  • thresh : 행이나 열을 유지하기 위한 최소한의 결측치가 아닌 값의 개수를 입력하는 옵션입니다. how와 결합하여 사용할 수 없습니다.

  • subset : 고려해야 할 다른 축의 라벨(예: 행을 삭제하는 경우, 결측치를 포함할 열을 리스트로 반영합니다)을 입력하는 옵션입니다.

  • inplace : DataFrame을 새로 생성할지 아니면, 기존 DataFrame을 업데이트 하는지를 정하는 옵션입니다.
    • True : 수정사항을 반영하여 기존 DataFrame을 업데이트합니다.
    • False : 수정사항을 반영하여 새로운 DataFrame을 생성합니다.
    • 기본값은 False입니다.

  • ignore_index : 인덱스 무시 여부를 나타내는 옵션입니다. True인 경우 결과 축에는 0, 1, …, n – 1이라는 새로운 인덱스를 지정합니다.



결측치를 제거하는 함수 dropna 사용 예시

import pandas as pd
import numpy as np

# 예시를 위한 샘플 데이터프레임 생성
dfFordropna = pd.DataFrame({"name": ['Alfred', 'Batman', 'Catwoman'],
                            "toy": [np.nan, 'Batmobile', 'Bullwhip'],
                            "born": [pd.NaT, pd.Timestamp("1940-04-25"),pd.NaT]})
dfFordropna 
--------------------------------------------------------------------------------------
    name	    toy	        born
0	Alfred	    NaN	        NaT
1	Batman	    Batmobile	1940-04-25
2	Catwoman	Bullwhip	NaT

하나 이상의 결측치가 존재하는 행을 삭제하려면 ?

dfFordropna .dropna()
------------------------------------
    name	toy	          born
1	Batman	Batmobile	  1940-04-25

하나 이상의 결측치가 존재하는 첫 번째 행과 두 번째 행이 제거되었습니다.


하나 이상의 결측치가 존재하는 열을 삭제하려면 ?

dfFordropna .dropna(axis = 'columns')
------------------------------------------
      name
0	  Alfred
1	  Batman
2	  Catwoman

dfFordropna .dropna(axis = 1)
------------------------------------------
      name
0	  Alfred
1	  Batman
2	  Catwoman

하나 이상의 결측치가 존재하는 ‘toy’와 ‘born’ 열이 제거되었습니다.


모든 요소가 결측치인 행을 삭제하려면 ?

dfFordropna.dropna(how = 'all')
----------------------------------------
    name	    toy	        born
0	Alfred	    NaN	        NaT
1	Batman	    Batmobile	1940-04-25
2	Catwoman	Bullwhip	NaT

# 모든 행이 결측치인 행이 존재하지 않아, 최초 데이터프레임과 동일한 결과 산출


결측치가 아닌 값이 2개 이상 포함된 행만 유지하려면 ?

dfFordropna.dropna(thresh = 2)
--------------------------------------
    name	    toy	        born
1	Batman	    Batmobile	1940-04-25
2	Catwoman	Bullwhip	NaT

두 개의 결측치가 존재하는 첫 번째 행은 제거되었습니다.


누락된 값을 찾을 열을 정의하려면 ?

dfFordropna.dropna(subset = ['name', 'toy'])
----------------------------------------------------
    name	    toy	          born
1	Batman	    Batmobile	  1940-04-25
2	Catwoman	Bullwhip	  NaT

‘name’과 ‘toy’ 열에 대해서 결측치가 없는 첫 번째 행과 두 번째 행이 유지되었습니다.


이상으로 이번 포스팅을 통하여 Pandas 라이브러리의 함수 중 결측치를 제거하는 함수 dropna에 대해서 알아 보겠습니다. 데이터 전처리 시 매우 자주 사용하는 함수입니다. 많은 실습을 통하여 꼭 알아두셔야 하는 함수입니다.

감사합니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다