多窗口大小和Ticker分组的Pandas滚动平均值

最近一个学弟在在进行数据分析时,经常需要计算不同时间窗口的滚动平均线。当数据是多维度的,比如包含多个股票或商品的每日价格时,我们可能需要为每个维度计算滚动平均线。然而,如果我们使用传统的groupby和apply方法,可能会遇到一些问题。而且也是常见得问题。

在这里插入图片描述

问题背景

其中一个问题是,apply方法只能对整个分组对象应用一个函数,而不能对每个分组中的每个元素应用函数。这意味着,如果我们想为每个股票计算多个时间窗口的滚动平均线,我们需要编写一个自定义函数,该函数可以接受一个时间序列作为输入,并返回一个包含多个滚动平均线的DataFrame。

另一个问题是,如果我们使用transform方法,可能会导致数据维度不匹配的问题。这是因为transform方法会将函数的结果应用到整个分组对象,而不是每个分组中的每个元素。这意味着,如果我们想为每个股票计算多个时间窗口的滚动平均线,transform方法会返回一个包含多个列的DataFrame,而这些列的长度与分组对象相同。这可能导致数据维度不匹配,难以进行后续分析。

解决方案

为了解决这些问题,我们可以使用如下方法:

1、编写一个自定义函数,该函数可以接受一个时间序列作为输入,并返回一个包含多个滚动平均线的DataFrame。

2、使用groupby和apply方法,将自定义函数应用到每个分组对象中的每个元素。

以下是一个示例代码:

def my_RollMeans(x):
    w = [1, 2, 3]
    s = pd.Series(x)
    Bob = pd.DataFrame([s.rolling(w1).mean().rename('Price_' + str(w1)) for w1 in w]).T
    return Bob

df3.groupby('Ticker').apply(lambda x: my_RollMeans(x.Price)).fillna(0)

这个代码首先定义了一个自定义函数my_RollMeans,该函数可以接受一个时间序列作为输入,并返回一个包含多个滚动平均线的DataFrame。然后,使用groupby和apply方法,将my_RollMeans函数应用到每个分组对象中的每个元素。这样,就可以为每个股票计算多个时间窗口的滚动平均线,并避免数据维度不匹配的问题。

运行这个代码,可以得到以下输出:

                   Price_1  Price_2  Price_3
Ticker Date                                 
ABC    2018-07-01      9.0      0.0  0.000000
       2018-07-02      8.0      8.5  0.000000
       2018-07-03      7.0      7.5  8.000000
       2018-07-04      8.0      7.5  7.666667
       2018-07-05      8.0      8.0  7.666667
HIJ    2018-07-01      8.0      0.0  0.000000
       2018-07-02      9.0      8.5  0.000000
       2018-07-03      5.0      7.0  7.333333
       2018-07-04      6.0      5.5  6.666667
       2018-07-05      7.0      6.5  6.000000
XYZ    2018-07-01      9.0      0.0  0.000000
       2018-07-02      5.0      7.0  0.000000
       2018-07-03      9.0      7.0  7.666667
       2018-07-04      8.0      8.5  7.333333
       2018-07-05      6.0      7.0  7.666667

在这个输出中,我们可以看到,为每个股票计算了三个时间窗口的滚动平均线,分别为1天、2天和3天。

滚动平均线(Moving Average)是一种用于平滑时间序列数据的常见统计方法。它通过计算数据序列中特定窗口范围内数据点的平均值,来消除数据中的短期波动,突出长期趋势。这种平滑技术有助于识别数据中的趋势和模式。

滚动平均线的计算方法是,对于给定的窗口大小(通常是时间单位),从数据序列的起始点开始,每次将窗口内的数据点的平均值作为平均线的一个点,并逐步向序列的末尾滑动。这样可以生成一条平滑的曲线,反映了数据的趋势。

