系列文章总目录:Python数据分析及可视化实例目录
1.项目背景:
仅仅用来练手,个股走势如果真预测准确了,都就改行当操盘手了,哈哈!
但话又说回来,如果把数据曲线特征提取出来,再进行对比异常判断,也是可以的。
数据源,请关注微信公众号:海豹战队,回复:数据
2.分析步骤:
(1) 时间序列
(2) 数据重采样
(3) 预测
3.分析结果:
4.源码(公众号:海豹战队):
# coding: utf-8
# 亲,转载即同意帮推公众号:海豹战队,嘿嘿......
# 数据源可关注公众号:海报战队,后留言:数据
%matplotlib inline
import pandas as pd
import datetime
import matplotlib.pylab as plt
import seaborn as sns
from matplotlib.pylab import style
from statsmodels.tsa.arima_model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
style.use('ggplot')
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
stockFile = 'data/T10yr.csv'
stock = pd.read_csv(stockFile, index_col=0, parse_dates=[0])
stock.head(10)
stock_week = stock['Close'].resample('W-MON').mean()
stock_train = stock_week['2000':'2015']
stock_train.head()
stock_train.plot(figsize=(12,8))
plt.legend(bbox_to_anchor=(1.25, 0.5))
plt.title("Stock Close")
sns.despine()
stock_diff = stock_train.diff()
stock_diff = stock_diff.dropna()
stock_diff = stock_train.diff()
stock_diff = stock_diff.dropna()
plt.figure()
plt.plot(stock_diff)
plt.title('一阶差分')
plt.show()
pacf = plot_pacf(stock_diff, lags=20)
plt.title("PACF")
pacf.show()
acf = plot_acf(stock_diff, lags=20)
plt.title("ACF")
acf.show()
# 核心
model = ARIMA(stock_train, order=(1, 1, 1),freq='W-MON')
result = model.fit()
#print(result.summary())
plt.figure(figsize=(6, 6))
plt.xticks(rotation=45)
plt.plot(pred)
plt.plot(stock_train)
# 搬砖也是个力气活,可视化采用Bokeh并非plt,以后再专门教大家使用Bokeh和Flask交互。
老鸟可去另一专栏:Python中文社区
新手可查阅历史目录:
yeayee:Python数据分析及可视化实例目录zhuanlan.zhihu.com