В пандах у нас есть pd.rolling_quantile()
. И в numpy у нас есть np.percentile()
, но я не уверен, как сделать его скользящую/перемещающуюся версию.
Чтобы объяснить, что я имел в виду под движущимся/скользящим процентилем/квантилем:
Для заданного массива [1, 5, 7, 2, 4, 6, 9, 3, 8, 10]
скользящий квантиль 0.5
(т.е. скользящий процентиль 50%) с размером окна 3 равен:
1
5 - 1 5 7 -> 0.5 quantile = 5
7 - 5 7 2 -> 5
2 - 7 2 4 -> 4
4 - 2 4 6 -> 4
6 - 4 6 9 -> 6
9 - 6 9 3 -> 6
3 - 9 3 8 -> 8
8 - 3 8 10 -> 8
10
Так что [5, 5, 4, 4, 6, 6, 8, 8]
это ответ. Чтобы результирующий ряд имел ту же длину, что и входная, некоторые реализации вставляют NaN
или None
, а pandas.rolling_quantile()
позволяет вычислить первые два значения квантиля в меньшем окне.