code: def get_col_groups(data_id, data):
      valid_corr_cols = []
      valid_str_corr_cols = []
      valid_date_cols = []
      for col_info in global_state.get_dtypes(data_id):
          name, dtype = map(col_info.get, ["name", "dtype"])
          dtype = classify_type(dtype)
          if dtype in ["I", "F"]:
              valid_corr_cols.append(name)
          elif dtype == "S" and col_info.get("unique_ct", 0) <= 50:
              valid_str_corr_cols.append(name)
          elif dtype == "D":
              # even if a datetime column exists, we need to make sure that there is enough data for a date
              # to warrant a correlation, https://github.com/man-group/dtale/issues/43
              date_counts = data[name].dropna().value_counts()
              if len(date_counts[date_counts > 1]) > 1:
                  valid_date_cols.append(dict(name=name, rolling=False))
              elif date_counts.eq(1).all():
                  valid_date_cols.append(dict(name=name, rolling=True))
      return valid_corr_cols, valid_str_corr_cols, valid_date_cols
  
file_path: dtale/dtale/correlations.py
imports: import numpy
  import pandas
  import dtale.global_state
  from dtale.code_export import build_code_export
  from dtale.utils import classify_type, dict_merge
label_desc: Use image node_id 1 for calling a global function with example usage: get_col_groups(data_id, data) and returns: valid_corr_cols,  valid_str_corr_cols,  valid_date_cols