Python数据分析-股票分析和可视化(深证指数)
一、内容简介
股市指数作为衡量股市整体表现的重要工具,不仅反映了市场的即时状态,也提供了经济健康状况的关键信号。在全球经济体系中,股市指数被广泛用于预测经济活动,评估投资环境,以及制定财政和货币政策。在中国,深证指数作为深圳证券交易所的主要指数之一,它包含了深市的所有上市公司,因此能够全面地反映中国改革开放后经济发展的成果以及区域经济的活跃度。通过分析深证指数,可以得到中国经济特别是南方经济的宏观走向,这对投资者和政策制定者而言具有重要意义。
本项目采用了2022年的深证指数数据,主要目的是通过数据分析工具对该数据集进行深入分析和可视化。
二、问题讨论
数据清洗与预处理
数据加载:首先,使用Pandas的read_csv函数加载CSV格式的数据文件。
日期格式转换:将trade_date列中的日期字符串转换为Pandas的datetime对象,这是时间序列分析的重要步骤,因为它允许使用日期作为索引进行高效操作。
缺失值处理:检查数据中是否存在缺失值,如果存在,使用前向填充法(ffill)。这种方法假设数据的连续性,即前一个时间点的观察可以代替缺失值。
读取数据
数据和代码
报告代码数据
# 加载数据
file_path = 'sz_index_2022.csv'
if os.path.exists(file_path):df = pd.read_csv(file_path)
else:sys.exit("File not found.")
描述性统计分析
这些描述性统计结果展示了242个观测值的金融指标总结。具体来说,收盘价的平均值为11988.456368,标准差为1004.135569,最低值为10206.638500,最高值为14791.313600。开盘价的平均值为11994.138000,标准差为1023.500263,最低值为10090.983800,最高值为14935.227700。
接下来进行可视化
plt.figure(figsize=(10, 5))
plt.plot(df.index, df['close'], label='Closing Price') # 绘制收盘价折线图
plt.title('Shenzhen Index 2022 Closing Prices') # 设置标题
plt.xlabel('Date') # 设置X轴标签
plt.ylabel('Closing Price') # 设置Y轴标签
plt.legend()
plt.show()
这个图表展示了2022年深圳指数的收盘价走势。从图中可以看出,整个2022年深圳指数经历了较大的波动:年初至3月,指数从约15000点大幅下跌至约12000点,显示出市场在这一段时间内表现较为疲软。
plt.figure(figsize=(10, 5))
plt.boxplot([df['open'], df['high'], df['low'], df['close']], labels=['Open', 'High', 'Low', 'Close']) # 绘制箱线图
plt.title('Box Plot of Opening, Highest, Lowest, and Closing Prices') # 设置标题
plt.show()
这个箱线图展示了2022年深圳指数的开盘价、最高价、最低价和收盘价的分布情况。从图中可以看出,开盘价(Open),中位数接近12000点,数据分布较为对称,范围从约10000点到14900点。上方存在一些离群值,表示有几天的开盘价异常高。。。
条形图用于展示不同类别数据的比较。我们绘制了开盘价、最高价、最低价和收盘价的平均值条形图。
avg_prices = [summary_stats[col]['mean'] for col in ['open', 'high', 'low', 'close']]
plt.figure(figsize=(10, 5))
plt.bar(['Open', 'High', 'Low', 'Close'], avg_prices, color=['blue', 'green', 'red', 'orange']) # 绘制条形图
plt.title('Average Prices') # 设置标题
plt.xlabel('Price Type') # 设置X轴标签
plt.ylabel('Average Price') # 设置Y轴标签
plt.show()
这个条形图展示了开盘价、最高价、最低价和收盘价的平均值。每个价格类型都用不同颜色的条形表示:开盘价(Open)平均开盘价接近12000点。说明市场在开盘时的价格大致稳定在这一水平。
直方图展示了数据的分布情况。我们绘制了2022年深圳指数收盘价的直方图。
这个直方图展示了2022年深圳指数收盘价的分布情况。收盘价主要集中在11000点到13000点之间。在11000点到12000点之间的频率最高,显示出这一范围内的收盘价出现次数最多。
饼图用于展示各部分占总体的比例。我们绘制了2022年每个季度交易量占全年总交易量的比例。
df['quarter'] = df.index.quarter
volume_by_quarter = df.groupby('quarter')['vol'].sum() # 计算每季度总成交量
plt.figure(figsize=(10, 5))
plt.pie(volume_by_quarter, labels=['Q1', 'Q2', 'Q3', 'Q4'], autopct='%1.1f%%',colors=['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']) # 绘制饼图
plt.title('Proportion of Total Trading Volume by Quarter') # 设置标题
plt.show()
其中第一季度占比为25.1%,是全年交易量最高的季度。这一比例表明第一季度的市场交易活动较为活跃。第二季度占比为24.8%,略低于第一季度。这一比例显示第二季度的交易量与第一季度相当,市场活跃度持续。。。
接下来计算相关矩阵 绘制散点图
# 计算相关矩阵
correlation_matrix = df[['open', 'high', 'low', 'close', 'vol', 'amount']].corr()
print("Correlation matrix:\n", correlation_matrix)# 绘制散点图
plt.figure(figsize=(12, 8))
for i, predictor in enumerate(['open', 'high', 'low', 'vol', 'amount']):plt.subplot(2, 3, i + 1)plt.scatter(df[predictor], df['close'], alpha=0.5)plt.xlabel(predictor)plt.ylabel('Close')
plt.tight_layout()
plt.show()
从图中可以看到,收盘价与开盘价、最高价、最低价之间有很强的线性关系,点几乎沿对角线分布。这表明这些特征之间有高度相关性。而收盘价与交易量和交易金额之间的相关性较低,点的分布较为分散。
接下来线性回归分析
多元线性回归:建立以开盘价、最高价和最低价为自变量,收盘价为因变量的回归模型。计算并报告每个变量的系数,评估模型的效力和各变量的影响力。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
predictors = ['open', 'high', 'low', 'vol', 'amount']
X = df[predictors].values
y = df['close'].values
# 增加一个截距列
X = np.column_stack((np.ones(X.shape[0]), X))# 计算回归系数 (beta)
# beta = (X^T * X)^-1 * X^T * y
X_transpose = X.T
beta = np.linalg.inv(X_transpose @ X) @ X_transpose @ y# 计算预测值
y_pred = X @ beta
图中红色虚线(拟合收盘价)与蓝色实线(实际收盘价)基本重合,这表明模型对收盘价的预测非常准确。在大多数时间段内,拟合值与实际值的波动趋势基本一致。
三、结论
通过对2022年深证指数数据的综合分析,我们得出了以下主要结论:
在数据清洗与预处理方面,我们对数据进行了日期格式转换和缺失值处理,确保了分析的准确性和数据的连续性。这些步骤为后续的时间序列分析和可视化提供了可靠的基础。在描述性统计分析方面,通过计算开盘价、最高价、最低价和收盘价等主要金融指标的平均值、标准差、最大值和最小值,我们对市场的波动情况和价格分布有了基本了解。。。。
创作不易,希望大家多点赞关注评论!!!(类似代码或报告定制可以私信)
相关文章:

