maxframe.dataframe.DataFrame.ewm#

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

提供指数加权函数。

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

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

  • halflife (float, optional) -- 以半衰期(half-life)的形式指定衰减,\(\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