본문 바로가기
Python/Pandas

[pandas] 기상 데이터(시계열) 결측치 선형 보간

by ISLA! 2023. 11. 16.

시계열 데이터의 결측치 처리

  • 단순히 평균/중앙값/최빈값으로 결측치 처리하는 것은 바람직하지 않음
  • 시계열 데이터의 비정상성 때문에 시간의 흐름에 따라 평균과 분산이 변하므로 시계열 imputation은 다르게 해야함
    👉 imputation : 불완전한 데이터를 표준이나 대표성이 있는 다른 데이터를 활용하여 대체하는 과정

 

▶︎ 시계열 결측치 처리 방법 (1) 

  • Last observation carried forward(LOCF) : 직전 관측치 값으로 결측치를 대체
  • Next observation carried backward(NOCB) : 직후 관측치 값으로 결측치를 대체
  • Moving Average / Median : 직전 N의 time window의 평균치 / 중앙값으로 결측치를 대체
  • 모델링(결측치를 맞추는 모델을 만드는 것) : 최근에는 GAN을 이용한 시계열 데이터 생성 알고리즘이 등장하기도 함

    🔍 GAN(Generative Adversarial Network) : 시간에 따라 변화하는 데이터를 생성하는데 사용되는 기술
          - GAN은 생성자(Generator)와 판별자(Discriminator) 두 개의 신경망을 이용하여 데이터를 생성하고 평가하는 방식으로 작동
          - 과정이 복잡하고 훈련이 어려울 수 있고, 많은 하이퍼 파라미터 조정과 데이터 전처리가 필요할 수 있으나,
          - 실제와 유사한 시계열 데이터를 생성하고, 데이터 생성 및 확장, 데이터 감소 및 합성 등 다양한 분야에서 활용

 

▶︎ 시계열 결측치 처리 방법 (2) : 보간법

선형 보간 예시

 

  • 보간법 : 보간법은 주어진 데이터 포인트의 값을 사용하여 두 개 이상의 데이터 포인트 사이에서 누락된 값을 추정하는 수학적 기법
  • 주로 연속적 데이터를 다룰 때 사용됨 >> 데이터 포인트 간 관계를 이용하여 누락 값을 근사적으로 계산(연속적 함수를 근사)
  • 종류 :
    • 선형 보간법 (linear Interpolation) : 두 개 인접한 포인트 사이에서 누락 값을 직선 방정식을 사용하여 추정(두 데이터 포인트 간 선형 관계를 가정)
      👉 데이터가 연속적인 경향을 가지고 있고, 데이터 포인트 간 변화가 비교적 부드럽게 일어나는 경우에 고려 (간단하고 빠른 적용)

    • 다항식 보간법 (Polynomial Interpolation): 주어진 데이터 포인트에 대해 다항식을 사용하여 데이터 포인트 간의 곡선 관계를 근사 (예를 들어, 라그랑주 보간법과 단순 다항식 보간법이 있음)

    • 스플라인 보간법 (Spline Interpolation): 데이터를 보다 부드러운 곡선으로 근사화하는 방법. 주어진 데이터 포인트를 연결하는 여러 개의 다항식을 사용하여 부드러운 곡선을 형성함.
      👉 데이터가 부드럽지 않은 곡선 형태를 보이거나 급격한 변동이 있을 때 고려 (시각화나 추세 예측에 유용)

▶︎ Pandas의 interpolate 메서드로 보간하기

  • Pandas의 interpolate 메서드는 다양한 옵션을 제공하여 데이터프레임 또는 시리즈의 결측치를 보간할 수 있다.
  • 매개변수로 보간 방법과 다른 옵션을 조절할 수 있으며, 아래는 interpolate 메서드의 일부 주요 옵션들이다.

(1) method : 보간 방법을 지정하는 옵션

- 'linear', 'time', 'index', 'values' 등이 있음. 기본값은 'linear'

 

(2) axis: 보간을 적용할 축을 지정하는 옵션

- 기본값은 0

- 0은 행 방향(수직), 1은 열 방향(수평)

 

(3) limit: 보간을 적용할 최대 연속 결측값의 개수를 지정

- 예를 들어, limit=2로 설정하면 최대 2개의 연속된 결측값까지만 보간됨

 

(4) limit_direction: 보간 방향을 제어하는 옵션

- 'forward', 'backward', 'both', 또는 None 값

- 각 값은 결측값을 어느 방향으로 보간할지 결정

 

(5) limit_area: 보간을 적용할 영역을 지정하는 옵션

- 'inside', 'outside', 또는 None 값

- 'inside'는 결측값을 중심으로 내부 영역(주변 데이터만 사용)에서만 보간하며, 'outside'는 결측값을 중심으로 외부 영역에서만 보간

- 'None' 옵션을 선택하면 제한 영역을 설정하지 않고 결측값 주변의 모든 데이터를 이용하여 보간

 

(6) downcast: 데이터 타입을 보간 결과에 맞게 다운캐스트할지 여부를 지정하는 옵션

- None 또는 데이터 타입 문자열

 

(7) 기타 매개변수: 각 보간 방법에 따라 추가적인 매개변수 설정

- 예를 들어, method='polynomial'로 설정한 경우 다항식 보간을 수행하며 order 매개변수로 다항식의 차수를 지정

 

 

 

 

 

** 참고링크

https://velog.io/@leeebs/%EC%8B%9C%EA%B3%84%EC%97%B4-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%A0%84%EC%B2%98%EB%A6%AC

728x90