问题标签 [rolling-sum]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - pandas:两列的条件滚动总和
我想计算一个衡量足球队势头的指标,在这种情况下是某支球队在最近 3 场比赛中获得的分数。我的数据如下所示:
这只是一些巴塞罗那比赛的示例。所以基本上我想要结束的是两个额外的列(比如 Home_Momentum、Away_Momentum),它们将这支特定球队在最近 3 场比赛中获得的分数相加(不包括当前一场)。所以它应该看起来像这样:
其中 x (y) 是拉斯帕尔马斯 (马德里) 在过去 3 场比赛中获得的积分总和。
到目前为止,我想出的是:
但这样做的问题是它没有考虑球队的客场比赛。
你有什么想法如何解决这个问题吗?
python - 熊猫数据框中前 N 行的条件均值和总和
关注的是这个示例性的 pandas 数据框:
无论何时Trigger
,True
我希望计算最后 3 个(从当前)有效测量值的总和和平均值。如果该列Valid
是,则测量被认为是有效的True
。因此,让我们使用上述数据框中的两个示例来澄清一下:
Index 3
2,1,0
:应该使用指数。预期的Sum = 9.0, Mean = 3.0
Index 7
7,6,5
:应该使用指数。预期的Sum = 6.0, Mean = 2.0
我尝试过pandas.rolling
创建新的移位列,但没有成功。请参阅我的测试中的以下摘录(应该直接运行):
非常感谢任何帮助或解决方案。谢谢和干杯!
编辑:澄清:这是我期望的结果数据框:
EDIT2:另一个澄清:
我确实没有算错,而是我没有尽可能清楚地表达我的意图。这是使用相同数据框的另一种尝试:
让我们先看一下列:我们在索引 3(绿色矩形)中Trigger
找到第一个。True
所以索引 3 是我们开始寻找的点。索引 3 处没有有效的测量值(列Valid
是False
; 红色矩形)。所以,我们开始往前追溯,直到我们积累了三行,其中Valid
是True
。这发生在索引 2,1 和 0 上。对于这三个索引,我们计算列的总和和平均值Measurement
(蓝色矩形):
- 总和:2.0 + 4.0 + 3.0 = 9.0
- 平均值:(2.0 + 4.0 + 3.0) / 3 = 3.0
现在我们开始这个小算法的下一次迭代:再次查找列中的下True
一个Trigger
。我们在索引 7(绿色矩形)处找到它。在索引 7 处还有一个有效的测量值,因此我们这次将其包括在内。对于我们的计算,我们使用索引 7,6 和 5(绿色矩形),因此得到:
- 总和:1.0 + 2.0 + 3.0 = 6.0
- 平均值:(1.0 + 2.0 + 3.0) / 3 = 2.0
我希望,这对这个小问题有更多的了解。
python - 使用时间序列时在熊猫滚动中使用中心
我正在尝试在 pandas 滚动函数中设置 center=True 时间序列:
但输出是:
预期输出是由以下生成的:
但是使用日期时间之类的偏移量,因为它简化了我的其他代码的一部分(此处未发布)。
有没有替代的解决方案?
谢谢
arrays - 计算数组元素的总和并在MATLAB中为整个数组重复
我有一个A
大小为 7812x1 的向量,想计算长度为 21 的固定窗口的总和(所以 372 个块)。应该重申这一点,以便输出应该返回一个大小为 372x1 的向量。
我有t=7812
, p=372
, w=21
;
但是,此代码不起作用。我的想法是该部分((t*w-w+1):(t*w))
允许像滚动窗口这样的东西。窗口的长度为 21,因此实际上不需要用变量表示 is,但我认为它保持了一定的灵活性。
我已经看到可能相关的问题(例如向量的部分总和),但我不确定这是否会产生所需的输出。
r - 计算 r 数据表中的滚动除法
我有一个这样的数据表:
可以从以下代码创建示例:
对于每组中的每一行,我想:
- 在列中取值
a
- 将它除以列中
a
滞后 2 的值并减去 1 - 将它除以列中
a
滞后 4 的值并减去 1 - 将其除以滞后 6 列中的值
a
并减去 1 - 对步骤 2-4 的结果求和并将其返回到新列中
所以对于第 1-6 行,我会有NA
, 然后7/5 + 7/3 + 7/1 - 3
, 8/6 + 8/4 + 8/2 - 3
, 9/7 + 9/5 + 9/3 - 3
,10/8 + 10/6 + 10/4 - 3
因此,根据第一个块中报告的表,我想得到一个新列,比如metric_1
,它将在第 10 行具有值2.416667
请注意,列中的值a
实际上并不对应于行号,而是一些测量值。
最终输出将如下所示:
如果我需要对向量中的一些值求和,我已经尝试了一些版本,Reduce
它们的工作原理就像一个冠军,但我无法调整它以使我能够像这样进行除法。
rolling-sum - 从滚动总和中获取原始值
假设我有一个很长的非负数列表(X1,X2,...),但我不知道列表中的值。我所知道的是元素的滚动总和(假设:原始列表中所有 5 个连续元素的总和)因此,我们知道彼此相距 5 个值的值的差异。
如何计算原始值?
我知道方程比变量少(在这种情况下正好少 4 个),但我对它们是非负的变量有一个限制,这应该有助于我思考。
例如:如果 X6=X1-4,则意味着 X1 至少为 4。如果列表足够长,这些限制不应该有助于计算准确的原始值吗?
python - 计算熊猫滚动窗口数据
我在使用简单的自建函数基于熊猫滚动窗口的数据处理方面遇到了一些问题。我有三列值,并希望使用简单的列表理解来计算其中的一列以进行进一步处理。在我的示例中,我简单地总结了为每个窗口产生一个值的值。但似乎列表理解失败了......
import pandas as pd
import numpy as np
from collections import Counter as count
df = pd.DataFrame(np.random.randint(0,100,size=(50, 3)), columns=list('ABC'))
def my_test(data):
Abs = [int(np.sqrt(x[0]**2+x[1]**2+x[2]**2)/10) for x in data]
return sum(Abs)
entr = df.rolling(10).apply(my_test)
这是我在执行函数时收到的错误消息:
知道如何访问滚动数据吗?
python - 窗口顶部的 Python Pandas 滚动总和位置值
我想使用熊猫的滚动方法。我需要稍作调整,但是,我希望将“值”放在“窗口”的顶部。
目前,我正在使用这个:
这是产生这个:
我真正想要的:
请注意,总和值位于窗口的开头(位置 1),而不是结尾(位置 4)
如果滚动是错误的方法,很好,任何方法都会有所帮助。我知道如何以“pythonic”的方式(使用 for 循环)来做到这一点,我只是希望使用 pandas 的数据框来做到这一点。
先感谢您
python - 具有时变窗口的python/pandas滚动总和
我有一个数组
和一个窗口列表(长度为 N)
arr
是否可以对存储的时变窗口进行滚动和计算windows
?
例如,在 t=3 时,您有arr=[1,2,3]
,window=1
因此这表示返回 1 天的滚动总和,这样out[2] = 3
在t=2
,你有arr = [1,2]
并且 window=2 所以这将表示一个 2 天的滚动总和,这样out[1]=3
r - RcppRoll 窗口打开
我一直在使用 RcppRoll 包进行滚动求和,但我想找到一个函数/选项,例如,它可以让我将这样的向量 [1 2 3 4 5]
转换 [1 3 6 9 12]
为窗口 3。
目前,我一直在使用 roll_sum,它返回
[NA NA 6 9 12]
3 的窗口。
似乎使用类似的东西会起作用rollapplyr(x, 3, sum, partial=TRUE)
,但这对于我最终需要在数百万行上运行的东西来说太慢了。