[Pandas] 결측값 관련 - isnull()/isna(), dropna(), fillna(), notna()

cybergangster·2022년 6월 24일
0

Pandas

목록 보기
17/20
post-thumbnail
post-custom-banner

df.isnull() : 각 행/열 별 결측 여부, True(있음)/False(없음)
(+) df.col_name.isnull() : 'col_name' 컬럼의 행별 결측 여부, True(있음)/False(없음)
(+) df[df.col_name.isnull()] : 'col_name' 컬럼에서 결측값을 가진 행 추출
(+) df.isnull().sum() : 각 컬럼 별 결측값이 있는 행의 수
* .isnull()은 .isna()의 별칭으로 같은 기능을 함

[Example]

[1] 결측치를 제외한 인덱스 유지

df=df[df['col_name'].isna()!=True].reset_index(drop=True)

[2] 결측치 인덱스를 제거하고 남은 인덱스 추출

df=df.iloc[df['col_name'].dropna().index].reset_index(drop=True)

df.dropna() OR df.dropna(axis=0) : 결측값이 있는 행 제거, 0 대신 'rows'나 'index' 가능
(+) df.dropna(axis=1) : 결측값이 있는 열 제거, 1 대신 'columns' 가능

df.loc[df['col_name'.isna()==True, 'ohe'] = 1
# df의 'col_name'열에 결측값이 있을 경우,
# 'ohe'열을 1로 채운다.
df.loc[df['col_name'.isna()==False, 'ohe'] = 0
# df의 'col_name'열에 결측값이 없을 경우,
# 'ohe'열을 0으로 채운다.

df.fillna() : 결측값 채우기
(+) df.fillna(특정값) : 결측값을 특정값으로 채우기 // 문자열은 ''로, inplace() 등 옵션 추가 가능
(+) df.fillna(method='ffill') OR df.fillna(method='pad') : 결측값을 결측값 앞 행의 값으로 채우기
(+) df.fillna(method='bfill') OR df.fillna(method='backfill') : 결측값을 결측값 뒷 행의 값으로 채우기
(+) df.fillna(df.mena()) : 결측값을 각 열의 평균값으로 채우기

df.notna() : innull()/isna() 반대


post-custom-banner

0개의 댓글