Pandas로 누락된 값(NaN) 처리하기
데이터 분석을 하다 보면 수집 과정에서 발생한 결측값(누락된 값, NaN)을 자주 만나게 됩니다. Pandas에서 제공하는 interpolate() 함수를 사용하면 선형 보간(linear interpolation) 기법을 통해 이러한 결측값을 자연스럽게 채울 수 있습니다. 이번 글에서는 주어진 데이터프레임에서 모든 누락된 값을 채우는 Python 코드를 살펴보겠습니다.
해결 방법
다음 단계를 따라 문제를 해결할 수 있습니다.
결측값을 포함하는 데이터프레임을 정의합니다.
df.interpolate함수에method='linear',limit_direction='forward',limit=2옵션을 지정하여 호출합니다.
df.interpolate(method='linear', limit_direction='forward', limit=2)
각 매개변수의 역할은 다음과 같습니다.
method='linear' : 누락된 값을 앞뒤 유효한 값 사이의 선형 보간으로 계산합니다.
limit_direction='forward' : 앞쪽(이전) 값부터 순서대로 결측값을 채워 나갑니다.
limit=2 : 연속된 NaN 중 최대 2개까지만 채웁니다.
예제 코드
import pandas as pd
df = pd.DataFrame({"Id":[1, 2, 3, None, 5],
"Age":[12, 12, 14, 13, None],
"Mark":[80, 90, None, 95, 85],
})
print("Dataframe is:\n",df)
print("Interpolate missing values:")
print(df.interpolate(method ='linear', limit_direction ='forward', limit = 2))
실행 결과
Dataframe is:
Id Age Mark
0 1.0 12.0 80.0
1 2.0 12.0 90.0
2 3.0 14.0 NaN
3 NaN 13.0 95.0
4 5.0 NaN 85.0
Interpolate missing values:
Id Age Mark
0 1.0 12.0 80.0
1 2.0 12.0 90.0
2 3.0 14.0 92.5
3 4.0 13.0 95.0
4 5.0 13.0 85.0
결과 분석
Id 열 : 인덱스 3의 NaN이 앞뒤 값인 3과 5 사이를 보간하여 4.0으로 채워졌습니다.
Mark 열 : 인덱스 2의 NaN이 90과 95 사이의 중간값인 92.5로 계산되었습니다.
Age 열 : 마지막 행(인덱스 4)의 NaN은 이전 유효 값인 13.0으로 채워졌습니다.
이처럼 interpolate() 함수를 활용하면 복잡한 전처리 코드 없이도 데이터프레임의 결측값을 간편하고 체계적으로 처리할 수 있습니다.