class_docstr: Substitute missing values by constant:
      When strategy == “constant”, fill_value is used to replace all
      occurrences of missing_values.
      If left to the default, fill_value will be 0 when imputing
      numerical data and “missing_value” for strings or object data types.
code: def fit(
      self,
      X: PIPELINE_DATA_DTYPE,
      y: Optional[PIPELINE_DATA_DTYPE] = None,
  ) -> "CategoricalImputation":
      import sklearn.impute
  
      if hasattr(X, "columns"):
          kind = X[X.columns[-1]].dtype.kind
      else:
          # Series, sparse and numpy have dtype
          # Only DataFrame does not
          kind = X.dtype.kind
  
      fill_value: Optional[int] = None
  
      number_kinds = ("i", "u", "f")
      if kind in number_kinds:
          if isinstance(X, spmatrix):
              # TODO negative labels
              #
              #   Previously this was the behaviour and went
              #   unnoticed. Imputing negative labels results in
              #   the cateogircal shift step failing as the ordinal
              #   encoder can't fix negative labels.
              #   This is here to document the behaviour explicitly
              fill_value = 0
          else:
              fill_value = min(np.unique(X)) - 1
  
      self.preprocessor = sklearn.impute.SimpleImputer(
          strategy="constant", copy=False, fill_value=fill_value
      )
      self.preprocessor.fit(X)
      return self
  
file_path: auto-sklearn/autosklearn/pipeline/components/data_preprocessing/imputation/categorical_imputation.py
imports: from typing import Dict, Optional, Tuple, Union
  import numpy
  from ConfigSpace.configuration_space import ConfigurationSpace
  from scipy.sparse import spmatrix
  from autosklearn.askl_typing import FEAT_TYPE_TYPE
  from autosklearn.pipeline.base import DATASET_PROPERTIES_TYPE, PIPELINE_DATA_DTYPE
  from autosklearn.pipeline.components.base import AutoSklearnPreprocessingAlgorithm
  from autosklearn.pipeline.constants import DENSE, INPUT, SPARSE, UNSIGNED_DATA
label_desc: Use image node_id 2 for calling the CategoricalImputation obj's underlying member method code with example usage: obj.fit(X, y) and returns: self