시계열 데이터의 결측치 처리
- 단순히 평균/중앙값/최빈값으로 결측치 처리하는 것은 바람직하지 않음
- 시계열 데이터의 비정상성 때문에 시간의 흐름에 따라 평균과 분산이 변하므로 시계열 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): 데이터를 보다 부드러운 곡선으로 근사화하는 방법. 주어진 데이터 포인트를 연결하는 여러 개의 다항식을 사용하여 부드러운 곡선을 형성함.
👉 데이터가 부드럽지 않은 곡선 형태를 보이거나 급격한 변동이 있을 때 고려 (시각화나 추세 예측에 유용)
- 선형 보간법 (linear 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 매개변수로 다항식의 차수를 지정
** 참고링크
728x90
'Python > Pandas' 카테고리의 다른 글
[pandas] 조건에 맞는 데이터 필터링 : where( ), query( ) (0) | 2023.09.07 |
---|---|
[Pandas] cut(), qcut()을 이용한 데이터 구간화 (0) | 2023.09.07 |
[Pandas] groupby , 다중 열 정렬 (0) | 2023.09.07 |
describe() : 범주형 변수에 적용하여 기술 통계량 확인 (0) | 2023.08.17 |
display() 함수 : 여러 개 데이터프레임 동시에 확인 (0) | 2023.08.14 |