def analyze_quality_table(self, obj,low_bound=None, high_bound=None):
        """ Takes in an the object returned by the MDAL query, and analyzes the quality 
        of the data for each column in the df. Returns a df of data quality metrics

        To Do
        -----
        Need to make it specific for varying meters and label it for each type,
        Either separate functions or make the function broader

        Parameters
        ----------
        obj             : ???
            the object returned by the MDAL Query

        low_bound       : float
            all data equal to or below this value will be interpreted as missing data
        high_bound      : float
            all data above this value will be interpreted as missing

        Returns
        -------
        pd.DataFrame()
          returns data frame with % missing data, average duration of missing data 
        event and standard deviation of that duration for each column of data

        """

        data = obj.df
        N_rows = 3
        N_cols = data.shape[1]
        d = pd.DataFrame(np.zeros((N_rows, N_cols)),
                         index=['% Missing', 'AVG Length Missing', 'Std dev. Missing'],
                         columns=[data.columns])

        
        if low_bound:
            data = data.where(data >= low_bound)
        if high_bound:
            data=data.where(data < high_bound)


        for i in range(N_cols):

            data_per_meter = data.iloc[:, [i]]

            data_missing, meter = self.identify_missing(data_per_meter)
            percentage = data_missing.sum() / (data.shape[0]) * 100
            data_gaps = self.diff_boolean(data_missing, column_name=meter)

            missing_mean = data_gaps.mean()
            std_dev = data_gaps.std()
            d.loc["% Missing", meter] = percentage[meter]
            d.loc["AVG Length Missing", meter] = missing_mean['duration']
            d.loc["Std dev. Missing", meter] = std_dev['duration']

        return d
Takes in an the object returned by the MDAL query, and analyzes the quality 
        of the data for each column in the df. Returns a df of data quality metrics

        To Do
        -----
        Need to make it specific for varying meters and label it for each type,
        Either separate functions or make the function broader

        Parameters
        ----------
        obj             : ???
            the object returned by the MDAL Query

        low_bound       : float
            all data equal to or below this value will be interpreted as missing data
        high_bound      : float
            all data above this value will be interpreted as missing

        Returns
        -------
        pd.DataFrame()
          returns data frame with % missing data, average duration of missing data 
        event and standard deviation of that duration for each column of data