environmentaltools.temporal.transform
- environmentaltools.temporal.transform(data: DataFrame, params: dict)[source]
Apply power transformation to normalize data distribution.
Transforms data using Box-Cox or Yeo-Johnson power transformations to make the distribution more Gaussian-like. Useful for stabilizing variance and improving model fit.
- Parameters:
data (pd.DataFrame or pd.Series) – Input time series data to transform. If Series, converts to DataFrame.
params (dict) –
Configuration dictionary with ‘transform’ key containing:
- ’method’str
Transformation method: ‘box-cox’ or ‘yeo-johnson’
- ’lambda’float, optional
Transformation parameter. If provided, uses this value; otherwise computes optimal lambda via MLE
- Returns:
data (pd.DataFrame) – Transformed data with same index as input
params (dict) – Updated params dictionary with ‘transform’][‘lambda’] set to the transformation parameter used
Notes
Power transformations:
Box-Cox: For positive data only. y = (x^λ - 1) / λ for λ ≠ 0
Yeo-Johnson: Handles positive and negative data
The lambda parameter is estimated via maximum likelihood if not provided.
Transformation does NOT standardize (mean=0, std=1); only applies the power transformation.
See also
inverse_transformReverse the transformation
sklearn.preprocessing.PowerTransformerUnderlying implementation
Examples
>>> import pandas as pd >>> data = pd.DataFrame({'Hs': [0.5, 1.2, 2.3, 1.8, 3.1]}) >>> params = {'transform': {'method': 'box-cox'}} >>> data_norm, params = transform(data, params) >>> print(f"Lambda: {params['transform']['lambda']:.3f}")