Source code for tempor.methods.preprocessing.imputation.temporal.plugin_bfill
"""Implementation using ``bfill``."""fromtypingimportAny,Listfromtyping_extensionsimportSelffromtempor.coreimportpluginsfromtempor.dataimportdatasetfromtempor.data.samplesimportTimeSeriesSamplesfromtempor.methods.core.paramsimportParamsfromtempor.methods.preprocessing.imputation._baseimportBaseImputer
[docs]@plugins.register_plugin(name="bfill",category="preprocessing.imputation.temporal")classBFillImputer(BaseImputer):def__init__(self,**params:Any)->None:# pylint: disable=useless-super-delegation"""Backward-first Time-Series Imputation. Args: **params (Any): Additional parameters. Note: The data will be represented as a multi-index `(sample_idx, time_idx)` dataframe of features. Then ``bfill``, ``ffill`` and ``fillna(0.0)``` will be called in that order. Example: >>> from tempor import plugin_loader >>> >>> dataset = plugin_loader.get( ... "prediction.one_off.sine", ... plugin_type="datasource", ... with_missing=True, ... ).load() >>> assert dataset.time_series.dataframe().isna().sum().sum() != 0 >>> >>> # Load the model: >>> model = plugin_loader.get("preprocessing.imputation.temporal.bfill") >>> >>> # Train: >>> model.fit(dataset) BFillImputer(...) >>> >>> # Impute: >>> imputed = model.transform(dataset) >>> assert imputed.time_series.dataframe().isna().sum().sum() == 0 """super().__init__(**params)def_fit(self,data:dataset.BaseDataset,*args:Any,**kwargs:Any)->Self:returnselfdef_transform(self,data:dataset.BaseDataset,*args:Any,**kwargs:Any)->dataset.BaseDataset:# Impute temporal data.sample_ts_index=data.time_series.sample_index()imputed_ts=data.time_series.dataframe()foridxinsample_ts_index:imputed_ts.loc[(idx,slice(None)),:]=imputed_ts.loc[(idx,slice(None)),:].bfill()# pyright: ignoreimputed_ts.loc[(idx,slice(None)),:]=imputed_ts.loc[(idx,slice(None)),:].ffill()# pyright: ignoreimputed_ts.loc[(idx,slice(None)),:]=imputed_ts.loc[(idx,slice(None)),:].fillna(0.0)# pyright: ignoredata.time_series=TimeSeriesSamples.from_dataframe(imputed_ts)returndata