时间序列数据分析是指对随时间变化的数据集进行研究,以从中提取有价值的信息。例如,随着时间的推移,汽油价格、降雨量和股票价格等数据都属于时间序列数据。这种数据在商业案例中非常有用,比如预测一段时间内的销售量、网站访问者数量或用户数量。这些预测有助于优化组织的各个方面。时间序列分析中的数据点通常具有内在联系或一些不可见的结构,如趋势或季节性变化。在这些情况下,需要进行详细研究。观察到的数据可以用于多种目的,并可以根据需求进行建模。
可以使用以下命令安装Prophet:
pip install prophet
以下是完整的代码链接,可以在博客末尾找到。
import numpy as np # 线性代数
import pandas as pd # 数据处理,CSV文件I/O(例如pd.read_csv)
from prophet import Prophet
# 导入一些重要的库,还有更多的库需要导入
import warnings
warnings.filterwarnings('ignore') # 隐藏警告
import datetime as dt
import pandas as pd
pd.core.common.is_list_like = pd.api.types.is_list_like
import pandas_datareader.data as web
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import matplotlib.dates as mdates
# 现在所有重要的库都已导入
# 使用Yahoo Finance获取股票数据
start = dt.datetime(2010, 1, 1)
end = dt.datetime(2016, 1, 1)
df = web.DataReader("FB", 'yahoo', start, end) # 收集数据
# 以美元计价的价格
数据看起来像这样,可以通过查看了解更多关于这些股票术语的信息。对这里的日期和调整后的收盘价感兴趣。因为,日期将作为时间序列数据的索引,而调整后的收盘价将是时间序列数据。在数据中,股票价值被提及为收盘价和调整后的收盘价。收盘价是原始价格,即股票市场关闭前最后一笔交易的现金价值。调整后的收盘价考虑了可能影响股票价格的任何因素。
现在,让将日期作为一列。
df.reset_index(inplace=True)
data=df[["Date","Adj Close"]]
data=data.rename(columns={"Date": "ds", "Adj Close": "y"})
# 现在它适用于FB Prophet
现在,数据可以用于FB Prophet。现在数据的长度为911。将数据分为训练和测试部分。
df_train=data[0:500]
df_test=data[500:911]
创建Prophet模型,并使用训练数据训练模型。
m = Prophet()
m.fit(df_train)
现在,让做一些预测。
future = m.make_future_dataframe(periods=411)
forecast = m.predict(future)
forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail()
生成的就是这样的数据框,包含时间索引和其他值。“ds”表示日期数据,“yhat”表示预测的时间序列数据。“yhat_lower”和“yhat_upper”表示值可能的下限和上限。
让绘制数据。
fig1 = m.plot(forecast)
图表看起来是这样的。有2014年6月之前的数据,之后的数据是由Prophet模型生成的。让绘制其他组件。