Метод quantile аксессора rolling
Метод quantile применяется к объекту Rolling,
который создаётся аксессором rolling у DataFrame
или Series. Он возвращает квантиль (значение, ниже которого
находится заданная доля наблюдений) для каждого скользящего окна.
Первым параметром передаётся quantile - число от 0 до 1,
по умолчанию 0.5 (медиана).
Синтаксис
rolling_object.quantile(quantile=0.5, interpolation='linear', numeric_only=False, **kwargs)
Пример
Создадим таблицу и вычислим 50-й процентиль (медиану) в скользящем окне размером 3:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['a'].rolling(window=3).quantile()
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 2.0
3 3.0
4 4.0
dtype: float64
Пример
Теперь вычислим 90-й процентиль для того же ряда:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=3).quantile(0.9)
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 2.8
3 3.8
4 4.8
dtype: float64
Пример
Параметр interpolation управляет способом интерполяции
при вычислении квантиля. Доступные значения: 'linear' (по умолчанию),
'lower', 'higher', 'midpoint', 'nearest'. Рассмотрим на примере:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=4).quantile(0.5, interpolation='lower')
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 NaN
3 2.0
4 3.0
dtype: float64
Пример
Метод quantile можно применить ко всей таблице.
В этом случае квантиль вычисляется для каждого столбца отдельно:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(window=3).quantile(0.25)
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 1.5 15.0
3 2.5 25.0
4 3.5 35.0