[Python] 연습

[Python] 결측값 처리하기(dropna)

Simon Yoon 2022. 3. 27. 21:57

결측값이 있는 행이나 열을 삭제하고자 하는 경우에는, dropna() 함수를 사용하면 된다.

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

 

Parameter 설명
axis 0 또는 'index'로 하면, 행에 대한 제거 (디폴트)
1 또는 'columns'로 하면, 열에 대한 제거
how 'any'는 행 혹은 열 방향으로 결측값이 하나라도 있으면 제거 (디폴트)
'all'은 모든 값이 결측값이면 제거
thresh 최소 n개가 결측값이 아니면 그 행(또는 열)을 제거하지 않음
예를들어 thresh = 4로 지정하면 그 행(또는 열)에 최소한 4개의 값은 결측값이 아닌 경우를 제외하고 나머지는 다 제거
subset 특정 열을 지정
inplace True면 데이터프레임에 바로 적용, 디폴트는 False

 

활용 예시

import pandas as pd
import numpy as np

# 딕셔너리를 이용한 Data Frame의 초기화
test_data = {'FirstName' : ['So-yeon', 'John', 'Yuna'],
             'LastName' : ['Park', 'Smith', 'Kim'],
             'Score' : [100, np.nan, 85],
             'Born' : [pd.Timestamp('2001-08-15'), pd.Timestamp('2001-03-27'), pd.NaT],
             'Address' : ['Seoul', np.nan, 'Incheon']}
df = pd.DataFrame(test_data)
df

 

df.dropna()만 하면 결측값이 있는 행은 다 삭제된다.

df.dropna()

 

df.dropna(how = 'all')로 하면 행의 모든 값이 결측값이 행만 제거한다. 해당 예시에서는 아무 행도 지워지지 않는다.

df.dropna(how = 'all')

 

df.dropna(thresh = 4)를 쓰면 각 행에 최소한 4개의 값은 결측값이 아닌 경우를 제외하고 나머지 행은 다 제거한다.

df.dropna(thresh = 4)

 

df.dropna(subset=['Born', 'Address'])를 쓰면 해당 열에 결측값이 있는 행은 제거한다.

df.dropna(subset=['Born', 'Address'])