fillna

pandas fillna 소개

fillna 소개

fillna 는 Pandas 에서 결측값 (NaN, None) 을 지정된 값으로 대체할 수 있도록 하는 메서드입니다.

사용법1 - 기본

import pandas as pd
import numpy as np

# 예제 데이터프레임 생성
data = {'A': [1,      2,     np.nan, 4],
        'B': [np.nan, 2,      3,     4],
        'C': [np.nan, np.nan, 3,     np.nan]}
df = pd.DataFrame(data)

# 결측값을 0으로 채우기
df_filled = df.fillna(0)

print(df_filled)

출력 결과

     A    B    C
0  1.0  0.0  0.0
1  2.0  2.0  0.0
2  0.0  3.0  3.0
3  4.0  4.0  0.0

사용법2 - 특정 열에만 적용

# 특정 열에만 결측값을 채우기
df['A'] = df['A'].fillna(0)

사용법3 - 열마다 다른 값으로 결측값 채우기

# 각 열에 대해 다른 값으로 결측값을 채우기
df_filled = df.fillna({'A': 0, 'B': 99, 'C': -1})

print(df_filled)

출력 결과

     A     B    C
0  1.0  99.0 -1.0
1  2.0   2.0 -1.0
2  0.0   3.0  3.0
3  4.0   4.0 -1.0

사용법4 - 결측값을 이전 값으로 채우기(Forward Fill)

이전 값이라고 하는 것은 해당 데이터의 위쪽 즉 이전 행의 값을 의미한다.

# 앞의 값으로 결측값을 채우기 (forward fill)
df_filled = df.fillna(method='ffill')

print(df_filled)

출력 결과

     A    B    C
0  1.0  NaN  NaN
1  2.0  2.0  NaN
2  2.0  3.0  3.0
3  4.0  4.0  3.0

사용법5 - 결측값을 다음 값으로 채우기(Backward Fill)

# 뒤의 값으로 결측값을 채우기 (backward fill)
df_filled = df.fillna(method='bfill')
print(df_filled)

출력 결과

     A    B    C
0  1.0  2.0  3.0
1  2.0  2.0  3.0
2  4.0  3.0  3.0
3  4.0  4.0  NaN

사용법6 - 평균값으로 결측값 채우기

# 각 열의 평균값으로 결측값을 채우기
df_filled = df.fillna(df.mean())

print(df_filled)

출력 결과

     A    B    C
0  1.0  3.0  3.0
1  2.0  2.0  3.0
2  2.333333  3.0  3.0
3  4.0  4.0  3.0

사용법7 - 문자열 데이터에서 결측값 채우기

data = {'Name': ['Alice', None, 'Charlie', None],
        'City': [None, 'New York', 'Paris', None]}
df = pd.DataFrame(data)

# 문자열 데이터에서 결측값을 'Unknown'으로 채우기
df_filled = df.fillna('Unknown')

print(df_filled)

사용법8 - 조건에 따른 결측값 채우기

# C 열에서 결측값을 A의 값이 3보다 크면 'High'로, 작으면 'Low'로 채우기
df['C'] = df.apply(lambda row: 'High' if pd.isna(row['C']) and row['A'] > 3 
                   else ('Low' if pd.isna(row['C']) else row['C']), axis=1)

print(df)

출력 결과

          A    B     C
0  2.333333  3.0    Low
1  2.000000  2.0    Low
2  2.333333  3.0    3.0
3  4.000000  4.0   High

Related Docs

NCloud LB & SourcePipeline 구축하기
Data 분석 기초
tech collection 서비스 성능 개선하기
Selenium 복권 구매 자동화 만들어보기
디자인 패턴
책 리뷰
블로그 챌린지