Source code for featuretools.primitives.standard.transform.numeric.rate_of_change

from woodwork.column_schema import ColumnSchema
from woodwork.logical_types import Datetime, Double

from featuretools.primitives.base import TransformPrimitive


[docs]class RateOfChange(TransformPrimitive): """Computes the rate of change of a value per second. Examples: >>> import pandas as pd >>> rate_of_change = RateOfChange() >>> times = pd.date_range(start='2019-01-01', freq='1min', periods=5) >>> results = rate_of_change([0, 30, 180, -90, 0], times).tolist() >>> results = [round(x, 2) for x in results] >>> results [nan, 0.5, 2.5, -4.5, 1.5] """ name = "rate_of_change" input_types = [ ColumnSchema(semantic_tags={"numeric"}), ColumnSchema(logical_type=Datetime, semantic_tags={"time_index"}), ] return_type = ColumnSchema(logical_type=Double, semantic_tags={"numeric"}) uses_full_dataframe = True description_template = "the rate of change of {} per second" def get_function(self): def rate_of_change(values, time): time_delta = time.diff().dt.total_seconds() value_delta = values.diff() return value_delta / time_delta return rate_of_change