Source code for skferm.smoothing.methods
import pandas as pd
[docs]
def rolling_average(df: pd.DataFrame, x: str, y: str, window: int = 5, center: bool = True, **kwargs) -> pd.DataFrame:
"""Rolling average smoothing."""
df = df.sort_values(x).copy()
df[f"{y}_smooth"] = df[y].rolling(window=window, center=center, min_periods=1).mean()
return df
[docs]
def exponential_moving_average(df: pd.DataFrame, x: str, y: str, span: int = 10, **kwargs) -> pd.DataFrame:
"""Exponential moving average smoothing."""
df = df.sort_values(x).copy()
df[f"{y}_smooth"] = df[y].ewm(span=span, adjust=False).mean()
return df
[docs]
def savitzky_golay_smooth(
df: pd.DataFrame, x: str, y: str, window_length: int = 5, polyorder: int = 2, **kwargs
) -> pd.DataFrame:
"""Savitzky-Golay smoothing."""
from scipy.signal import savgol_filter
df = df.sort_values(x).copy()
df[f"{y}_smooth"] = savgol_filter(df[y], window_length, polyorder)
return df