code: def new_categoricals(
      self,
      inputs,
      shape=None,
      dtype=None,
      categories_value=None,
      chunks=None,
      nsplits=None,
      output_limit=None,
      kws=None,
      **kw,
  ):
      setattr(self, "_output_types", [OutputType.categorical])
      return self.new_tileables(
          inputs,
          shape=shape,
          dtype=dtype,
          categories_value=categories_value,
          chunks=chunks,
          nsplits=nsplits,
          output_limit=output_limit,
          kws=kws,
          **kw,
      )
  
imports: from collections import OrderedDict
  from functools import reduce
  import numpy
  import pandas
  from ..core import FuseChunkData, FuseChunk, ENTITY_TYPE, OutputType
  from ..core.operand import Operand, TileableOperandMixin, Fuse, ShuffleProxy, FuseChunkMixin
  from ..tensor.core import TENSOR_TYPE
  from ..tensor.datasource import tensor
  from ..tensor.operands import TensorOperandMixin
  from ..utils import calc_nsplits
  from .core import DATAFRAME_CHUNK_TYPE, SERIES_CHUNK_TYPE, INDEX_CHUNK_TYPE, DATAFRAME_TYPE, SERIES_TYPE, INDEX_TYPE, DATAFRAME_GROUPBY_TYPE, SERIES_GROUPBY_TYPE, CATEGORICAL_TYPE
  from .utils import parse_index
label_desc: Use image node_id 10 for calling the DataFrameOperandMixin obj's underlying member method code with example usage: obj.new_categoricals(inputs, shape, dtype, categories_value, chunks, nsplits, output_limit, kws) and returns: self