code: def get_type(x):
      if len(x.shape) > 1:
          if x.shape[1] != 1:
              raise PreprocessingUtilsException(
                  "Please select one column to get its type"
              )
      col_type = str(x.dtype)
  
      data_type = PreprocessingUtils.CATEGORICAL
      if col_type.startswith("float"):
          data_type = PreprocessingUtils.CONTINOUS
      elif col_type.startswith("int") or col_type.startswith("uint"):
          data_type = PreprocessingUtils.DISCRETE
      elif col_type.startswith("datetime"):
          data_type = PreprocessingUtils.DATETIME
      elif col_type.startswith("category"):
          # do not check the additional condition for text feature
          # treat it as categorical
          return PreprocessingUtils.CATEGORICAL
  
      if data_type == PreprocessingUtils.CATEGORICAL:
          # check maybe this categorical is a text
          # it is a text, if:
          # has more than 200 unique values
          # more than half of rows is unique
          unique_cnt = len(np.unique(x[~pd.isnull(x)]))
          if unique_cnt > 200 and unique_cnt > int(0.5 * x.shape[0]):
              data_type = PreprocessingUtils.TEXT
  
      return data_type
  
imports: import numpy
  import pandas
  from scipy import stats
  from sklearn import preprocessing
label_desc: Use image node_id 1 for calling the PreprocessingUtils obj's underlying member method code with example usage: obj.get_type(x) and returns: data_type, PreprocessingUtils