Source code for featuretools.primitives.standard.transform.numeric.diff
from woodwork.column_schema import ColumnSchema
from featuretools.primitives.base import TransformPrimitive
[docs]class Diff(TransformPrimitive):
    """Computes the difference between the value in a list and the
    previous value in that list.
    Args:
        periods (int): The number of periods by which to shift the index row.
            Default is 0. Periods correspond to rows.
    Description:
        Given a list of values, compute the difference from the previous
        item in the list. The result for the first element of the list will
        always be `NaN`.
    Examples:
        >>> diff = Diff()
        >>> values = [1, 10, 3, 4, 15]
        >>> diff(values).tolist()
        [nan, 9.0, -7.0, 1.0, 11.0]
        You can specify the number of periods to shift the values
        >>> values = [1, 2, 4, 7, 11, 16]
        >>> diff_periods = Diff(periods = 1)
        >>> diff_periods(values).tolist()
        [nan, nan, 1.0, 2.0, 3.0, 4.0]
    """
    name = "diff"
    input_types = [ColumnSchema(semantic_tags={"numeric"})]
    return_type = ColumnSchema(semantic_tags={"numeric"})
    uses_full_dataframe = True
    description_template = "the difference from the previous value of {}"
[docs]    def __init__(self, periods=0):
        self.periods = periods 
    def get_function(self):
        def pd_diff(values):
            return values.shift(self.periods).diff()
        return pd_diff