code: def _detect_categorical_columns(self,data):
          
          # assume all non-numerical and date columns are categorical
          numeric_cols = set(data._get_numeric_data().columns.values)
          date_cols = set(data.select_dtypes(include=[np.datetime64]).columns)
          likely_cat = set(data.columns) - numeric_cols
          likely_cat = list(likely_cat - date_cols)
          # check proportion of unique values if numerical
          for var in data._get_numeric_data().columns:
              likely_flag = 1.0 * data[var].nunique()/data[var].count() < 0.05
              if likely_flag:
                   likely_cat.append(var)
          return likely_cat
docs: Detect categorical columns if they are not specified.
  
          Parameters
          ----------
              data : pandas DataFrame
                  The input dataset.
  
          Returns
          ----------
              likely_cat : list
                  List of variables that appear to be categorical.