具有nan值的pandas ewma函数

时间:2015-07-08 04:11:54

标签: pandas

我能够为没有nan值的系列重现pandas的ewma函数,但我对ewma如何在其间使用nan值感到困惑。

例如,对于系列:[nan,2,nan,4,5],具有质心25的ewma给出:[nan, 2, 2, 3.0392006149116,3.72707131594179]

我可以看到是否存在nan值,那么它只会向前填充。但是对于nan值之后的数字(在这种情况下为4),我不确定ewma如何给出3.0392?

似乎没有在[2,4]或[2,2,4]上应用ewma。有人能告诉我它是如何计算的吗?谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

我认为这是adjustpd.ewma()参数的意外行为。您可以将其设置为False,以使标准指数移动平均线公式有效。

import pandas as pd
import numpy as np

s = pd.Series([np.nan, 2, np.nan, 4, 5])

ema = pd.ewma(s, com=25, adjust=False)

# formula
# EMA_t = alpha*S_t + (1-alpha)*EMA_{t-1}
alpha = 1/(1+25)
ema[4] == alpha*s[4] + (1-alpha)*ema[3]

Out[64]: True