docs: def to_pandas(self):
          """
          Returns the dataset as two pandas objects: X and y.
  
          Returns
          -------
          X : DataFrame with shape (n_instances, n_features)
              A pandas DataFrame containing feature data and named columns.
  
          y : Series with shape (n_instances,)
              A pandas Series containing target data and an index that matches
              the feature DataFrame index.
          """
          # Ensure the metadata is valid before continuing
          if self.meta is None:
              raise DatasetsError((
                  "the downloaded dataset was improperly packaged without meta.json "
                  "- please report this bug to the Yellowbrick maintainers!"
              ))
  
          if "features" not in self.meta or "target" not in self.meta:
              raise DatasetsError((
                  "the downloaded dataset was improperly packaged without features "
                  "or target - please report this bug to the Yellowbrick maintainers!"
              ))
  
          # Load data frame and return features and target
          # TODO: Return y as None if there is no self.meta["target"]
          df = self.to_dataframe()
          return df[self.meta["features"]], df[self.meta["target"]]