Python数据分析-股票分析和可视化(深证指数)
一、内容简介 股市指数作为衡量股市整体表现的重要工具,不仅反映了市场的即时状态,也提供了经济健康状况的关键信号。在全球经济体系中,股市指数被广泛用于预测经济活动,评估投资环境,以及制定财政和货币政策。在中国…...

Linux如何安装openjdk1.8
文章目录 Centosyum安装jdk和JRE配置全局环境变量验证ubuntu使用APT(适用于Ubuntu 16.04及以上版本)使用PPA(可选,适用于需要特定版本或旧版Ubuntu)Centos yum安装jdk和JRE yum install java-1.8.0-openjdk-devel.x86_64 安装后的目录 配置全局环境变量 vim /etc/pr…...
【LLVM】LTO学习
看这篇文章,文中的代码都是错的,给出的命令行也是错的。 真不如参考文献中也是华为的外国员工写的PPT。 但是,上述的文件中的指令也存在报错,还是官方文档看着舒服。...

事务的特性-原子性(Atomicity)、一致性(Consistency)、隔离性(Asolation)、持久性(Durability)
一、引言 1、数据库管理系统DBMS为保证定义的事务是一个逻辑工作单元,达到引入事务的目的,实现的事务机制要保证事务具有原子性、一致性、隔离性和持久性,事务的这四个特性也统称为事务的ACID特性 2、当事务保持了ACID特性,才能…...

redis哨兵模式(Redis Sentinel)
哨兵模式的背景 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式。 为了解决单点故障和提高系统的可用性,需要一种自动化的监…...
【牛客】牛客小白月赛97 题解 A - E
文章目录 A - 三角形B - 好数组C - 前缀平方和序列D - 走一个大整数迷宫E - 前缀和前缀最大值 A - 三角形 map存一下每个数出现了多少次,再遍历map #include <bits/stdc.h>using namespace std;#define int long long using i64 long long;typedef pair<…...
Spring Boot中泛型参数的灵活运用:最佳实践与性能优化
泛型是Java中一种强大的特性,它提供了编写通用代码的能力,使得代码更加灵活和可复用。在Spring Boot应用程序中,泛型参数的灵活运用可以带来诸多好处,包括增强代码的可读性、提高系统的健壮性以及优化系统的性能。本文将深入探讨在…...
MySQL建表时的注意事项
以下是我对MySQL建表时的注意事项。其实,建表事项有很多,我的总结如下: 1 存储引擎的选择,一般做开发,都是要支持事务的,所以选择InnoDB 2 对字段类型的选择: 对于日期类型如果要记录时分…...

