Метод std аксессора rolling
Метод std аксессора rolling применяется к скользящему окну
и возвращает стандартное отклонение для каждого окна. Первым
параметром можно передать количество наблюдений в окне.
Также доступны параметры для настройки пропуска пропущенных значений
и коррекции степени свободы.
Синтаксис
df.rolling(window).std([ddof])
Параметры:
-
window- размер скользящего окна (целое число) -
ddof- степень свободы (по умолчанию 1). Приddof=0вычисляется стандартное отклонение генеральной совокупности, приddof=1- стандартное отклонение выборки
Пример
Давайте вычислим скользящее стандартное отклонение с окном в 3 элемента:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(3).std()
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 1.0 10.000000
3 1.0 10.000000
4 1.0 10.000000
Первые два значения NaN, так как для них недостаточно данных для заполнения окна.
Пример
Теперь вычислим скользящее стандартное отклонение с коррекцией
на степень свободы ddof=0 (для генеральной совокупности):
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(3).std(ddof=0)
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 0.816496 8.164966
3 0.816496 8.164966
4 0.816496 8.164966
Значения меньше, чем в предыдущем примере, так как используется
деление на n вместо n-1.
Пример
Применим скользящее стандартное отклонение к отдельной колонке:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['a'].rolling(4).std()
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 NaN
3 1.290994
4 1.290994
Name: a, dtype: float64