Display info about the dataframe

        :param rows: number of rows to show, defaults to 5
        :param rows: int, optional
        :param dataframe: a pandas dataframe, defaults to None
        :param dataframe: pd.DataFrame, optional
        :return: a pandas dataframe
        :rtype: pd.DataFrame

        :example: ``ds.show()``

def show(self, rows: int=5,
             dataframe: pd.DataFrame=None) -> pd.DataFrame:
        """
        Display info about the dataframe

        :param rows: number of rows to show, defaults to 5
        :param rows: int, optional
        :param dataframe: a pandas dataframe, defaults to None
        :param dataframe: pd.DataFrame, optional
        :return: a pandas dataframe
        :rtype: pd.DataFrame

        :example: ``ds.show()``
        """
        try:
            if dataframe is not None:
                df = dataframe
            else:
                df = self.df
            if df is None:
                self.warning("Dataframe is empty: nothing to show")
                return
            num = len(df.columns.values)
        except Exception as e:
            self.err(e, self.show, "Can not show dataframe")
            return
        f = list(df)
        fds = []
        for fi in f:
            fds.append(str(fi))
        fields = ", ".join(fds)
        num_rows = len(df.index)
        self.info("The dataframe has", colors.bold(num_rows), "rows and",
                  colors.bold(num), "columns:")
        print(fields)
        return df.head(rows)