Source code for pype_schema.operations

import numpy as np
import pandas as pd
import scipy as sp  # noqa: F401


[docs]def get_change(variable, delta_t=1, split=False): """Converts cumulative value to rate-of-change value using finite differences Note: assumes rate of change at time t is equal to the difference between the value at time t+1 and t Parameters ---------- variable : pandas.Series, numpy.ndarray variable to convert delta_t : int Time difference between two consecutive values of the variable (default is 1) split: bool Whether to split the variable into a negative change and a positive change Returns ------- tuple, pandas.Series or numpy.ndarray Rate of change variable or tuple of netative, positive rate of change variable """ variable = variable.values if isinstance(variable, pd.Series) else variable change = (variable[1:] - variable[:-1]) / delta_t change = np.concatenate([change, np.array([np.nan])]) change_neg, change_pos = change.copy(), change.copy() change_neg[change_neg > 0] = 0 change_neg = -change_neg change_pos[change_pos < 0] = 0 if split: return change_neg, change_pos else: return change