# prophetを使った時系列分析のクイックスタート
"""
prophetの特徴
- 時系列データのトレンド抽出 + トレンドの変化点の検出
- トレンド + 季節(周期性) + 祝日などのイレギュラー成分を足して曲線(いつもの)を作り、
最もフィットする曲線を見つける
- 前提
jupyter containerの場合は以下のコマンドでprophetをインストール
`!conda install -c conda-forge fbprophet --force --yes`
"""
import pandas as pd
import numpy as np
from fbprophet import Prophet
import matplotlib.pyplot as plt
%matplotlib inline
# warningが邪魔なので無視する
import warnings
warnings.filterwarnings('ignore')
###########
df = pd.read_csv("/path/to/file")
# 入力データを整形する
df["time_property"] = pd.to_datetime(df["time_property"])
_df = df.groupby("time_property").count()[["A"]].rename(columns={"A":"count"})
df_input = _df.reset_index().rename(columns={'index':'ds', 'count':'y'})
df_input["cap"] = 10000 #max
# df_input["floor"] = 0 #min
# 成長を予測する場合はロジスティック解析を使うっぽい
model = Prophet(growth='logistic')
model.fit(df_input)
future = model.make_future_dataframe(periods=365) # periodsに予測したい期間
future["cap"] = 10000 #max
# future["floor"] = 0 #min
forecast = model.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
# 予測値の可視化
model.plot(forecast)
plt.show()