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

Pandas interpolate()로 NaN 값을 선형 보간법으로 채우는 방법

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 옵션을 통해 다양한 보간 방식을 지정할 수도 있습니다.