Pandas实现股票分析

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

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

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

pip install tushare

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

首先获取九安医疗股票的历史行情数据:
在这里插入图片描述

结果:在这里插入图片描述

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

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

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

在这里插入图片描述
2. 输出该股票所有开盘比前日收盘跌幅超过2%的日期:

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

在这里插入图片描述
3.假如我从2015年1月1日开始,每月第一个交易日买入1手股票,每年最后一个交易日卖出所有股票,到今天为止,我的收益如何?

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

在这里插入图片描述

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

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

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

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

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

  • 9
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰履踏青云

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值