class_docstr: Class for checking types in input data. Also perform conversion for columns with types conflicts
class_docstr_tok: ["Class","for","checking","types","in","input","data",".","Also","perform","conversion","for","columns","with","types","conflicts"]
docstr: Determine new type for current feature column based on the string ratio. And then convert column into it.
  
  :param features: one-dimensional array with several data types
  :param column_info: dictionary with information about types in the column
  :param mixed_column_id: index of column in dataset
docstr_tok: ["Determine","new","type","for","current","feature","column","based","on","the","string","ratio",".","And","then","convert","column","into","it",".",":","param","features",":","one-dimensional","array","with","several","data","types",":","param","column_info",":","dictionary","with","information","about","types","in","the","column",":","param","mixed_column_id",":","index","of","column","in","dataset"]
code: def _convert_feature_into_one_type(
      self, column_info: pd.Series, features: np.ndarray
  ):
      """Determine new type for current feature column based on the string ratio. And then convert column into it.
  
      :param features: one-dimensional array with several data types
      :param column_info: dictionary with information about types in the column
      :param mixed_column_id: index of column in dataset
      """
      new_type_id = None
      if (
          len(column_info[_TYPES]) == 2
          and TYPE_TO_ID[type(None)] in column_info[_TYPES]
      ):
          # Column contain only one data type and nans
          non_nan_type_lst = [
              x
              for x in column_info[_TYPES]
              if x != TYPE_TO_ID[type(None)]
          ]
          new_type_id = non_nan_type_lst[0]
      else:
          string_objects_number = column_info[_STR_NUMBER]
          all_elements_number = (
              string_objects_number
              + column_info[[_INT_NUMBER, _FLOAT_NUMBER]].sum()
          )
          string_ratio = string_objects_number / all_elements_number
  
          if string_ratio > 0:
              suggested_type = str
          else:
              suggested_type = _obtain_new_column_type(column_info)
  
          try:
              converted = features[:, column_info.name].astype(
                  suggested_type
              )
              # If there were nans in the column - paste nan
              if column_info[_NAN_NUMBER]:
                  converted = converted.astype(object)
                  converted[column_info[_NAN_IDS]] = np.nan
                  del column_info[_NAN_IDS]
              features[:, column_info.name] = converted
          except ValueError:
              # Cannot convert string objects into int or float (for example 'a' into int)
              prefix = (
                  f"Feature column with index {column_info.name} contains "
                  f"the following data types: {column_info[_TYPES]}."
              )
              self.log.warning(
                  f"{prefix} String cannot be converted into {suggested_type}. Drop column."
              )
          else:
              new_type_id = TYPE_TO_ID[suggested_type]
      self.features_converted_columns[column_info.name] = new_type_id
  
imports: from __future__ import annotations
  from collections.abc import Sequence
  from typing import TYPE_CHECKING, Dict, List, Optional, Tuple
  import numpy
  import pandas
  from golem.core.log import LoggerAdapter, default_log
  from fedot.core.repository.tasks import Task, TaskTypesEnum
label_desc: Use image node_id 11 for calling the TableTypesCorrector obj's underlying member method code with example usage: obj._convert_feature_into_one_type(column_info, features) without return types