-
[Python] Pandas에서 결측치 보간하기 - interpolate 함수 이용법코딩/파이썬 2023. 8. 4. 15:44반응형
앞선 Pandas 관련 글에서 NaN값을 대체하거나 제거하는 방법에 대해서 알아봤습니다. 이번에는 결측치를 통계적인 방법으로 추정하는 함수인 interpolate에 대해서 알아보겠습니다.
1. 결측치 보간 방법은?
- 보간법은 결측치의 앞뒤 데이터를 이용해 적절한 값을 추정하는 방법이다.
결측치 보간(interpolation)은 결측치가 발생한 위치의 앞뒤 데이터를 사용하여 적절한 값을 추정하는 방법입니다. 선형 보간, 시간 보간, 다항 보간 등 다양한 방법이 있으며, 상황에 따라 적절한 방법을 선택해야 합니다. 이 중 선형 보간은 두 점 사이를 일정하게 연결하는 방법으로, 가장 간단하고 널리 사용됩니다.
Pandas에서 메소드인 interpolate는 다양한 보간법을 지원합니다. 하지만 기본은 선형 보간법을 이용합니다.
아래는 Pandas interpolate의 공식 페이지 입니다. 자세한 내용은 아래 링크를 참고하세요.
https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.interpolate.html
2. interpolate 사용 방법 & 예제
- pandas.interpolate를 통해, NaN의 추정치를 dataframe에 추가할 수 있다.
Pandas 라이브러리에서는 결측치 보간을 위한 interpolate 함수를 제공합니다. 기본적으로 interpolate 함수는 선형 보간 방법을 사용하지만, 다양한 보간 방법을 선택할 수 있습니다.
먼저 간단한 예제를 통해 interpolate 함수를 사용하는 방법을 알아봅시다. 다음과 같이 결측치를 포함한 DataFrame을 생성해보겠습니다.import pandas as pd import numpy as np data = {'A': [1, 2, np.nan, 4, 5], 'B': [5, np.nan, np.nan, 8, 9], 'C': [9, 10, 11, 12, 13]} df = pd.DataFrame(data) print(df) # 출력 # A B C #0 1.0 5.0 9 #1 2.0 NaN 10 #2 NaN NaN 11 #3 4.0 8.0 12 #4 5.0 9.0 13
이 DataFrame에서 'A'와 'B' 컬럼에 결측치가 포함되어 있습니다. interpolate 함수를 사용해 이 결측치를 보간해봅시다.
이 때 출력 결과를 보면 NaN으로 표시된 칼럼에 추정값이 추가되었습니다.
df_interpolated = df.interpolate() print(df_interpolated) ## 출력 # A B C #0 1.0 5.0 9 #1 2.0 6.0 10 # 결측치 6.0 추가. #2 3.0 7.0 11 # 결측치 3 , 7 추가 #3 4.0 8.0 12 #4 5.0 9.0 13
기본적인 선형 보간 외에도 interpolate 함수는 다양한 방법으로 보간을 지원합니다. method 인자를 사용해 보간 방법을 지정할 수 있습니다. 가령 아래 코드는 2차 다항 보간을 수행합니다. method='polynomial'으로 지정하고, order 인자로 다항식의 차수를 지정할 수 있습니다.
# method에 보간방법 추가 df_interpolated = df.interpolate(method='polynomial', order=2) print(df_interpolated)
3. 사용시 주의점
- 결측 데이터의 특성을 고려해 보간 방법을 선택해야 합니다. (예, 시계열은 time)
- 결측이 연속으로 발생할 경우, 오류가 커질 수 있다.
interpolate 함수를 사용할 때 주의해야 할 점은 보간 방법을 선택하는 것이 중요하다는 점입니다. 데이터의 특성, 분포 등을 고려해 적절한 보간 방법을 선택해야 합니다. 예를 들어 시계열 데이터에서는 시간을 고려한 time 보간이 적절할 수 있습니다.
또한, 결측치가 많은 경우나 결측치가 연속으로 발생하는 경우, 보간을 통해 추정한 값이 실제 값과 크게 달라질 수 있습니다. 이런 경우 결측치를 어떻게 처리할지 고민해야 합니다. 결측치 처리 방법은 데이터와 문제에 따라 다르므로, 다양한 방법을 시도하고 비교하는 것이 좋습니다.https://smart-worker.tistory.com/61
반응형'코딩 > 파이썬' 카테고리의 다른 글
[Python] pandas csv 읽을 때 칼럼명 지정하기: read_csv() (0) 2023.08.04 [Python] pandas 에 csv 파일 불러오기: pd.read_csv() (0) 2023.08.04 [Python] Pandas에서 NaN,NA 대체/제거하기: fillna, dropna (0) 2023.08.04 [Python] 초보자를 위한 cProfile로 코드 최적화하기 (0) 2023.08.01 [python] 딕셔너리에서 기본값 설정하기 (0) 2023.08.01