Python “指数移动平均(ewm)权重”;“坚持”;通过整个数据系列? 我试图通过计算最新的“最近”值来计算大熊猫数据系列上的EWMS的处理时间(并且确保有足够的值这样做),但是似乎每个单元格都更新了权重,而不是像预期的那样在每个窗口中“重置”,我的意思是,考虑下面的代码: import numpy as np import pandas as pd nvalues = 2**26 window_size = 256 values = pd.Series(np.random.uniform(0, 1, nvalues))

Python “指数移动平均(ewm)权重”;“坚持”;通过整个数据系列? 我试图通过计算最新的“最近”值来计算大熊猫数据系列上的EWMS的处理时间(并且确保有足够的值这样做),但是似乎每个单元格都更新了权重,而不是像预期的那样在每个窗口中“重置”,我的意思是,考虑下面的代码: import numpy as np import pandas as pd nvalues = 2**26 window_size = 256 values = pd.Series(np.random.uniform(0, 1, nvalues)),python,pandas,Python,Pandas,有了这个系列,我现在想使用以下公式计算指数移动平均值: values.ewm(span=window_size, min_periods=window_size).mean() 这给了我类似的东西: 0 NaN 1 NaN 2 NaN 3 NaN 4 NaN ... 67108859 0.499803 67

有了这个系列,我现在想使用以下公式计算指数移动平均值:

values.ewm(span=window_size, min_periods=window_size).mean()
这给了我类似的东西:

0                NaN
1                NaN
2                NaN
3                NaN
4                NaN
              ...   
67108859    0.499803
67108860    0.502831
67108861    0.498991
67108862    0.496970
67108863    0.498349
Length: 67108864, dtype: float64
67108608         NaN
67108609         NaN
67108610         NaN
67108611         NaN
67108612         NaN
              ...   
67108859         NaN
67108860         NaN
67108861         NaN
67108862         NaN
67108863    0.497729
Length: 256, dtype: float64
计算所有这些值需要相对较长的时间,因此需要存储此结果,并且只附加将来的更新。例如,为了计算最后一个值,我只需要使用最后一个“窗口大小”值调用该方法

返回如下内容:

0                NaN
1                NaN
2                NaN
3                NaN
4                NaN
              ...   
67108859    0.499803
67108860    0.502831
67108861    0.498991
67108862    0.496970
67108863    0.498349
Length: 67108864, dtype: float64
67108608         NaN
67108609         NaN
67108610         NaN
67108611         NaN
67108612         NaN
              ...   
67108859         NaN
67108860         NaN
67108861         NaN
67108862         NaN
67108863    0.497729
Length: 256, dtype: float64

正如所料,除了最后一个输入之外,其他所有输入都是NaN,这种方式相对更快,但正如您所看到的,EWM[67108863]在每个调用中都“非常”不同,我不知道为什么,我相信文档对我来说也不清楚span参数是如何工作的,其他一些类似的stackOverflow帖子建议在ewm方法中根本没有窗口,这让我更加困惑。有人能澄清这一点吗?

一般来说,在计算加权平均值时,您需要的不仅仅是窗口的大小,因为计算使用的是该时段之前的数据

在您的情况下,如果使用窗口大小的5倍,您将得到相同的最后一个数字

完整数据集:67108864行

values.ewm(span=window_size, min_periods=window_size).mean()

0               NaN
1               NaN
2               NaN
3               NaN
4               NaN
             ...
67108859   0.477958
67108860   0.479359
67108861   0.478963
67108862   0.479344
67108863   0.476700
Length: 67108864, dtype: float64
减少的数据集:1280行(请参见切片中的*5)


根据您所寻求的准确性,您可以进一步缩减此值。

docs:我读到,对于我来说,Yt表达式上的alpha值对于每个“跨度”大小的窗口都将被“重置”,但似乎并非如此。为什么,我认为ewm背后的想法类似于sma,其中每个值都是在给定的窗口上计算的,除了元素乘以衰减的权重,这对于每个窗口都是相同的?此外,这是否意味着当您为整个数据集计算de ewm时,由于不知道数据集的先前值,返回的前几个值是“错误的”?它感觉数据变得不一致。股票图表对如何计算加权平均值有相当好的描述。例如,它们从sma开始,然后开始称重。因此,当我进行分析时,我会删除前n行以确保数据准确httpss://school.stockcharts.com/doku.php?id=technical_indicators:moving_averages