code: def _get_fill_value(self, x):
      # categorical type
      if (
          PreprocessingUtils.get_type(x)
          == PreprocessingUtils.CATEGORICAL
      ):
          if (
              self._na_fill_method
              == PreprocessingMissingValues.FILL_NA_MIN
          ):
              return (
                  PreprocessingMissingValues.MISSING_VALUE
              )  # add new categorical value
          return PreprocessingUtils.get_most_frequent(x)
      # datetime
      if PreprocessingUtils.get_type(x) == PreprocessingUtils.DATETIME:
          return PreprocessingUtils.get_most_frequent(x)
      # text
      if PreprocessingUtils.get_type(x) == PreprocessingUtils.TEXT:
          return PreprocessingMissingValues.MISSING_VALUE
  
      # numerical type
      if self._na_fill_method == PreprocessingMissingValues.FILL_NA_MIN:
          return PreprocessingUtils.get_min(x) - 1.0
      if (
          self._na_fill_method
          == PreprocessingMissingValues.FILL_NA_MEAN
      ):
          return PreprocessingUtils.get_mean(x)
      return PreprocessingUtils.get_median(x)
  
file_path: mljar-supervised/supervised/preprocessing/preprocessing_missing.py
imports: import json
  import os
  import numpy
  import pandas
  from supervised.preprocessing.preprocessing_utils import PreprocessingUtils
label_desc: Use image node_id 4 for calling the PreprocessingMissingValues obj's underlying member method code with example usage: obj._get_fill_value(x) and returns: PreprocessingUtils, PreprocessingUtils, PreprocessingUtils, PreprocessingMissingValues, unknown, PreprocessingUtils, PreprocessingMissingValues