Вы можете попробовать дифференцировать серию, чтобы получить сумму, которую серия меняла на каждом шаге. Это стандартный метод анализа временных рядов. Здесь - хорошее обсуждение теории, стоящей за идеей.
На практике pandas
дает нам простой способ отличить серию с помощью метода .diff()
.
df = pd.DataFrame({'a': [10, 20, 30, 40, 50, 60],
'b': [1, 1000, 20000, 3, 50, 80],
'c': [1000, 4, 97, 16, 2500, 36]})
df.diff()
a b c
0 NaN NaN NaN
1 10.0 999.0 -996.0
2 10.0 19000.0 93.0
3 10.0 -19997.0 -81.0
4 10.0 47.0 2484.0
5 10.0 30.0 -2464.0
Этот процесс вычитает следующий элемент из серии из предыдущего (поэтому первое наблюдение теперь NaN
). Вы можете добавить функцию к своим данным, которая представляет собой серию первых различий:
df['a_first_difference'] = df['a'].diff()
Значения в этой серии затем будут распределяться самостоятельно. Возможно, обнаружение всех значений в разностных рядах выше некоторого порога даст вам возможность измерить «быстрое увеличение» путем определения периодов, в которых произошло наибольшее изменение по сравнению с предыдущим значением. Также можно получить .diff()
, чтобы сообщить вам изменение от значения next :
df.diff(periods=-1)
a b c
0 -10.0 -999.0 996.0
1 -10.0 -19000.0 -93.0
2 -10.0 19997.0 81.0
3 -10.0 -47.0 -2484.0
4 -10.0 -30.0 2464.0
5 NaN NaN NaN
Это, в таком случае, поможет идентифицировать те периоды, когда следующий шаг испытывает большие изменения ,