Метод var
Метод var аксессора rolling применяется к DataFrame
или Series и вычисляет скользящую дисперсию для заданного
размера окна. Метод возвращает новый объект той же размерности,
где каждое значение представляет собой дисперсию в скользящем окне.
Первым параметром обязательно передаётся размер окна window.
Дополнительные параметры позволяют настроить способ вычислений:
ddof определяет число степеней свободы (по умолчанию 1),
numeric_only задаёт работу только с числовыми столбцами.
Синтаксис
df.rolling(window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None).var(ddof=1, numeric_only=False, engine=None, engine_kwargs=None)
Пример
Вычислим скользящую дисперсию для числового ряда с размером окна 3:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=3).var()
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 1.0
3 1.0
4 1.0
dtype: float64
Пример
Изменим параметр ddof на 0 для вычисления дисперсии по генеральной совокупности:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=3).var(ddof=0)
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 0.666667
3 0.666667
4 0.666667
dtype: float64
Пример
Вычислим скользящую дисперсию для всех числовых столбцов в таблице:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(window=3).var()
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 1.0 100.0
3 1.0 100.0
4 1.0 100.0
Пример
Используем параметр min_periods для минимального количества значений в окне:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=3, min_periods=2).var()
print(res)
Результат выполнения кода:
0 NaN
1 0.500000
2 1.000000
3 1.000000
4 1.000000
dtype: float64
Пример
Применим скользящую дисперсию с центрированием окна:
import pandas as pd
ser = pd.Series([1, 2, 3, 4, 5])
res = ser.rolling(window=3, center=True).var()
print(res)
Результат выполнения кода:
0 NaN
1 1.0
2 1.0
3 1.0
4 NaN
dtype: float64