Python数据分析项目实战

news2024/12/28 5:48:56

现成案例分享

Python数据分析:股票数据分析案例

步骤:

  1. 准备数据
  2. 可视化数据、审查数据
  3. 处理数据
  4. 根据ACF、PACF定阶
  5. 拟合ARIMA模型
  6. 预测
    作者: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_pacf
    
    style.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()
    
        # 分析 ACF
        acf = plot_acf(stock_train, lags=20)
        plt.title("股票指数的 ACF")
        acf.show()
    
        # 分析 PACF
        pacf = 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439165.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Windows下载redis

下载微软的 Redis和配置 Windows下载redis1,下载redis2,解压压缩包3,启动Redis临时服务4,启动Redis客户端测试连接5, Redis配置 (可选)1, 配置系统环境变量2,添加Redis服务3&#xf…

数据结构——排序(5)

作者:几冬雪来 时间:2023年4月14日 内容:数据结构排序内容讲解 目录 前言: 1.非递归归并排序: 2.越界情况: 3.计数排序: 结尾: 前言: 在上一篇博客中我们对归…

硬件语言Verilog HDL牛客刷题day10 华W部分 和 DJ部分

1. VL63 并串转换 1.题目: 设计一个模块进行并串转换,要求每四位d输为转到一位dout输出,输出valid_in表示此时的输入有效。 2.解题思路 2.1 计数记录输出的位数。 2.2 数据 有一个延时。 2.3 思路就是 搞一个寄存器存储数据,然后…

【蓝桥系列】为什么不会「输入输出」,你一道题都做不出来?(输入输出模板)

欢迎各位旅行者,来到小蓝の蓝桥城! 全文目录 📖第一幕 「藏宝地图」 🌼 输入 🌱输入一行 🌱输入多行 🌼 输出 🌱输出 一个数 🌱输出 一维列表 🌱输出…

TCP知识

计算机网络模型 OSC(Open System Interconnect)采用分层的结构化技术,共分七层:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。 TCP/IP模型共分四层:链路层&…

干货分享 | 图解如何写出优秀的项目总结?

不论是公司,还是个人,要不断地提升,就要不断地进行总结与改进,再总结再改进,如此循环,通过不断地总结与改进,改善我们的工作方法、优化工作流程、提升工作效率。 ​这就是PDCA基本思路&#xf…

ROS 教程之 vision : 用笔记本摄像头获取图像

如何用笔记本自带的摄像头采集图像 尝试一:安装Webcam 驱动 参考 大神白巧克力亦唯心博客: 链接: ROS 教程之 vision : 用各种摄像头获取图像. sudo apt-get install git-core cd ~/catkin_ws/src #catkin_ws/src对应你自己建立的catkin工作空间…

区间动态规划

区间DP 石子合并:前缀和动态规划最长合法子序列环形石子合并石子合并 II城镇国王超级括号序列炸弹人 区间DP: 状态:区间左右端点 dp[i][j]阶段:区间长度转移:由外到内 石子合并:前缀和动态规划 问题特征&…

第3章 数据科学的5个步骤

第3章 数据科学的5个步骤 文章目录 第3章 数据科学的5个步骤3.1 数据科学简介3.2 5个步骤概览3.2.1 提出有意思的问题3.2.2 获取数据3.2.3 探索数据3.2.4 数据建模3.2.5 可视化和分享结果3.3.1 数据探索的基本问题3.3.2 数据集1:Yelp点评数据DataFrameSeries定性数据…

Steam无法载入网页 - 解决方案

前言 用户在使用Steam客户端时经常会遇到无法载入网页的情况,如下图。下文介绍解决方案。 解决方案 检查防火墙 打开Windows设置,选择更新和安全,选择Windows安全中心 - 防火墙和网络保护,如下图: 点击允许应用通…

提升业务韧性的最佳路径,亚马逊云科技帮您打开成本优化的路径

众所周知,当你想要从头开始建立一个云财务管理计划似乎是稍有难度的。因此,亚马逊云科技解构了4个云财务管理CFM原则——查看、节省、计划和运营——并分享可以实施的操作指南,帮助您在云上取得成功。 云成本管理工具 亚马逊云科技提供一系…

学生信息管理系统(student information manage system, SIMS)

一、前言 本项目为学生信息管理系统,使用C语言编写。 ★★★项目详见本人gitee仓库,地址 https://gitee.com/omnipotent-brother/student-information-manage-system.git ★★★ 二、项目介绍 开发环境: 基于windows 11系统下的Visual Studio…

SQL Server 服务器安装配置和使用

目录 一、SQL Server概述 1、SQL Server 环境需求 2、SQL Server的特点和组成 (1)SQL Server 特点 (2)SQL Server 基本组成 3、SQL Server 安装需注意 (1)数据文件的存储位置 (2&#xf…

【Visual Studio Code】编码速度提升小技巧

简言 用了这么久的vscode。在此记录下我常用的快捷键和小技巧。 小技巧 这个是vscode的工作界面。 值得一提的是,界面下边一行是快捷显示信息和快捷操作。可以快速了解打开文件的描述信息。 使用扩展 在使用vscode的时候,一定要安装相应的扩展包。 扩…

08 - 智能编程语言

一、为什么需要智能编程语言 1. 语义鸿沟 传统C/C++等是以面向通用计算的加、减、乘、除等基本标量操作为基础的,通常不具有和具体任务及应用场景相关的高层语义。例如:使用纯标量计算的C++语言编写的卷积运算包含7重循环,而采用向量语义的Python语言编写的卷积运算只需要…

PowerToys——免费、强大、高效的微软官方效率提升工具集,办公学习宝藏软件

名人说:博观而约取,厚积而薄发。——宋苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简单介绍1、PowToys是什么?2、它的功能有哪些? 二、下载安装三、功能示例1、始终置顶2、…

弱算法MD5、SHA1、DES、AES CBC-修复建议

一、修复原则 修复原则上2条走: 1、新产品、新业务 不应使用弱算法,如果使用应及时修复 2、已经产品 【金融类】业务应自行根据涉及广度 排期修复 【非金融】 类,在修复难度大、涉及面广的情况下 可以暂时不修复,择机修复。 …

线程等待其他线程执行同步类CountDownLatch

文章目录 前言核心原理源码解析同步源码分析await源码分析countDown源码分析 实战演示1、创建演示代码2、创建测试用例3、测试结果演示 写在最后 前言 大家都知道多线程在我们实际编码过程中运用很多,很多情况我们需要靠多线程来提升系统性能。但是有些时候我们需要…

Flink系列-7、Flink DataSet—Sink广播变量分布式缓存累加器

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址:https://flink.apache.org/ 学习资料:https://flink-learning.org.cn/ 目录 数据输出Da…

图的简单处理(C/C++)

目录 1 存图方法 1.1 邻接矩阵 1.2 邻接表 1.3 链式前向星 2 树形DP 2.1 简介 2.2 例题1:公司聚会 2.3 例题2:士兵部署 2.4 例题3:强力党逗志芃 2.5 例题4:作物杂交(不确定树的结构) …