code: def data_has_categorical_features(data: InputData) -> bool:
      """
      Check data for categorical columns.
      Return bool, whether data has categorical columns or not
      """
      if data.data_type is not DataTypesEnum.table:
          return False
  
      feature_type_ids = data.supplementary_data.col_type_ids[
          "features"
      ]
      cat_ids, non_cat_ids = find_categorical_columns(
          data.features, feature_type_ids
      )
  
      data.numerical_idx = non_cat_ids
      data.categorical_idx = cat_ids
  
      if len(cat_ids) > 0:
          data.categorical_features = data.subset_features(
              cat_ids
          ).features
  
      return bool(cat_ids)
  
file_path: FEDOT/fedot/core/data/data_preprocessing.py
imports: from typing import Optional, Tuple
  import numpy
  import pandas
  from fedot.core.data.data import InputData, data_type_is_multi_ts, data_type_is_table, data_type_is_ts
  from fedot.core.repository.dataset_types import DataTypesEnum
  from fedot.preprocessing.data_types import TYPE_TO_ID
label_desc: Use image node_id 9 for calling a global function with example usage: data_has_categorical_features(data) and returns: bool, False