Pandas에서 선형 보간(Linear Interpolation)으로 NaN 채우기
데이터 분석을 하다 보면 결측치(NaN)를 적절한 값으로 채워야 하는 경우가 자주 발생합니다. Pandas에서는 interpolate() 메서드를 사용하면 시리즈(Series)의 NaN 값을 선형 보간법으로 손쉽게 채울 수 있습니다.
선형 보간은 누락된 값의 앞뒤에 있는 값들을 기준으로 일정한 간격으로 값을 추정하는 방식입니다. 예를 들어 20과 40 사이에 NaN이 있다면, 그 사이 값인 30으로 채워집니다.
1단계: 필요한 라이브러리 임포트하기
먼저 Pandas와 NumPy 라이브러리를 가져옵니다.
import pandas as pd import numpy as np
2단계: NaN 값이 포함된 시리즈 만들기
NumPy의 np.nan을 사용해 NaN 값이 포함된 Pandas 시리즈를 생성합니다.
d = pd.Series([10, 20, np.nan, 40, 50, np.nan, 70, np.nan, 90, 100])
3단계: 선형 보간 적용하기
interpolate() 메서드를 호출하면 NaN 값들이 선형 보간법으로 채워진 새로운 시리즈가 반환됩니다.
d.interpolate()
전체 예제 코드
import pandas as pd
import numpy as np
# NaN 값이 포함된 pandas 시리즈 생성
d = pd.Series([10, 20, np.nan, 40, 50, np.nan, 70, np.nan, 90, 100])
print("시리즈 출력...\n", d)
# 선형 보간 적용
print("\n선형 보간 결과...\n", d.interpolate())실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
시리즈 출력... 0 10.0 1 20.0 2 NaN 3 40.0 4 50.0 5 NaN 6 70.0 7 NaN 8 90.0 9 100.0 dtype: float64 선형 보간 결과... 0 10.0 1 20.0 2 30.0 3 40.0 4 50.0 5 60.0 6 70.0 7 80.0 8 90.0 9 100.0 dtype: float64
결과 해석
출력 결과를 살펴보면 원래 NaN이었던 인덱스 2, 5, 7의 값이 각각 30.0, 60.0, 80.0으로 채워진 것을 확인할 수 있습니다.
- 인덱스 2: 앞값 20과 뒷값 40 사이의 중간값인 30
- 인덱스 5: 앞값 50과 뒷값 70 사이의 중간값인 60
- 인덱스 7: 앞값 70과 뒷값 90 사이의 중간값인 80
이처럼 interpolate() 메서드는 시계열 데이터나 수치 데이터에서 결측치를 자연스럽게 처리할 때 매우 유용합니다. 기본값은 선형 보간이며, 필요에 따라 method 옵션을 통해 다양한 보간 방식을 지정할 수도 있습니다.