Preprocesses then transforms the return of fetch().

        Args:
            force_computation (bool, optional) : Defaults to False. If set to True, forces the computation of DataFrame at each call.

        Returns:
            pandas.DataFrame: Preprocessed and transformed DataFrame.

def get_dataframe(self, force_computation=False):
        """
        Preprocesses then transforms the return of fetch().

        Args:
            force_computation (bool, optional) : Defaults to False. If set to True, forces the computation of DataFrame at each call.

        Returns:
            pandas.DataFrame: Preprocessed and transformed DataFrame.
        """
        # returns df if it was already computed
        if self.df is not None and not force_computation: return self.df

        self.df = self.fetch(self.context)

        # compute df = transform(preprocess(df)
        self.df = self.preprocess(self.df)
        self.transform(self.df)

        return self.df