Advanced RAG 09:『提示词压缩』技术综述
编者按: 如何最大限度地发挥 LLMs 的强大能力,同时还能控制其推理成本?这是当前业界研究的一个热点课题。 针对这一问题,本期精心选取了一篇关于"提示词压缩"(Prompt Compression)技术的综述文章。正如作者所说…...
(13)DroneCAN 适配器节点(二)
文章目录 前言 2 固件 2.1 基于F103 2.2 基于F303 2.3 基于F431 3 ArduPilot固件DroneCAN设置 3.1 f303-通用设置示例 4 DroneCAN适配器节点 前言 这些节点允许现有的 ArduPilot 支持的外围设备作为 DroneCAN 或 MSP 设备适应 CAN 总线。这也允许扩展自动驾驶仪硬件的…...

摸鱼大数据——Spark基础——Spark环境安装——Spark Local[*]搭建
一、虚拟机配置 查看每一台的虚拟机的IP地址和网关地址 查看路径: cat /etc/sysconfig/network-scripts/ifcfg-ens33 2.修改 VMware的网络地址: 使用VMnet8 3.修改windows的对应VMware的网卡地址 4.通过finalshell 或者其他的shell连接工具即可连接使用即可, 连接后, 测试一…...
函数内部结构分层浅析(从MVC分层架构联想)
函数内部结构分层浅析(从MVC分层架构联想) 分层架构:一种将软件代码按不同功能进行划分的架构模式。 优点包括: 可维护性:各层职责明确,易于单独修改维护。 可扩展性:方便添加或修改某一层,不…...

【three.js案例二】时空隧道
import * as THREE from ./build/three.module.js // 引入轨道控制器扩展库OrbitControls.js import { OrbitControls } from three/addons/controls/OrbitControls.js; // 引入dat.gui.js的一个类GUI import { GUI } from three/addons/libs/lil-gui.module.min.js;// 场景 co…...

动手学深度学习(Pytorch版)代码实践 -计算机视觉-48全连接卷积神经网络(FCN)
48全连接卷积神经网络(FCN) 1.构造函数 import torch import torchvision from torch import nn from torch.nn import functional as F import matplotlib.pyplot as plt import liliPytorch as lp from d2l import torch as d2l# 构造模型 pretrained…...

【Python游戏】猫和老鼠
本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、代码示例三、知识点梳理四、总结一、前言 本文介绍如何使用Python的海龟画图工具turtle,开发猫和老鼠游戏。 什么是Python? Python是由荷兰人吉多范…...
【无标题】c# WEBAPI 读写表到Redis
//c# WEBAPI 读写表到Redis using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Http; using System.Web.Http; using Newtonsoft.Json; using StackExchange.Redis; using System.Data; using System.Web; namespace …...
【剑指Offer系列】53-0到n中缺失的数字(index)
给定一个包含 [0, n] 中 n 个数的数组 nums ,找出 [0, n] 这个范围内没有出现在数组中的那个数。 示例 1: 输入:nums [3,0,1] 输出:2 解释:n 3,因为有 3 个数字,所以所有的数字都在范围 [0,3]…...
docker compose部署zabbix7.0官方方法快速搭建
环境介绍: 系统:centos7 官方文档:https://www.zabbix.com/documentation/current/zh/manual/installation/containers docker镜像加速 vi /etc/docker/daemon.json{"registry-mirrors": ["https://docker.1panel.live&quo…...
分库分表之后如何设计主键ID(分布式ID)?
文章目录 1、数据库的自增序列步长方案2、分表键结合自增序列3、UUID4、雪花算法5、redis的incr方案总结 在进行数据库的分库分表操作后,必然要面临的一个问题就是主键id如何生成,一定是需要一个全局的id来支持,所以分库分表之后,…...

秋招突击——6/28、6.29——复习{数位DP——度的数量}——新作{}
文章目录 引言复习数位DP——度的数量个人实现参考实现 总结 引言 头一次产生了那么强烈的动摇,对于未来没有任何的感觉的,不知道将会往哪里走,不知道怎么办。可能还是因为实习吧,再加上最近复习也没有什么进展,并不知…...

TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

工业安全零事故的智能守护者:一体化AI智能安防平台
前言: 通过AI视觉技术,为船厂提供全面的安全监控解决方案,涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面,能够实现对应负责人反馈机制,并最终实现数据的统计报表。提升船厂…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂
蛋白质结合剂(如抗体、抑制肽)在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上,高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术,但这类方法普遍面临资源消耗巨大、研发周期冗长…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

在Mathematica中实现Newton-Raphson迭代的收敛时间算法(一般三次多项式)
考察一般的三次多项式,以r为参数: p[z_, r_] : z^3 (r - 1) z - r; roots[r_] : z /. Solve[p[z, r] 0, z]; 此多项式的根为: 尽管看起来这个多项式是特殊的,其实一般的三次多项式都是可以通过线性变换化为这个形式…...