Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python Pandas fillna()로 NaN 값 뒤로 채우기(bfill) 완벽 가이드

Pandas에서 null이 아닌 값을 뒤로 전파하는 방법

Pandas DataFrame에 있는 결측치(NaN)를 뒤의 값으로 채우고 싶다면, fillna() 메서드의 method 매개변수에 'bfill'(backward fill) 값을 지정하면 됩니다.

fillna(method='bfill')

참고: 최신 버전의 Pandas(2.x 이상)에서는 method 매개변수가 더 이상 권장되지 않으며(deprecated), 대신 bfill() 메서드를 직접 사용하는 것이 좋습니다.

dataFrame.bfill()  # fillna(method='bfill')와 동일한 결과

예제 데이터 준비

아래 예제에서는 일부 값이 NaN으로 비어 있는 CSV 파일(SalesData.csv)을 사용합니다. Microsoft Excel로 열었을 때 다음과 같은 데이터가 들어 있다고 가정해 보겠습니다.

Python Pandas fillna()로 NaN 값 뒤로 채우기(bfill) 완벽 가이드

1. 필요한 라이브러리 임포트

import pandas as pd

2. CSV 파일을 DataFrame으로 불러오기

dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")

전체 예제 코드

다음은 NaN 값을 뒤로 전파(backward fill)하여 채우는 전체 코드입니다.

import pandas as pd

# CSV 파일을 Pandas DataFrame으로 불러오기
dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv")
print("DataFrame...\n", dataFrame)

# null이 아닌 값을 뒤로 전파하여 결측치 채우기
res = dataFrame.fillna(method='bfill')
print("\nDataFrame after backward fill...\n", res)

실행 결과

위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

DataFrame...
        Car   Reg_Price   Units
0       BMW        2500   100.0
1     Lexus        3500     NaN
2      Audi        2500   120.0
3    Jaguar        2000     NaN
4   Mustang        2500   110.0

DataFrame after backward fill...
        Car   Reg_Price   Units
0       BMW        2500   100.0
1     Lexus        3500   120.0
2      Audi        2500   120.0
3    Jaguar        2000   110.0
4   Mustang        2500   110.0

결과 해석

출력 결과를 보면 bfill이 어떻게 동작하는지 명확히 알 수 있습니다.

  • 인덱스 1(Lexus)의 Units 값이 NaN이었지만, 바로 뒤 행인 인덱스 2(Audi)의 값 120.0으로 채워졌습니다.
  • 인덱스 3(Jaguar)의 Units 값 역시 뒤 행인 인덱스 4(Mustang)의 값 110.0으로 채워졌습니다.

즉, 'bfill'은 각 결측치를 바로 다음 행의 유효한 값으로 대체합니다. 반대로 앞선 행의 값으로 결측치를 채우고 싶다면 'ffill'(forward fill)을 사용하면 됩니다.