#!/usr/bin/env python import pandas as pd from sklearn.preprocessing import StandardScaler from agora.abc import ParametersABC from postprocessor.core.abc import PostProcessABC class standardscalerParameters(ParametersABC): """ Parameters for the 'scale' process. """ _defaults = {} 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. """ def __init__(self, parameters: standardscalerParameters): super().__init__(parameters) 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