1. 시계열 데이터
- 데이터에 시간 순서(sequence)가 존재하는 데이터
- 일반 데이터는 데이터 간 순서에 의미가 없지만 시계열 데이터는 순서에 의미가 존재함
- 같은 간격의 시간 순서로 존재
1-1. 고려해야할 점
- 시간(시기)를 고려
- 어느 기간에 발생한 데이터인지
- 반복되는 주기인지
- 전날의 데이터가 다음 날에 영향을 주는가?
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')
plt.subplot(4,1,2)
plt.plot(decomp.trend)
plt.ylabel('trend')
plt.subplot(4,1,3)
plt.plot(decomp.seasonal)
plt.ylabel('seasonal')
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()