数据分析实例-平安银行股票分析

简介: 数据分析实例-平安银行股票分析

本次项目以2020年平安银行的股票信息来进行数据分析


开发工具:jupyter notebook


首先导入本次项目用到的包


import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
import warnings
warnings.filterwarnings('ignore') # 忽略警告
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False   #解决符号无法显示

导入原始数据

data = pd.read_csv('2020_pinganbank_hist_dat (1).csv') # 导入原始数据
data.head()


1) 数据只保留日期(date)、开盘价(open)、收盘价(close)、成交量(volume)、涨跌幅(p_change)和换手率(turnover)这几个属性,并按时间先后顺序对数据进行排序。

data = data[['date','open','close','volume','p_change','turnover']]  # 导入数据,只保留日期(date)、开盘价(open)、收盘价(close)、成交量(volume)、涨跌幅(p_change)和换手率(turnover)这几个属性
data.sort_values(by='date',inplace=True) # 按时间先后顺序对数据进行排序
data.head() # 展示数据前五行


2.绘制出开盘价(open)和收盘价(close)的走势折线图,注意 X 轴绘制字符重叠问题的处理;

plt.figure(figsize=(15,8)) # 画布大小
plt.plot(data['date'],data['open'],label='开盘价') # 开盘价折线图
plt.plot(data['date'],data['close'],label='收盘价') # 收盘价折线图
ax = plt.gca()  # 处理x轴字符重叠问题
data_format = mpl.dates.DateFormatter('%m-%d')  # 处理x轴字符重叠问题
ax.xaxis.set_major_formatter(data_format)   # 处理x轴字符重叠问题
xlocator = mpl.ticker.MultipleLocator(7)    # 处理x轴字符重叠问题
ax.xaxis.set_major_locator(xlocator)    # 处理x轴字符重叠问题
plt.xticks(rotation=45) # 将x轴标签旋转45°
plt.legend(loc='upper center') # 添加图例
plt.show()



3.输出这一年内成交量(volume)最低和最高那两天的日期和分别的成交量以及收盘价(close)和换手率(turnover);

heigher = data['volume'].sort_values().index[-1]  # 成交量最高那天的数据
lower = data['volume'].sort_values().index[0]  # 成交量最低那天的数据
data[(data.index == lower) | (data.index == heigher)][['date','volume','close','turnover']] # 成交量(volume)最低和最高那两天的日期和分别的成交量以及收盘价(close)和换手率(turnover)


4.以成交量(volume)为 X 轴,收盘价(close)为 Y 轴,绘制出散点图,分析收盘价和成交量之间是否存在关联

plt.figure(figsize=(15,8))  # 画布大小
plt.scatter(x=data['volume'],y=data['close'])   # 画散点图
plt.xlabel('成交量',fontsize=15)     # x轴标签
plt.ylabel('收盘价',fontsize=15)    # y轴标签
plt.title('成交量与收盘价的关系',fontsize=15)   # 图的标题
plt.show()  # 从图看出没有相关关系



5.列出成交量(volume)在 1100000 以上且换手率(turnover)在 0.5 以上的记录,分析成交量和换手率之间是否存在关联

data1 = data[(data['volume'] > 1100000) & (data['turnover'] > 0.5)] # 成交量(volume)在 1100000 以上且换手率(turnover)在 0.5 以上的记录
data1


plt.figure(figsize=(15,8)) # 画布大小
plt.scatter(x=data1['volume'],y=data1['turnover']) # 画散点图
plt.xlabel('成交量',fontsize=15) # x轴标签
plt.ylabel('换手率',fontsize=15) # y轴标签
plt.title('成交量与换手率的关系',fontsize=15)  # 图的标题
plt.show() # 从图中看出具有较强的正相关性

6. 统计这一年中收盘价(close)高于开盘价(open)的天数,占今年总交易日的比率,如果每天以收盘价购买 1000 股,第二天以开盘价卖出 1000股,一年的收益是多少;

