이번 포스팅에서는 데이터 분석 시 필수적으로 알아야 하는 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에 대해서 알아 보겠습니다. 데이터 전처리 시 매우 자주 사용하는 함수입니다. 많은 실습을 통하여 꼭 알아두셔야 하는 함수입니다.
감사합니다.