我是靠谱客的博主 奋斗铅笔,最近开发中收集的这篇文章主要介绍Python+pandas+每天股票涨了多少,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

第一步:得到某支股票历年来的交易数据

方法见:https://blog.csdn.net/zwy_0309/article/details/108217342
在此,我使用以下脚本得到股票(代码:688022)从开始时间至现在的行情信息:
【脚本】

import tushare as ts
frame = ts.get_k_data('688022', start='2019-07-22')
print(frame)

【结果】
date open close high low volume code
0 2019-07-22 67.60 50.19 68.99 33.53 17681055.0 688022
1 2019-07-23 40.98 44.45 47.55 40.98 6996702.0 688022
2 2019-07-24 45.18 50.72 50.85 45.18 9718576.0 688022
3 2019-07-25 52.00 55.17 60.65 52.00 11794163.0 688022
4 2019-07-26 53.52 51.70 55.45 50.44 7550641.0 688022
… … … … … … … …
279 2020-09-10 38.01 36.79 38.60 36.79 906319.0 688022
280 2020-09-11 36.83 37.30 37.88 36.33 841580.0 688022
281 2020-09-14 37.88 38.43 39.01 37.88 1095643.0 688022
282 2020-09-15 38.66 38.48 38.92 38.22 760755.0 688022
283 2020-09-16 38.80 39.30 39.61 38.01 993362.0 688022
[284 rows x 7 columns]
【说明】

  • 以上结果中只展示了前5条及后5条数据,如果想加载全部的数据,则在代码中增加一句话:pd.set_option('display.max_rows', None)

  • 当然,有时列太多,也会显示不全,如果想显示全,则用pd.set_option('display.max_columns', None)

  • 如果列太多换行了,则增加一个设置语句:pd.set_option('display.width', 500),其中500是整体显示的宽度,这样有的列不会换行。

第二步:设置时间序列索引

【脚本】

frame = frame.set_index('date')
frame.index = pd.to_datetime(frame.index)

【结果】
open close high low volume code
date
2019-07-22 67.60 50.19 68.99 33.53 17681055.0 688022
2019-07-23 40.98 44.45 47.55 40.98 6996702.0 688022

【说明】
在显示上与上面不同,date不再是列标题,而是变成了索引,之前的位置索引0、1、2……不见了。
另外,还需要将索引列转换为时间类型,使用的函数为to_datetime()

第三步:得到每天收盘价比前一天收盘价上涨的费用

方法一:移动收盘价形成新的frame,再将两个frame的close列相减

【脚本】

frame1 = frame.shift(1)
print(frame1)
print(frame['close'] - frame1['close'])

【结果1】
open close high low volume code
date
2019-07-22 NaN NaN NaN NaN NaN NaN
2019-07-23 67.60 50.19 68.99 33.53 17681055.0 688022
2019-07-24 40.98 44.45 47.55 40.98 6996702.0 688022
【结果2】
date
2019-07-22 NaN
2019-07-23 -5.74

2020-09-15 0.05
2020-09-16 0.82

【说明】
1、 对比原frame数据与【结果1】,发现frame1的数据都发生了向下位移1天的情况,而索引没有变化。
2、 【结果2】即为每天收盘价减前一天收盘价的增加量,即为股票涨了多少。
仔细看会发现,这样的结果中,索引列数据不是连续的,而是只有交易日的数据。

方法二:移动索引列形成新的frame,再将两个frame的close列相减

【脚本】

frame2 = frame.shift(-1, freq='D')
print(frame2)
print(frame['close'] - frame2['close'])

【结果1】
open close high low volume code
date
2019-07-21 67.60 50.19 68.99 33.53 17681055.0 688022
2019-07-22 40.98 44.45 47.55 40.98 6996702.0 688022
2019-07-23 45.18 50.72 50.85 45.18 9718576.0 688022
【结果2】
date
2019-07-21 NaN
2019-07-22 5.74
2019-07-23 -6.27
2019-07-24 -4.45
2019-07-25 3.47

2020-09-11 NaN
2020-09-13 NaN
2020-09-14 -0.05
2020-09-15 -0.82
2020-09-16 NaN
【说明】

  • 索引列向后移动时,索引列自动补了一条记录‘2019-07-21’,由此可以想到,后面每一周同样会补两个日期,而这两个日期却不是交易日,在原frame中是不存在的。
  • 由【结果2】可以看出,因为日期索引的移动与自动补充,会导致非交易日数据相减结果为“NaN”。这一情况,在方法一中是不存在的。

总结

以上方法,比循环使用“第i行数据减第i-1行数据”的方法执行效率高。
So,记住**frame.shift()**函数!

最后

以上就是奋斗铅笔为你收集整理的Python+pandas+每天股票涨了多少的全部内容,希望文章能够帮你解决Python+pandas+每天股票涨了多少所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部