Python数据分析项目实战
现成案例分享
步骤:
- 准备数据
- 可视化数据、审查数据
- 处理数据
- 根据ACF、PACF定阶
- 拟合ARIMA模型
- 预测
作者:python分享站 链接:https://www.zhihu.com/question/280744341/answer/1651341817 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。import pandas as pd import pandas_datareader import datetime import matplotlib.pylab as plt from matplotlib.pylab import style from statsmodels.tsa.arima_model import ARIMA from statsmodels.graphics.tsaplots import plot_acf, plot_pacfstyle.use('ggplot') # 设置图片显示的主题样式# 解决matplotlib显示中文问题 plt.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体 plt.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题def run_main():"""主函数"""# 1. 准备数据# 指定股票分析开始日期start_date = datetime.datetime(2009, 1, 1)# 指定股票分析截止日期end_date = datetime.datetime(2019, 4, 1)# 股票代码stock_code = '600519.SS' # 沪市贵州茅台stock_df = pandas_datareader.data.DataReader(stock_code, 'yahoo', start_date, end_date)# 预览数据print(stock_df.head())# 2. 可视化数据plt.plot(stock_df['Close'])plt.title('股票每日收盘价')plt.show()# 按周重采样stock_s = stock_df['Close'].resample('W-MON').mean()stock_train = stock_s['2014':'2018']plt.plot(stock_train)plt.title('股票周收盘价均值')plt.show()# 分析 ACFacf = plot_acf(stock_train, lags=20)plt.title("股票指数的 ACF")acf.show()# 分析 PACFpacf = plot_pacf(stock_train, lags=20)plt.title("股票指数的 PACF")pacf.show()# 3. 处理数据,平稳化数据# 这里只是简单第做了一节差分,还有其他平稳化时间序列的方法stock_diff = stock_train.diff()diff = stock_diff.dropna()print(diff.head())print(diff.dtypes)plt.figure()plt.plot(diff)plt.title('一阶差分')plt.show()acf_diff = plot_acf(diff, lags=20)plt.title("一阶差分的 ACF")acf_diff.show()pacf_diff = plot_pacf(diff, lags=20)plt.title("一阶差分的 PACF")pacf_diff.show()# 4. 根据ACF和PACF定阶并建立模型model = ARIMA(stock_train, order=(1, 1, 1), freq='W-MON')# 拟合模型arima_result = model.fit()print(arima_result.summary())# 5. 预测pred_vals = arima_result.predict(start=str('2019-01'),end=str('2019-03'),dynamic=False, typ='levels')print(pred_vals)# 6. 可视化预测结果stock_forcast = pd.concat([stock_s, pred_vals], axis=1, keys=['original', 'predicted'])plt.figure()plt.plot(stock_forcast)plt.title('真实值vs预测值')plt.savefig('./stock_pred.png', format='png')plt.show()if __name__ == '__main__':run_main()
书籍推荐
这本书几乎是数据分析入门必读书了。主要介绍了python 3个库numpy(数组),pandas(数据分析)和matplotlib(绘图)的学习。
看到书里涉及到到当统计概率知识看不懂的时候,这时候反过来再学习统计概率的知识。
很多人错误的学习方式是,先学习统计概率,再去学习数据分析编程工具(Excel, Python, R)。
最后抱怨太难了,学不会。
这其实学习方法是可以改进的。这是为什么呢?
有两个原因:
1)因为很多统计概率讲的都是复杂的数学公式2,却不讲统计概率在生活中如何应用的。这样造成
的结果就是你学习了很多,但是也忘记了很多。
2)统计概率知识大多数时候是理论基础,如果不结合数据分析工具(Excel, Python, R)来使.
用,你肯定学不会。
比如你学习了四分位数9的理论,但是如何在实际中使用的,你不会数据分析的工具,你当然不会
用了。
但是如果你会数据分析的工具,实际操作就一行代码,四分位就计算出来了。你当然兴奋了,一高
兴学习兴趣也就上来了。
所以,我的建议,也是正确的学习方式是:先学习基础的数据分析工期法,当遇到统计概率知识
的时候,再来补这个知识,边学习边用数据分析工实现一遍。
视频推荐
Python-数据分析训练营【项目】_哔哩哔哩_bilibili