Pandas: Series - ewm() function
Exponential weighted functions in Pandas
The ewm() function is used to provide exponential weighted functions.
Syntax:
Series.ewm(self, com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0)
Parameters:
Name | Description | Type/Default Value | Required / Optional |
---|---|---|---|
com | Specify decay in terms of center of mass, α=1/(1+com), for com≥0. | float | Optional |
span | Specify decay in terms of span, α=2/(span+1), for span≥1. | float | Optional |
halflife | Specify decay in terms of half-life, α=1−exp(log(0.5)/halflife),forhalflife>0. | float | Optional |
alpha | Specify smoothing factor α directly, 0<α≤1 | float | Optional |
min_periods | Minimum number of observations in window required to have a value (otherwise result is NA). | int Default Value: 0 |
Required |
adjust | Divide by decaying adjustment factor in beginning periods to account for imbalance in relative weightings (viewing EWMA as a moving average) | bool Default Value: True |
Required |
ignore_na | Ignore missing values when calculating weights; specify True to reproduce pre-0.15.0 behavior. | bool Default Value: False |
Required |
axis | The axis to use. The value 0 identifies the rows, and 1 identifies the columns. | {0 or ‘index’, 1 or ‘columns’} Default Value: 0 |
Required |
Returns: DataFrame
A Window sub-classed for the particular operation.
Notes: Exactly one of center of mass, span, half-life, and alpha must be provided. Allowed values and relationship between the parameters are specified in the parameter descriptions above; see the link at the end of this section for a detailed explanation.
When adjust is True (default), weighted averages are calculated using weights (1-alpha)**(n-1), (1-alpha)**(n-2), …, 1-alpha, 1.
When adjust is False, weighted averages are calculated recursively as:
weighted_average[0] = arg[0]; weighted_average[i] = (1-alpha)*weighted_average[i-1] + alpha*arg[i].
When ignore_na is False (default), weights are based on absolute positions. For example, the weights of x and y used in calculating the final weighted average of [x, None, y] are (1-alpha)**2 and 1 (if adjust is True), and (1-alpha)**2 and alpha (if adjust is False).
When ignore_na is True (reproducing pre-0.15.0 behavior), weights are based on relative positions. For example, the weights of x and y used in calculating the final weighted average of [x, None, y] are 1-alpha and 1 (if adjust is True), and 1-alpha and alpha (if adjust is False).
Example:
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({'Q': [0, 2, 4, np.nan, 6]})
df
Output:
Q 0 0.0 1 2.0 2 4.0 3 NaN 4 6.0
Python-Pandas Code:
import numpy as np
import pandas as pd
df = pd.DataFrame({'Q': [0, 2, 4, np.nan, 6]})
df.ewm(com=0.3).mean()
Output:
Q 0 0.000000 1 1.625000 2 3.474654 3 3.474654 4 5.838369
Previous: Expanding transformations in Pandas
Next: Pandas absolute value of column
It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.
https://www.w3resource.com/pandas/series/series-ewm.php
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics