最近常用的几个【行操作】的Pandas函数

这篇具有很好参考价值的文章主要介绍了最近常用的几个【行操作】的Pandas函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在做交易数据的统计分析时,多次用到数据行之间的一些操作,对于其中的细节,简单做了个笔记。

1. shfit函数

shift函数在策略回测代码中经常出现,计算交易信号持仓信号以及资金曲线时都有涉及。
这个函数的主要作用是将某列的值上下移动。
默认情况下,shift函数是向下移动一行,
移动后,新数据列的第一行数据用NaN(空值)填充,原始数据列的最后一行丢弃。

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, 3, 4, 5, 6],
    "B": [2, 3, 4, 2, 4, 5],
    "C": [5, 6, 7, 1, 3, 4],
}, dtype=float)

# 默认 shift()
df["C-shift()"] = df["C"].shift()
print(df)

image.png

也可以在shift函数中指定移动的行数,比如下面的代码下移3行

df["C-shift(3)"] = df["C"].shift(3)
print(df)

image.png
指定的行数为负值时,表示向上移动,此时,下面的部分用NaN填充。

df["C-shift(-3)"] = df["C"].shift(-3)
print(df)

image.png

shift之后一般会在 首部/尾部 产生NaN空值,根据情况看是否需要进一步处理。

2. 不同行数的列赋值

shift函数还是比较好理解的,
下面这个操作比shift稍微复杂一些。

为了简化,创建两个测试数据:

df1 = pd.DataFrame({
    "A": [1, 2, 3, 4, 5, 6],
    "B": [2, 3, 4, 2, 4, 5],
    "C": [5, 6, 7, 1, 3, 4],
})

df2 = pd.DataFrame({
    "D": [110, 100],
})

print(df1, df2)

image.png
df2只有2行df16行,此时,把df2D列赋值给df1时,
pandas会自动比较df1df2index(索引,也就是上图中红色框内部分),只赋值具有相同index的行。

df1["D"] = df2["D"]
print(df1)

image.png

改变df2index,再次赋值看看:

df2 = pd.DataFrame({
    "D": [110, 100],
}, index=[4, 7])

df1["D"] = df2["D"]
print(df1)

image.png
df2index=4时能和df1匹配,所以赋值之后,只有index=4那行赋给了df1
df2index=7那行没匹配上,就直接丢弃了。

所以,不同行数的两个数据集互相赋值时,比不是从上而下按行赋值,而是根据两个数据的index来匹配赋值的。
这时,再回头看计算交易信号的代码,temp虽然经过过滤之后,行数比df要少,但是过滤之后的每行数据会根据对应的index准确的赋给df中相同index的行。

3. pct_change函数

pct_change函数用来计算数据百分比变化的。
具体的计算规则是,当前行数据 减去 上一行数据,得出的结果再 除以 上一行数据
比如:

df = pd.DataFrame({
    "A": [1, 2, 3, 4, 5, 6],
    "B": [2, 3, 4, 2, 4, 5],
    "C": [5, 6, 7, 1, 3, 4],
}, dtype=float)

df["C_percent"] = df["C"].pct_change()

image.png
第一行数据因为没有上一行数据,所以是 NaN
这和shift函数一样,处理完之后,别忘了填充第一行的NaN

同样,pct_change()可以传入参数跨越多行。

df["C_percent"] = df["C"].pct_change(3)

image.png
向上3行,也就是隔两行计算变化百分比,这里就会产生3个NaN

pct_change()还可以传入负值,传入负值时的计算规则变为:
当前行数据 减去 下一行数据,得出的结果再 除以 下一行数据
比如:

df["C_percent"] = df["C"].pct_change(-1)

image.png
这样,空值NaN出现最后一行,因为最后一行没有下一行。

4. cumprod函数

cumprod函数用来计算累积乘积的。
具体的计算规则是,若 当前行 是第一行,则直接用 **当前行数据 **作为 累积乘积结果
当前行 不是第一行,则用 **当前行数据 **乘以 上一行累积乘积结果,得出的结果作为 当前行累积乘积结果
比如:

df["C_cumprod"] = df["C"].cumprod()

image.png
cumprod函数不能像shiftpct_change那样可以传入数值或负数参数,只有默认的逐行累积计算。

5. 总结

