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年深证指数数据的综合分析,我们得出了以下主要结论:

在数据清洗与预处理方面,我们对数据进行了日期格式转换和缺失值处理,确保了分析的准确性和数据的连续性。这些步骤为后续的时间序列分析和可视化提供了可靠的基础。在描述性统计分析方面,通过计算开盘价、最高价、最低价和收盘价等主要金融指标的平均值、标准差、最大值和最小值,我们对市场的波动情况和价格分布有了基本了解。。。。 

创作不易,希望大家多点赞关注评论!!!(类似代码或报告定制可以私信)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值