code: def describe(
      df_or_series, percentiles=None, include=None, exclude=None
  ):
      if percentiles is False:
          percentiles = []
      elif percentiles is None:
          percentiles = [0.25, 0.5, 0.75]
      else:
          percentiles = list(percentiles)
          if percentiles is not None:
              for p in percentiles:
                  if p < 0 or p > 1:
                      raise ValueError(
                          "percentiles should all be in the interval [0, 1]. "
                          "Try [{0:.3f}] instead.".format(p / 100)
                      )
          # median should always be included
          if 0.5 not in percentiles:
              percentiles.append(0.5)
          percentiles = np.asarray(percentiles)
  
          # sort and check for duplicates
          unique_pcts = np.unique(percentiles)
          if len(unique_pcts) < len(percentiles):
              raise ValueError("percentiles cannot contain duplicates")
          percentiles = unique_pcts.tolist()
  
      op = DataFrameDescribe(
          percentiles=percentiles, include=include, exclude=exclude
      )
      return op(df_or_series)
  
imports: import numpy
  import pandas
  from ...None import opcodes
  from ...None import tensor
  from ...core import recursive_tile
  from ...core.operand import OperandStage
  from ...serialization.serializables import FieldTypes, KeyField, ListField, AnyField
  from ...utils import lazy_import, has_unknown_shape
  from ..core import SERIES_TYPE
  from ..initializer import DataFrame, Series
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import parse_index, build_empty_df
label_desc: Use image node_id 1 for calling a global function with example usage: describe(df_or_series, percentiles, include, exclude) and returns: op