在分析交易信息,特别是统计收益和收益率的变化时,上面几个函数能帮助我们极大简化代码,避免写各种复杂的循环。文章来源地址https://www.toymoban.com/news/detail-860994.html

到了这里,关于最近常用的几个【行操作】的Pandas函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv中的几个重要函数

    对于我们经常使用python的同学,尤其还习惯使用numpy库,突然上手opencv c++时,就会感觉想要一个结果,python一行代码搞定,但是c++却无处下手,因此特总结遇到的几个重要opencv函数,方便能够快速获取跟python opencv一样的效果。 1. compare函数 2. findNonZero 3. 有待继续补充 看到感

    2024年01月24日
    浏览(41)
  • 求数组长度的几个函数

    纯纯小白,有错请指出,谢谢。 1、sizeof函数 对于一个给定数组,如:int arr[]={1,2,3,4,5} , 可以利用 sizeof(arr)/sizeof(arr[0]) 的方式来求字符串长度 , 需要注意的是,sizeof 计算出的字符串长度包括了本身隐含的‘\\0’;对于一个自定义输入的数组,如:int arr[10] , 同样的方法并不能

    2024年02月16日
    浏览(45)
  • Hive数据清洗中常见的几个函数

    在Hive中,数据清洗是一个重要的任务之一,通常涉及到对数据进行过滤、修改和转换等操作,以使其更易于使用和分析。常用的数据清洗技术包括:数据去重、空值填充、数据格式化、数据类型转换、数据分区等。这里简单记录几个常用的数据清洗函数,后期会继续增加。

    2024年02月06日
    浏览(52)
  • 金鸣识别将无表格线的图片转为excel的几个常用方案

    我们知道,金鸣识别要将横竖线齐全的表格图片转为excel非常简单,但要是表格线不齐全甚至没有表格线的图片呢?这就没那么容易了,在识别这类图片时,我们一般会使用以下的一种或多种方法进行处理: 1. 基于布局分析:金鸣识别系统可以通过分析文本在图像中的相对位

    2024年02月14日
    浏览(44)
  • LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature

    上一篇文章介绍了几个开源LLM的环境搭建和本地部署,在使用ChatGPT接口或者自己本地部署的LLM大模型的时候,经常会遇到这几个参数,本文简单介绍一下~ temperature top_p top_k 上一篇也有介绍过,这次看到一个不错的图 A recent breakthrough in artificial intelligence (AI) is the introduction

    2024年02月06日
    浏览(46)
  • 分享几个 Selenium 自动化常用操作

    最近工作会用到 selenium 来自动化操作一些重复的工作,那么在用selenium写代码的过程中,又顺手整理了一些常用的操作,分享给大家。 常用元素定位方法 虽然有关selenium定位元素的方法有很多种,但是对于没有深入学习,尤其是没有前端知识的朋友来说,常用的就那几招。

    2024年04月10日
    浏览(41)
  • 几个常用的nosql数据库的操作方式

    dynamoDB 键 partition key:分区键 定义:分区键是用于分布数据存储的主键,每个项(Item)在表中都必须有一个唯一的分区键值。 特点: 唯一性:每个分区键值在表中必须是唯一的,这是因为分区键决定了数据在物理存储中的位置。 数据分布:选择一个良好的分区键可以确保数

    2024年02月08日
    浏览(34)
  • 【QT深入理解】QT中的几种常用的排序函数

    排序函数是一种在编程中常用的函数,它可以对一个序列(如数组,列表,向量等)中的元素进行排序,使其按照一定的顺序排列。排序函数可以根据不同的排序算法,如冒泡排序,选择排序,插入排序,快速排序,归并排序,堆排序等,实现不同的排序效果。排序函数的作

    2024年02月03日
    浏览(47)
  • 【100天精通Python】Day55:Python 数据分析_Pandas数据选取和常用操作

    目录 Pandas数据选择和操作 1 选择列和行 2 过滤数据 3 添加、删除和修改数据

    2024年02月09日
    浏览(58)
  • 【100天精通Python】Day59:Python 数据分析_Pandas高级功能-多层索引创建访问切片和重塑操作,pandas自定义函数和映射功能

    目录 1 多层索引(MultiIndex) 1.1 创建多层索引 1.1.1 从元组创建多层索引

    2024年02月09日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包