heigher_day = data[data['close'] > data['open']]['date'].count()  # 计算收盘价高于开盘价的天数
sum_day = data['date'].count()  # 计算总交易日
rate = heigher_day/sum_day # 计算比率
rate  # 比率
0.4959016393442623
open_ = data['open'][1:]*1000 # 开盘价(从第一天开始到最后一天,但不包含第一天)
close_ = data['close'][:-1]*1000 # 收盘价(从第一天到最后一天,但不包含最后一天)
sum_profit = open_.sum() - close_.sum() # 计算最后总收益
sum_profit # 最后总收益
-2010.0


7.按周统计出每周的累计涨跌幅,并绘制出条形图;

data['date'] = pd.to_datetime(data['date']) # 将date转化为日期类型
plt.figure(figsize=(18,10)) # 设置画布大小
data.resample('W',on='date')['p_change'].sum().plot(kind='barh',title='每周的累计涨跌幅') # 按周统计出每周的累计涨跌幅,并绘制出条形图



8.计算出每月开盘价(open)和收盘价(close)的平均值,并绘制出柱状图

# 计算出每月开盘价(open)和收盘价(close)的平均值,并绘制出柱状图
data.resample('M',on='date')[['open','close']].mean().plot(kind='bar',title='每月开盘价和收盘价的平均值')

目录
相关文章
|
2月前
|
数据挖掘 UED
ChatGPT数据分析——探索性分析
ChatGPT数据分析——探索性分析
53 1
|
2月前
|
数据可视化 数据挖掘 数据处理
ChatGPT数据分析应用——热力图分析
ChatGPT数据分析应用——热力图分析
114 1
|
2月前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(分组分析)
ChatGPT在常用的数据分析方法中的应用(分组分析)
72 1
|
2月前
|
数据挖掘 数据处理
ChatGPT在常用的数据分析方法中的应用(交叉分析)
ChatGPT在常用的数据分析方法中的应用(交叉分析)
51 1
|
2月前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
63 0
|
2月前
|
数据挖掘
ChatGPT在常用的数据分析方法中的应用(对比分析)
ChatGPT在常用的数据分析方法中的应用(对比分析)
60 0
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
数据分析师是在多个行业中专门从事数据搜集、整理和分析的专业人员
数据分析师是在多个行业中专门从事数据搜集、整理和分析的专业人员
44 3
|
4月前
|
机器学习/深度学习 数据可视化 API
【python】python基于tushare股票数据分析可视化(源码+数据+报告)【独一无二】
【python】python基于tushare股票数据分析可视化(源码+数据+报告)【独一无二】
385 1
|
4月前
|
前端开发 Java JSON
Struts 2携手AngularJS与React:探索企业级后端与现代前端框架的完美融合之道
【8月更文挑战第31天】随着Web应用复杂性的提升,前端技术日新月异。AngularJS和React作为主流前端框架,凭借强大的数据绑定和组件化能力,显著提升了开发动态及交互式Web应用的效率。同时,Struts 2 以其出色的性能和丰富的功能,成为众多Java开发者构建企业级应用的首选后端框架。本文探讨了如何将 Struts 2 与 AngularJS 和 React 整合,以充分发挥前后端各自优势,构建更强大、灵活的 Web 应用。
63 0
|
4月前
|
SQL 数据采集 算法
【电商数据分析利器】SQL实战项目大揭秘:手把手教你构建用户行为分析系统,从数据建模到精准营销的全方位指南!
【8月更文挑战第31天】随着电商行业的快速发展,用户行为分析的重要性日益凸显。本实战项目将指导你使用 SQL 构建电商平台用户行为分析系统,涵盖数据建模、采集、处理与分析等环节。文章详细介绍了数据库设计、测试数据插入及多种行为分析方法,如购买频次统计、商品销售排名、用户活跃时间段分析和留存率计算,帮助电商企业深入了解用户行为并优化业务策略。通过这些步骤,你将掌握利用 SQL 进行大数据分析的关键技术。
243 0