code: def measure_categorical_and_numerical_dataframe(
      rows_count: int,
      columns_count: int = 200,
      unique_features_count: int = 1000,
  ) -> tp.Tuple[float, float]:
      unique_str_values: tp.List[str] = get_unique_random_strings(
          unique_features_count
      )
      assert len(set(unique_str_values)) == unique_features_count
  
      column_data: tp.Dict[str, tp.List[tp.Any]] = {}
  
      str_columns_names: tp.List[str] = [
          "str_" + str(num) for num in range(columns_count // 2)
      ]
      for column_id in range(columns_count // 2):
          values: np.ndarray = np.array(
              [
                  unique_str_values[value_id]
                  for value_id in np.random.randint(
                      unique_features_count, size=rows_count
                  )
              ]
          )
          column_data[str_columns_names[column_id]] = values
  
      for column_id in range(columns_count // 2):
          column_data["float64_" + str(column_id)] = np.float64(
              np.random.rand(rows_count)
          )
  
      frame = pd.DataFrame(column_data)
  
      return measure_pool_building_with_categorical_data(
          frame, str_columns_names
      )
  
file_path: catboost/catboost/benchmarks/pool_creation_benchmark/benchmarks.py
imports: import numpy
  import typing
  import pandas
  from catboost import Pool
  from timeit import default_timer
label_desc: Use image node_id 8 for calling a global function with example usage: measure_categorical_and_numerical_dataframe(rows_count, columns_count, unique_features_count) and returns: measure_pool_building_with_categorical_data