Pandas实现股票分析

需求:股票分析
使用tushare包获取某股票的历史行情数据。

  1. 输出该股票所有收盘比开盘上涨3%以上的日期。
  2. 输出该股票所有开盘比前日收盘跌幅超过2%的日期。
  3. 假如我从2015年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

准备工作:
先安装财经数据接口包tushare

pip install tushare

我们以当下的热门个股九安医疗为例,九安医疗股票代码:002432

首先获取九安医疗股票的历史行情数据:
Pandas实现股票分析_第1张图片

结果:Pandas实现股票分析_第2张图片

Pandas实现股票分析_第3张图片
这样在jupyter上展示不方便,我们将获取的股票数据存储到本地
并尝试读取:
Pandas实现股票分析_第4张图片
可以看出上面的数据还需要进行相关的处理,
那个Unnamed: 0那一列没有用,我们给它删除:
Pandas实现股票分析_第5张图片
然后我们试着查看每一列的数据类型:
Pandas实现股票分析_第6张图片
发现data并不是标准的时间序列类型,我们需要给它转一下:
Pandas实现股票分析_第7张图片
然后我们将date列作为源数据的行索引:
Pandas实现股票分析_第8张图片
数据至此已经处理的差不多了,下面开始解决问题:
1. 输出该股票所有收盘比开盘上涨3%以上的日期:

#伪代码:(收盘-开盘)/开盘 > 0.03
(df['open'] - df['close']) / df['open'] > 0.03

#在分析的过程中如果产生了boolean值则下一步马上将布尔值作为源数据的行索引
 #如果布尔值作为df的行索引,则可以取出true对应的行数据,忽略false对应的行数据

Pandas实现股票分析_第9张图片
2. 输出该股票所有开盘比前日收盘跌幅超过2%的日期:

#伪代码:(开盘-前日收盘)/前日收盘 < -0.02
df['close'].shift(1)将收盘价那一列整体下降一行,方便计算
(df['open'] - df['close'].shift(1))/df['close'].shift(1) < -0.02
#将布尔值作为源数据的行索引取出True对应的行数据

Pandas实现股票分析_第10张图片
3.假如我从2015年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

分析:
时间节点:2015-2022
一手股票:100支股票
买:
一个完整的年需要买入1200支股票
卖:
一个完整的年需要卖出1200支股票
买卖股票的单价:
开盘价

Pandas实现股票分析_第11张图片

买股票:
找每个月的第一个交易日对应的行数据(捕获到开盘价)==》每月的第一行数据
根据月份从原始数据中提取指定的数据

每月第一个交易日对应的行数据:
Pandas实现股票分析_第12张图片
买入股票花费的总金额:
在这里插入图片描述
然后就求卖出股票到手的钱,这里有一个特殊情况就是2022年买入的股票不能卖(不满足题目要求的本年最后一个交易日卖出条件)

所以我们将2022年最后一行切出去:
Pandas实现股票分析_第13张图片
然后我们就可以求2022年之前卖出股票到手的钱了:
在这里插入图片描述
我们最后2022年手中剩余的股票需要估量其价值计算到总收益中,
我们这里使用昨天的收盘价作为剩余股票的单价,今天我写博客这天是2022年1月22,所以只卖了一手股票即100支,所以剩余股票价值:
在这里插入图片描述

由以上分析,可得总收益:
在这里插入图片描述

好了,到这里,这篇博客也该跟大家说再见了,创作不易,如果本文对你有用,欢迎收藏加点赞,这真的是对我的肯定与鼓励,也是我坚持下去的动力。
向未来张望的时光,或许孤独而漫长,望努力过后,都是晴朗,光终究会洒在你的身上,你也会灿烂一场,加油啊,少年!

你可能感兴趣的:(数据分析,big,data,大数据,pandas,python)