滚动平均线在数据分析和时间序列预测中经常被使用,特别是在金融领域,用于消除噪音、捕捉趋势,并作为交易策略的基础之一。如果有更好得建议欢迎评论区留言讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/344254.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Pycharm运行提示(运行‘Python测试(00.py内)‘(u)

为什么有时候我在pycharm中运行代码会出现图片中的问题? 我们该如何改过来? 很简单 点击文件-设置 点击Python集成工具,在默认测试运行程序里修改为Unittest即可 再次运行代码就会显示正常的运行 你的pycharm可能是英文 如何英文变中文&…

第二证券:A股将迎“更加有力有效措施”

2024年开年以来,A股商场接连弱势格局,上证指数接连将2900点、2800点整数关口击穿。就在出资者缺少决心之际,商场总算迎来方针暖意。1月22日举行的国务院常务会议提出,要采纳愈加有力有用办法,促进本钱商场平稳健康开展…

MySQL JSON数据类型全解析(JSON datatype and functions)

JSON(JavaScript Object Notation)是一种常见的信息交换格式,其简单易读且非常适合程序处理。MySQL从5.7版本开始支持JSON数据类型,本文对MySQL中JSON数据类型的使用进行一个总结。 目录 一、MySQL中的JSON 1.1 JSON数据格式 1.2 …

Codeforces Round 812 (Div. 2) ---- C. Build Permutation --- 题解

目录 C. Build Permutation 题目描述: ​编辑 思路解析: 代码实现: C. Build Permutation 题目描述: 思路解析: 先证明在任何情况下答案均存在。 假设我们所求的为 m m1 m2.....n 的排列,我们称不小于n…

做跨境电商,为什么要建独立站,2024年的机会在哪里?一次性讲清楚...

近年来,跨境电商的商家们面临越来越大的平台政策压力,商家们纷纷把眼光聚焦到搭建独立站上,眼下独立站已经成为出海卖家的标配。那什么是“独立站”?对比平台电商,独立站又有什么优势?以及新手该如何入门独…

git的使用(idea中)

文章目录 Git分布式版本控制工具1、目标2、概述2.1、开发中的实际场景2.2、版本控制器的方式2.3、SVM2.4、Git2.5、Git工作流程 3、Git安装与常用命令3.1、Git环境配置3.1.1 下载与安装3.1.2基本配置3.1.3为常用指令配置别名(可选)3.1.4解决GitBash乱码问题 3.2、获取本地仓库3…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-1最优控制问题与性能指标 1. 最优控制问题与性能指标2. 动态规划 Dynamic Programming2.1 基本概念2.2 代码详解2.3 简单一维案例 3. 线性二次型调节器&#xff…

notepad++: 插件fingertext 来创建代码块

下载 最新版可以软件里下,或者官网下 https://sourceforge.net/projects/fingertext/ 下了之后,解压压缩包,得到一个 .all 类型的文件,放在notepad 这个文件夹里: 使用 这样输入mod,再tab键,…

使用Unity创建VisionPro应用

1、下载特定Unity版本 Unity账号需要是Pro账号,普通账号不行,目前只支持这1个Unity版本,不要下载任何其它版本:unityhub://2022.3.11f1/d00248457e15) 其它条件:使用Mac电脑M系列芯片,XCode15 Beta2及以上 参考资料: 苹果官网:苹果官网 Unity官网:Unity官网 官方教程…

一览2023 Web3 风云录

撰文:JIN,Techub News 相关推荐:2024年Web3.0数字资产六大趋势(完整版) 2023 年的加密货币市场充满了波折和挑战。年初,全球最大的加密货币风投机构 DCG 深陷债务危机;年末又见证了比特币一路…

LeetCode.2865. 美丽塔 I

题目 题目链接 分析 闲谈:每次读 LeetCode 的题目描述都要费老大劲,o(╥﹏╥)o 题意:这个其实意思就是以数组的每一位作为最高点,这个点(数字)左右两边的数字都不能大于这个数字(可以等于),…

什么是电源纹波?如何测量电源纹波?

一、电源纹波概念 1.1 什么是纹波 电源纹波是指叠加在直流电源输出的电压或电流中的交流成分,是一种周期性的波动信号。好比平静的湖面有一阵风吹过,带起阵阵水波。这就是纹波的概念。 如下图示,使用示波器测量纹波时,上面的尖锐…

听神经瘤的听力学表现

听神经瘤的听力学诊断 听神经瘤的听力学表型多样,听力正常者不能排除听神经瘤;听力损失程度不能预判肿瘤大小;纯音测听与言语识别率不一致应警惕蜗后病变;听性脑干诱发电位诊断听神经瘤敏感度随肿瘤增大而增加。 一.纯…

19.云原生CICD之ArgoCD入门CD过程实战

云原生专栏大纲 文章目录 ArgoCDArgoCD 简介GitOps介绍Argo CD 的工作流程argocd和jinkens对比kustomize介绍ArgoCD和kustomize关系 安装argocdargocd控制台介绍首页应用创建表单SYNC OPTIONS(同步选项)SYNC POLICY(同步策略) 应…

Linux中文件属性的获取(stat、chmod、Istat、fstat函数的使用)

修改文件权限 函数如下&#xff1a; chmod/fchmod函数用来修改文件的访问权限: #include <sys/stat.h> int chmod(const char *path, mode_t mode); int fchmod(int fd, mode_t mode); 成功时返回0&#xff1b;出错时返回EOF 注意&#xff1a;在vmware和windows共享的文…

亚信安慧AntDB:AntDB-M元数据锁之锁的获取(三)

5 锁的获取 5.1 锁的强弱 当线程已经持有的锁比新申请的锁更强时&#xff0c;认为已经持有了锁&#xff0c;无需再对申请锁类型加锁。锁的强弱指持有的锁与其他锁的不兼容集合大小&#xff0c;集合相同锁相同&#xff0c;集合更大锁更强&#xff0c;否则无强弱关系。通过锁的…

Find My手套|苹果Find My技术与手套结合,智能防丢,全球定位

手套是手部保暖或劳动保护用品&#xff0c;也有装饰用的。手套是个很特别的东西&#xff0c;当初它的产生并不是为了实用&#xff0c;只是到近代&#xff0c;它才成了寒冷地区保温必备之物&#xff0c;或是医疗防菌、工业防护用品。手套按照制作方法分为缝制、针织、浸胶等。如…

第二证券:股指预计维持蓄势震荡格局 关注通信设备、软件开发等板块

第二证券以为&#xff0c;沪指盘中下探近期新低后快速反弹&#xff0c;商场抛压力度逐步削弱&#xff0c;跟着北上资金逐步回流&#xff0c;资金抄底志愿回归。从周线等级看&#xff0c;指数回踩2020年3月份低位&#xff0c;做空力气有逐步削弱痕迹&#xff0c;短期将有望构成周…

Redis(发布订阅、事务、redis整合springboot、集成 Spring Cache)

目录 一.redis的发布订阅 1、什么 是发布和订阅 2、Redis的发布和订阅 3、发布订阅的代码实现 二.Redis事务 1.事务简介 1、在事务执行之前 如果监听的key的值有变化就不能执行 2、在事务执行之前 如果监听的key的值没有变化就能执行 3、Exec之前就出现错误 4、Exec之…

Kafka-服务端-副本机制

Kafka从0.8版本开始引入副本(Replica)的机制&#xff0c;其目的是为了增加Kafka集群的高可用性。 Kafka实现副本机制之后&#xff0c;每个分区可以有多个副本&#xff0c;并且会从其副本集合(Assigned Replica,AR)中选出一个副本作为Leader副本&#xff0c;所有的读写请求都由…
最新文章