[Data Analysis] 시계열 데이터 분석

송아지·2024년 10월 1일

Data Analysis

목록 보기
10/10

1. 시계열 데이터

  • 데이터에 시간 순서(sequence)가 존재하는 데이터
  • 일반 데이터는 데이터 간 순서에 의미가 없지만 시계열 데이터는 순서에 의미가 존재함
  • 같은 간격의 시간 순서로 존재

1-1. 고려해야할 점

  • 시간(시기)를 고려
    • 어느 기간에 발생한 데이터인지
    • 반복되는 주기인지
  • 전날의 데이터가 다음 날에 영향을 주는가?
    • ex) 전날 주가 -> 다음날 주가

1-2. 시각화

  • 시간에 따른 차이, 변화를 봐야함
  • 그렇기에 라인차트를 이용하여 시각화 진행

1-3. 시계열 데이터 분해

  • 추세(Trend)
    • 점점 증가, 점점 감소
    • 꼭 선형적일 필요는 없음
  • 계절성(seasonality)
    • 계절적 요인의 영향을 받아 1년, 혹은 일정 기간 안에 반복적으로 나타나는 패턴
import statsmodels.api as sm

decomp = sm.tsa.seasonal_decompose(df[], model='additive', period=24)

# 원본 데이터 그래프
plt.subplot(4,1,1)
plt.plot(decomp.observed)
plt.ylabel('observed')

# trend 그래프
plt.subplot(4,1,2)
plt.plot(decomp.trend)
plt.ylabel('trend')

# seasonal 그래프
plt.subplot(4,1,3)
plt.plot(decomp.seasonal)
plt.ylabel('seasonal')

# residual(잔차) 그래프
plt.subplot(4,1,4)
plt.plot(decomp.residual)
plt.ylabel('residual')
plt.show()
  • model
    • additive
      • 구조 : 데이터 = 추세 + 계절성 + 잔차
      • 각 구성요소가 독립적으로 더해짐
      • 데이터의 변동 폭이 일정할 경우 사용
    • multiplicative
      • 구조 : 데이터 = 추세 * 계절성 * 잔차
      • 각 구성요소가 곱해지는 방식
      • 데이터의 변동 폭이 시간에 따라 커지거나 작아지는 패턴을 보일 때 사용
  • period
    • 데이터의 관측값을 묶는 갯수
    • 24 -> 24개의 관측값을 주기로 계절성 분석
  • 원본데이터의 인덱스가 시계열 데이터로 존재해야함 -> 그렇지 않을 경우 데이터의 순서로 데이터 분석

1-4. 패턴 만들기

  • shift()
  • rolling().mean()
  • diff()
profile
데이터 분석가&엔지니어를 희망하는 취준생

0개의 댓글