파이썬 시계열

파이썬으로 시작하는 시계열 분석의 기초

시계열이란?

시계열이란 시간의 흐름에 따라 변화되는 데이터의 일종입니다. 예를 들어, 일일 주식 가격, 월별 수익률, 분기별 매출 등 모두 시계열 데이터입니다. 시계열 데이터는 일반적으로 고유한 특성이 있기 때문에 다른 데이터와 분석하는 방법도 다릅니다.

파이썬에서 시계열 분석을 시작하는 방법

파이썬에서 시계열 데이터를 분석하기 위해서는 관련 라이브러리들을 사용해야 합니다. 주요 라이브러리로는 numpy, pandas, matplotlib, statsmodels 등이 있습니다.

우선 numpy와 pandas 라이브러리를 설치하고 import 합니다.

python
import numpy as np
import pandas as pd

시계열 데이터 생성하기

우선 임의의 시계열 데이터를 생성해보겠습니다. 이번 예제에서는 일일 주식 가격을 생성해보도록 하겠습니다.

python
prices = np.random.randint(100, 200, size=365)
dates = pd.date_range('20220101', periods=365, freq='D')
stock_prices = pd.DataFrame({'price': prices}, index=dates)
print(stock_prices.head())

위 코드에서는 numpy 라이브러리의 randint 함수를 이용하여 100과 200 사이의 임의의 숫자들을 365개 생성하였고, pandas 라이브러리의 date_range 함수를 이용하여 2022년 1월 1일부터 1일 단위로 365일간의 날짜를 생성하였습니다. 마지막으로 pandas DataFrame을 이용하여 ‘price’ 컬럼에 prices 데이터를 할당하고, index에 생성한 dates 데이터를 할당하여 stock_prices를 생성하였습니다.

시계열 데이터 시각화하기

이번에는 생성한 시계열 데이터를 시각화해보겠습니다. 이를 위해 matplotlib 라이브러리를 사용합니다.

“`python
import matplotlib.pyplot as plt

plt.plot(stock_prices.index, stock_prices[‘price’])
plt.xlabel(‘Date’)
plt.ylabel(‘Price’)
plt.show()
“`

위 코드에서는 plt.plot 함수를 이용하여 x축에는 날짜, y축에는 주식 가격을 할당하였고, xlabel, ylabel 함수를 이용하여 x축과 y축에 label을 추가하였습니다. 마지막으로 plt.show 함수를 이용하여 그래프를 출력합니다.

시계열 데이터 분석하기

이제 위에서 생성한 시계열 데이터를 분석해보겠습니다. 먼저 일일 수익률을 계산해보겠습니다.

python
daily_returns = stock_prices['price'].pct_change()
print(daily_returns.head())

위 코드에서는 pandas DataFrame에서 기본적으로 제공하는 pct_change 함수를 이용하여 이전 날짜 대비 수익률을 계산하였습니다.

다음은 이동평균선을 구해보겠습니다.

“`python
ma_20 = stock_prices[‘price’].rolling(window=20).mean()
ma_60 = stock_prices[‘price’].rolling(window=60).mean()

plt.plot(stock_prices.index, stock_prices[‘price’], label=’Price’)
plt.plot(stock_prices.index, ma_20, label=’MA20′)
plt.plot(stock_prices.index, ma_60, label=’MA60′)
plt.xlabel(‘Date’)
plt.ylabel(‘Price’)
plt.legend(loc=’upper left’)
plt.show()
“`

위 코드에서는 pandas DataFrame에서 제공하는 rolling 함수를 이용하여 window 크기만큼 이동평균선을 구하였고, matplotlib 라이브러리를 사용하여 그래프를 출력하였습니다.

시계열 데이터 예측하기

마지막으로 이번 예제에서는 ARIMA 모델을 이용하여 시계열 데이터를 예측해보겠습니다.

“`python
from statsmodels.tsa.arima.model import ARIMA

arima_model = ARIMA(stock_prices[‘price’], order=(1, 1, 1))
result = arima_model.fit()

predicted = result.predict(start=’2022-07-01′, end=’2022-07-06′, typ=’levels’)
print(predicted)
“`

위 코드에서는 ARIMA 모델을 생성하고, fit 함수를 이용하여 모델을 학습시켜줍니다. 마지막으로 predict 함수를 이용하여 2022년 7월 1일부터 6일까지의 주식 가격을 예측합니다.

결론

이번 블로그 포스팅에서는 파이썬에서 시계열 분석의 기초를 다뤄보았습니다. 시계열 데이터의 생성, 시각화, 분석에 대해 다루어보았으며, ARIMA 모델을 이용하여 시계열 데이터를 예측하는 방법도 다뤄보았습니다. 파이썬에서는 이 외에도 다양한 시계열 모델링을 지원하므로, 시계열 데이터 분석에 관심이 있다면 꼭 공부해보시기를 추천드립니다.