class_docstr: Base class of all stats
docstr: Deep copy without copying the self.data dataframe
  
  stats should not override this method.
docstr_tok: ["Deep","copy","without","copying","the","self.data","dataframe","stats","should","not","override","this","method","."]
code: def __deepcopy__(self, memo: dict[Any, Any]) -> stat:
      """
      Deep copy without copying the self.data dataframe
  
      stats should not override this method.
      """
      cls = self.__class__
      result = cls.__new__(cls)
      memo[id(self)] = result
      old = self.__dict__
      new = result.__dict__
  
      # don't make a _kwargs
      shallow = {"_kwargs"}
      for key, item in old.items():
          if key in shallow:
              new[key] = item
              memo[id(new[key])] = new[key]
          else:
              new[key] = deepcopy(item, memo)
  
      return result
  
imports: from __future__ import annotations
  import typing
  from copy import deepcopy
  import pandas
  from .._utils import check_required_aesthetics, copy_keys, data_mapping_as_kwargs, groupby_apply, remove_missing, uniquecols
  from .._utils.registry import Register, Registry
  from ..exceptions import PlotnineError
  from ..layer import layer
  from ..mapping import aes
  from abc import ABC
label_desc: Use image node_id 3 for calling the stat obj's underlying member method code with example usage: obj.__deepcopy__(memo) and returns: result