#!/usr/bin/env python
import pandas as pd
from sklearn.preprocessing import StandardScaler
from agora.abc import ParametersABC
from postprocessor.core.abc import PostProcessABC
[docs]class standardscalerParameters(ParametersABC):
"""
Parameters for the 'scale' process.
"""
_defaults = {}
[docs]class standardscaler(PostProcessABC):
"""
Process to scale a DataFrame of a signal using the standard scaler.
Methods
-------
run(signal: pd.DataFrame)
Scale values in a dataframe of time series.
"""
[docs] def __init__(self, parameters: standardscalerParameters):
super().__init__(parameters)
[docs] def run(self, signal: pd.DataFrame):
"""Scale values in a dataframe of time series.
Scale values in a dataframe of time series. This function is effectively a
wrapper for sklearn.preprocessing.StandardScaler.
Parameters
----------
signal : pd.DataFrame
Time series, with rows indicating individual time series (e.g. from
each cell), and columns indicating time points.
"""
signal_array = signal.to_numpy()
scaler = StandardScaler().fit(signal_array.transpose())
signal_scaled_array = scaler.transform(signal_array.transpose())
signal_scaled_array = signal_scaled_array.transpose()
signal_scaled = pd.DataFrame(
signal_scaled_array, columns=signal.columns, index=signal.index
)
return signal_scaled