Python+pandas+每天股票涨了多少

2023-05-16

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

方法见: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()**函数!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python+pandas+每天股票涨了多少 的相关文章

  • Python 转换矩阵

    我有一个如下所示的列表 2 1 3 1 2 3 1 2 2 2 我想要的是一个转换矩阵 它向我显示如下序列 1 后跟 1 的频率是多少 1 后面跟着 2 的频率是多少 1 后跟 3 的频率是多少 2 后跟 1 的频率是多少 2 后跟 2 的
  • 如何使用一个模型中间层的输出作为另一个模型的输入?

    我训练一个模型A并尝试使用中间层的输出name layer x 作为模型的附加输入B 我尝试像 Keras 文档一样使用中间层的输出https keras io getting started faq how can i obtain th
  • Python - Unicode 到 ASCII 的转换

    我无法在不丢失数据的情况下将以下 Unicode 转换为 ASCII u ABRA xc3O JOS xc9 I tried encode and decode他们不会这么做 有人有建议吗 Unicode 字符u xce0 and u xc
  • ValueError:数据必须为正(boxcox scipy)

    我正在尝试将我的数据集转换为正态分布 0 8 298511e 03 1 3 055319e 01 2 6 938647e 02 3 2 904091e 02 4 7 422441e 02 5 6 074046e 02 6 9 265747e
  • 数据框中 .map(str) 和 .astype(str) 有什么区别

    我有一个数据框 其列名为 col1 和 col2 的整数类型条目 我想将 col1 和 col2 的条目以及其间的 点 连接起来 我搜索并发现添加两个列条目 df col df col1 map str df col2 map str 并添
  • 如何用正则表达式替换多个匹配/组?

    通常我们会编写以下内容来替换一场比赛 namesRegex re compile r is life re I replaced namesRegex sub r butter There is no life in the void pr
  • Python-验证我的文档 xls 中是否存在工作表

    我正在尝试在空闲时间设计一个小程序 加载 xls 文件 然后在要扫描的文档中选择一张纸 步骤1 用户导入 xls文件 导入程序后检查文件是否存在 我能做到的 第 2 步 我要求用户提供要分析的文档表 xls 的名称 这就是它停止的地方 该程
  • 为什么将模块级代码放入函数中然后调用该函数在Python中速度更快?

    在亚历克斯 马尔泰利的回应中使 Python 脚本面向对象 https stackoverflow com questions 1813117 making a python script object oriented 他提到在 Pyth
  • 使用 if 语句的网格网格和用户定义函数的真值不明确

    假设我有一个函数f x y 足够光滑 然而 有些值仅在有限的意义上存在 以sin x x的价值x 0只存在于极限 x gt 0 中 在一般情况下 我用一个来处理这个问题if陈述 如果我在情节中使用它meshgrid我收到一条错误消息 Val
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • python Recipe:列出最接近等于值的项[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 考虑像这样的列表 0 3 7 10 12 15 19 21 我想获得最接近任何值的最近的最小数字 所以如果我通过4 我会得到3 如果我
  • Seaborn 中没有线性拟合的散点图

    我想知道是否有办法关闭seaborn中的线性拟合lmplot或者是否有一个等效函数可以生成散点图 当然 我也可以使用 matplotlib 但是 我发现 seaborn 中的语法和美学非常吸引人 例如 我想绘制以下情节 import sea
  • 如何在matplotlib中调整x轴

    I have a graph like this x轴上的数据表示小时 所以我希望x轴设置为0 24 48 72 而不是现在的值 很难看到 0 100 之间的数据 fig1 plt figure ax fig1 add subplot 11
  • 如何展平解析树并存储在字符串中以进行进一步的字符串操作 python nltk

    我正在尝试从树结构中获取扁平树 如下所示 我想将整个树放在一个字符串中 就像没有检测到坏树错误一样 S NP SBJ NP DT The JJ high JJ seven day PP IN of NP DT the CD 400 NNS
  • 如何创建用于霍夫曼编码和解码的树?

    对于我的作业 我将对霍夫曼树进行编码和解码 我在创建树时遇到问题 并且陷入困境 不要介意打印语句 它们只是让我测试并查看函数运行时的输出是什么 对于第一个 for 循环 我从主块中用于测试的文本文件中获取了所有值和索引 在第二个 for 循
  • 无需访问 Internet 即可部署 Django 的简单方法?

    我拥有的是使用 Django 开发的 Intranet 站点的开发版本以及放置在 virtualenv 中的一些外部库 它运行良好 我可以在任何具有互联网连接的计算机上使用相同的参数 使用 pip 轻松设置 virtualenv 但是 不幸
  • 是否可以使用 Anaconda 包作为 Google Cloud Functions 的依赖项?

    我正在使用 Python 运行时编写 Google Cloud Function 我需要包含一些无法使用的依赖项pip 如文档中所述here https cloud google com functions docs writing spe
  • Python 相当于 Scala 案例类

    Python 中是否有与 Scala 的 Case Class 等效的东西 就像自动生成分配给字段而无需编写样板的构造函数一样 当前执行此操作的现代方法 从 Python 3 7 开始 是使用数据类 https www python org
  • 在Python中停止ThreadPool中的进程

    我一直在尝试为控制某些硬件的库编写一个交互式包装器 用于 ipython 有些调用对 IO 的影响很大 因此并行执行任务是有意义的 使用 ThreadPool 几乎 效果很好 from multiprocessing pool import
  • Biopython 可以执行 Seq.find() 来解释歧义代码吗

    我希望能够在 Seq 对象中搜索考虑歧义代码的子序列 Seq 对象 例如 以下内容应该是正确的 from Bio Seq import Seq from Bio Alphabet IUPAC import IUPACAmbiguousDNA

随机推荐