code: def series_diff(series, periods=1):
      """
      First discrete difference of element.
      Calculates the difference of a Series element compared with another
      element in the Series (default is element in previous row).
  
      Parameters
      ----------
      periods : int, default 1
          Periods to shift for calculating difference, accepts negative
          values.
  
      Returns
      -------
      Series
          First differences of the Series.
  
      See Also
      --------
      Series.pct_change :
          Percent change over given number of periods.
      Series.shift :
          Shift index by desired number of periods with an optional time freq.
      DataFrame.diff :
          First discrete difference of object.
  
      Notes
      -----
      For boolean dtypes, this uses :meth:`operator.xor` rather than
      :meth:`operator.sub`.
  
      Examples
      --------
  
      Difference with previous row
  
      >>> import mars.dataframe as md
      >>> s = md.Series([1, 1, 2, 3, 5, 8])
      >>> s.diff().execute()
      0    NaN
      1    0.0
      2    1.0
      3    1.0
      4    2.0
      5    3.0
      dtype: float64
  
      Difference with 3rd previous row
  
      >>> s.diff(periods=3).execute()
      0    NaN
      1    NaN
      2    NaN
      3    2.0
      4    4.0
      5    6.0
      dtype: float64
  
      Difference with following row
  
      >>> s.diff(periods=-1).execute()
      0    0.0
      1   -1.0
      2   -1.0
      3   -2.0
      4   -3.0
      5    NaN
      dtype: float64
      """
      op = DataFrameDiff(periods=periods)
      return op(series)
  
imports: import itertools
  import numpy
  from ...None import opcodes
  from ...core import recursive_tile
  from ...serialization.serializables import AnyField, Int8Field, Int64Field
  from ..core import DATAFRAME_TYPE, OutputType
  from ..operands import DataFrameOperand, DataFrameOperandMixin
  from ..utils import build_empty_df, build_empty_series, validate_axis
  from .shift import DataFrameShift
label_desc: Use image node_id 2 for calling a global function with example usage: series_diff(series, periods) and returns: op