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

Python Pandas – NaN 값을 이전 값으로 전파해 채우는 방법(ffill)

Pandas DataFrame에서 결측치(NaN)를 바로 앞 행의 값으로 채우고 싶다면 fillna() 메서드의 "method" 매개변수에 'ffill'을 지정하면 됩니다.

fillna(method='ffill')

참고로 Pandas 2.x 버전부터는 method 매개변수가 지원 중단(deprecated)되었기 때문에, 동일한 기능을 수행하는 전용 메서드인 ffill()을 사용하는 것을 권장합니다.

예를 들어 아래와 같이 일부 NaN 값이 포함된 CSV 파일이 Microsoft Excel에 열려 있다고 가정해 보겠습니다.

Python Pandas – NaN 값을 이전 값으로 전파해 채우는 방법(ffill)

1. 라이브러리 임포트

먼저 필요한 라이브러리를 임포트합니다.

import pandas as pd

2. CSV 파일 불러오기

CSV 파일의 데이터를 Pandas DataFrame으로 불러옵니다.

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

예제 코드

다음은 NaN 값을 앞쪽 값으로 전파해 채우는 전체 코드입니다.

import pandas as pd

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

# null이 아닌 값을 앞으로 전파(forward fill)
res = dataFrame.fillna(method='ffill')
print("\nForward fill 적용 후 DataFrame...\n", res)

최신 Pandas 버전을 사용한다면 다음과 같이 작성할 수도 있습니다.

res = dataFrame.ffill()

실행 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

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

Forward fill 적용 후 DataFrame...
        Car   Reg_Price   Units
0       BMW        2500   100.0
1     Lexus        3500   100.0
2      Audi        2500   120.0
3    Jaguar        2000   120.0
4   Mustang        2500   110.0

결과를 보면 'Lexus' 행의 NaN 값이 바로 위 행인 'BMW'의 값(100.0)으로, 'Jaguar' 행의 NaN 값이 'Audi'의 값(120.0)으로 각각 채워진 것을 확인할 수 있습니다. 이처럼 ffill(forward fill)은 시계열 데이터나 센서 데이터처럼 이전 값이 유지되는 경향이 있는 데이터의 결측치를 처리할 때 특히 유용합니다.