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_transform

Reverse the transformation

sklearn.preprocessing.PowerTransformer

Underlying 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}")