[python] 데이터 시계열(Time series) 전처리 방법

데이터 시계열(Time series)은 일련의 순서대로 발생하는 데이터를 의미합니다. 이러한 시계열 데이터를 분석하고 예측하기 전에 전처리를 수행해야 합니다. 이번 포스트에서는 Python을 사용하여 데이터 시계열 전처리 방법을 알아보겠습니다.

1. 날짜 형식 지정하기

시계열 데이터의 가장 중요한 요소는 날짜입니다. 날짜 형식을 올바르게 지정하여 데이터를 분석하는데 도움을 받을 수 있습니다. Python에서는 datetime 모듈을 사용하여 날짜 형식을 지정할 수 있습니다. 예를 들면 다음과 같습니다.

import datetime

# 날짜 형식 지정
date_format = "%Y-%m-%d"

# 문자열을 날짜로 변환
date_str = "2022-01-01"
date = datetime.datetime.strptime(date_str, date_format)

# 날짜를 문자열로 변환
formatted_date = date.strftime(date_format)

print(formatted_date)  # 출력: 2022-01-01

2. 결측치 처리하기

시계열 데이터에는 결측치가 포함될 수 있습니다. 결측치는 데이터의 누락 또는 불완전함을 나타내며, 분석 결과에 영향을 미칠 수 있습니다. 결측치를 처리하기 위해 Python에서는 pandas 라이브러리를 사용할 수 있습니다. 결측치를 삭제하거나 평균값 또는 중간값으로 대체하는 등의 방법을 사용할 수 있습니다. 예를 들면 다음과 같습니다.

import pandas as pd

# 결측치가 포함된 시계열 데이터
data = pd.Series([1, 2, None, 4, 5])

# 결측치 삭제
data_without_na = data.dropna()

# 평균값으로 결측치 대체
data_mean_imputed = data.fillna(data.mean())

print(data_without_na)       # 출력: 1.0, 2.0, 4.0, 5.0
print(data_mean_imputed)     # 출력: 1.0, 2.0, 3.0, 4.0, 5.0

3. 이동평균 계산하기

이동평균은 주어진 시계열 데이터에서 일정한 기간의 평균값을 계산하는 방법입니다. Python에서는 pandas 라이브러리의 rolling 함수를 사용하여 이동평균을 계산할 수 있습니다. 예를 들면 다음과 같습니다.

import pandas as pd

# 시계열 데이터
data = pd.Series([1, 2, 3, 4, 5])

# 2기간 이동평균 계산
moving_average = data.rolling(window=2).mean()

print(moving_average)  # 출력: NaN, 1.5, 2.5, 3.5, 4.5

4. 이상치 탐지하기

시계열 데이터에서 이상치는 중요한 정보를 제공할 수 있으므로 탐지하는 것이 중요합니다. Python에서는 statsmodels 라이브러리를 사용하여 이상치를 탐지할 수 있습니다. 예를 들면 다음과 같습니다.

import pandas as pd
from statsmodels.tsa.arima_model import ARIMA

# 시계열 데이터
data = pd.Series([1, 2, 3, 50, 5])

# ARIMA 모델 적용
model = ARIMA(data, order=(1, 0, 0))
model_fit = model.fit(disp=0)

# 이상치 탐지
outliers = model_fit.outlier_test()

print(outliers)  # 출력: 배열 형태의 이상치 결과

위에서는 ARIMA 모델을 사용하여 이상치를 탐지하는 방법을 보여주었습니다.

시계열 데이터의 전처리는 데이터 분석의 성능을 높이는데 중요한 요소입니다. 이 글에서는 날짜 형식 지정, 결측치 처리, 이동평균 계산, 이상치 탐지하는 방법을 알아보았습니다.