카테고리 없음

파이썬을 활용한 이커머스 데이터분석 (쇼핑몰 매출 예측 - Time Series)

민듀키티 2022. 3. 1. 18:45

1. 날짜 데이터 처리 하기

 

(1) 모듈 로딩하기

import pandas as pd
import numpy as np

from datetime import datetime, timedelta

(2) 현재 시간 다루기

today = datetime.now()

today
>>> datetime.datetime(2022, 3, 1, 18, 11, 43, 953212)


today.year
>>> 2022

today.month
>>> 3

today.day
>>> 1

 

(3) 날짜 연산

# 현재 날짜에 일(day) 기준으로 더하기
today + timedelta(days = 10)

# 현재 날짜에 주(week) 기준으로 더하기
today + timedelta(weeks = 3)

* 월을 기준으로는 더할 수 없음

 

(4) 날짜와 관련한 칼럼이 object로 인식하게 된다면 ?

data['date'] = pd.to_datetime(data['date'])

 

2.  실제 데이터로 Data 형태 다뤄보기

 

(1) 데이터 확인하기

data.head()

 

 

(2) 데이터 전처리

#필요한 칼럼만 가져오기
data = data[['Order Date','Ship Date','Sales','Profit']]
data['gap'] = data['Ship Date'] - data['Order Date']

결과

 


3. Linear Regression에 Time 데이터 적용하기

 

* Time Series 같은 경우는 많은 칼럼이 필요없어

 

from sklearn.linear_model import LinearRegression

X = data[['Profit','gap']]
y = data['Sales']
X['gap'] = X['gap'].apply(lambda x: x.days)


model = LinearRegression()
model.fit(X, y)

 


4. 2017년 데이터 예측하여 비교해보기 - AR 모델

# 트레이닝 데이터는 2016년까지 데이터로 필터링
new_df = data[:'2016']

from statsmodels.tsa.ar_model import AutoReg

# 지난 12개월의 데이터를 학습하도록 모델링
#lags : 얼마만큼 꺼내서 학습할 것인가 ? -> 월임으로 12

model = AutoReg(new_df, lags=12)
model_fit = model.fit()


# 예측 데이터 생성
predictions = model_fit.predict(start=len(new_df), end=len(new_df)+11)
predictions
# 원본 데이터와 예측데이터를 하나의 plot으로 그려서 비교하기
ax = data.plot()
predictions.plot(ax=ax, figsize=(14, 7))


 

5. Time Series  원리

 

(1) Time Series 구성요소

1. Trend : 상승 ? 하락 ?
2. Seasonality : 계절성
3. Cyclic : 주식의 사이클
4. Irregularity : 1,2,3 번으로 설명하지 못하는 오류
 

(2) AR 모델이란?

* 여기서 lags = 3

 

(3) Prophet을 위한 조건

1. 1년 이상의 데이터 (최소 1)
2. Seasonality
3. Event/Holiday
4. Historical Trend Change