maxframe.dataframe.Series.ewm#

Series.ewm(com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0)#

提供指数加权函数。

参数:
  • com (float, optional) -- 以质心为中心指定衰减,\(\alpha = 1 / (1 + com),\text{ 其中 } com \geq 0\)

  • span (float, optional) -- 以跨度指定衰减,\(\alpha = 2 / (span + 1),\text{ 其中 } span \geq 1\)

  • halflife (float, optional) -- 以半衰期指定衰减,\(\alpha = 1 - exp(log(0.5) / halflife),\text{其中} halflife > 0\)

  • alpha (float, optional) -- 直接指定平滑因子 \(\alpha\),其中 \(0 < \alpha \leq 1\)

  • min_periods (int, default 0) -- 窗口中需要有值的最小观测数(否则结果为 NA)。

  • adjust (bool, default True) -- 在初期通过递减调整因子进行除法,以弥补相对权重不平衡的问题(将 EWMA 视为移动平均)。

  • ignore_na (bool, default False) -- 计算权重时忽略缺失值;指定 True 以重现 0.15.0 之前的行为。

  • axis ({0 or 'index', 1 or 'columns'}, default 0) -- 要使用的轴。值 0 表示行,1 表示列。

返回:

为特定操作子类化的 Window 对象。

返回类型:

DataFrame

参见

rolling

提供滚动窗口计算。

expanding

提供扩展变换。

备注

必须恰好提供质心、跨度、半衰期和 alpha 中的一个。

允许的值及参数之间的关系已在上述参数描述中说明;有关详细解释,请参阅本节末尾的链接。

当 adjust 为 True(默认)时,使用权重 (1-alpha)**(n-1), (1-alpha)**(n-2), ..., 1-alpha, 1 计算加权平均值。

当 adjust 为 False 时,加权平均值按如下方式递归计算:

加权平均值[0] = arg[0]; 加权平均值[i] = (1-alpha)*加权平均值[i-1] + alpha*arg[i].

当 ignore_na 为 False(默认)时,权重基于绝对位置。例如,在计算 [x, None, y] 的最终加权平均值时,x 和 y 的权重分别为 (1-alpha)**2 和 1(如果 adjust 为 True),以及 (1-alpha)**2 和 alpha(如果 adjust 为 False)。

当 ignore_na 为 True(重现 0.15.0 之前的行为)时,权重基于相对位置。例如,在计算 [x, None, y] 的最终加权平均值时,x 和 y 的权重分别为 1-alpha 和 1(如果 adjust 为 True),以及 1-alpha 和 alpha(如果 adjust 为 False)。

更多详情请参见 https://pandas.pydata.org/pandas-docs/stable/user_guide/computation.html#exponentially-weighted-windows

示例

>>> import numpy as np
>>> import maxframe.dataframe as md
>>> df = md.DataFrame({'B': [0, 1, 2, np.nan, 4]})
>>> df.execute()
     B
0  0.0
1  1.0
2  2.0
3  NaN
4  4.0
>>> df.ewm(com=0.5).mean().execute()
          B
0  0.000000
1  0.750000
2  1.615385
3  1.615385
4  3.670213