class_docstr: Emperical Cumulative Density Function
  
  {usage}
  
  Parameters
  ----------
  {common_parameters}
  n  : int, default=None
      This is the number of points to interpolate with.
      If :py:`None`, do not interpolate.
  pad : bool, default=True
      If True, pad the domain with `-inf` and `+inf` so that
      ECDF does not have discontinuities at the extremes.
  
  See Also
  --------
  plotnine.geoms.geom_step
code: def compute_group(cls, data, scales, **params):
      from statsmodels.distributions.empirical_distribution import ECDF
  
      # If n is None, use raw values; otherwise interpolate
      if params["n"] is None:
          x = np.unique(data["x"])
      else:
          x = np.linspace(data["x"].min(), data["x"].max(), params["n"])
  
      if params["pad"]:
          x = np.hstack([-np.inf, x, np.inf])
  
      ecdf = ECDF(data["x"])(x)
      res = pd.DataFrame({"x": x, "ecdf": ecdf})
      return res
  
imports: import numpy
  import pandas
  from ..doctools import document
  from ..mapping.evaluation import after_stat
  from .stat import stat
label_desc: Use image node_id 1 for calling the stat_ecdf obj's underlying member method code with example usage: obj.compute_group(cls, data, scales) and returns: res