티스토리 뷰

안녕하세요! 오늘 시계열 데이터 분석에 대한 간단한 파이썬 코드 예제를 소개합니다. 이 예제에서는 구글(GOOG)의 주가 데이터를 사용하여 자동 상관 그래프를 그리고, 계절성 분해를 통해 시계열 데이터를 분석할 것입니다.

먼저 필요한 라이브러리를 가져옵니다.

import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import autocorrelation_plot

그런 다음 구글의 주가 데이터를 읽어옵니다.

data = pd.read_csv('../data/GOOG.csv', index_col='Date', parse_dates=True)
series = data['Close']

자동 상관 그래프를 그리기 위해 다음 코드를 사용합니다.

plt.figure(figsize=(10, 6))
autocorrelation_plot(series)
plt.title("Autocorrelation plot")
plt.xlabel('Lag')
plt.ylabel('Autocorrelation')
plt.show()

자동 상관 그래프는 시계열 데이터의 자기 상관을 시각화하는 데 도움이 됩니다. 여기서 x축은 지연(lag)을 나타내며, y축은 자동 상관을 나타냅니다.

이제 시계열 데이터를 분해하여 원래의 시계열과 계절성 성분을 분리해 봅시다.

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(series, model='additive', period=90)
adjusted_series = series - result.seasonal

분해된 성분을 그래프로 그리기 위해 다음 코드를 사용합니다.

fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(10, 6))

ax1.plot(series.index, series.values, label="original", color='blue')
ax1.plot(adjusted_series.index, adjusted_series.values, label="adjusted series", color='red')
ax1.set_title("original vs adjusted")
ax1.set_xlabel('date')
ax1.legend(loc="upper right")

ax2.plot(result.seasonal.index, result.seasonal.values, label="seasonal component", color='black')
ax2.set_title('seasonal compo')
ax2.set_xlabel('date')
ax2.legend(loc='upper right')

plt.show()

이 코드는 원래의 시계열 데이터와 계절성이 조정된 데이터를 함께 그리며, 계절성 성분을 별도로 그립니다. 이를 통해 시계열 데이터에서의 계절성 영향을 확인하고 분석할 수 있습니다.

이상으로 시계열 데이터 분석을 위한 간단한 파이썬 코드 예제를 소개했습니다. 이 예제를 활용하여 다양한 시계열 데이터를 분석해 볼 수 있습니다. 이제 다음 단계로 시계열 데이터의 추세와 잔차를 살펴보겠습니다.

추세와 잔차를 그래프로 그리기 위해 다음 코드를 사용합니다.

 

fig, (ax3, ax4) = plt.subplots(nrows=2, ncols=1, sharex=True, figsize=(10, 6))

ax3.plot(result.trend.index, result.trend.values, label="trend", color='purple')
ax3.set_title("Trend component")
ax3.set_xlabel('Date')
ax3.legend(loc="upper right")

ax4.plot(result.resid.index, result.resid.values, label="residual", color='green')
ax4.set_title("Residual component")
ax4.set_xlabel('Date')
ax4.legend(loc="upper right")

plt.show()

이 코드는 시계열 데이터의 추세 성분과 잔차 성분을 각각 그립니다. 추세 성분은 시계열 데이터에서의 전반적인 경향을 나타내며, 잔차 성분은 계절성과 추세를 제거한 후 남은 요소입니다.

이제 전체적인 시계열 분석 결과를 종합해 보겠습니다. 이 예제를 통해 시계열 데이터의 자기 상관, 계절성, 추세 및 잔차를 분석하는 방법을 소개했습니다. 이러한 기법을 사용하여 다양한 시계열 데이터를 분석하고 예측 모델링에 활용할 수 있습니다.

시계열 데이터 분석에는 다양한 방법이 존재하며, 이 예제에서 소개한 방법은 그 중 일부입니다. 더 많은 분석 기법을 배우고 싶다면, ARIMA, SARIMA, Prophet 등의 고급 시계열 모델링 기법을 공부해 보시길 추천합니다.

728x90
반응형
댓글
250x250
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함
공지사항