카테고리 없음
파이썬을 활용한 이커머스 데이터분석 (쇼핑몰 매출 예측 - 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