РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
612 of 687 menu

Метод var аксессора expanding

Метод var аксессора expanding применяется к Series или DataFrame и вычисляет расширяющуюся дисперсию. Это означает, что для каждой точки данных вычисляется дисперсия всех предыдущих значений, включая текущее. Метод полезен для анализа волатильности данных в динамике. Основной параметр метода ddof (дельта степеней свободы) позволяет контролировать смещение оценки дисперсии.

Синтаксис

series.expanding().var([ddof]) # или dataframe.expanding().var([ddof])

Параметр ddof определяет, на сколько уменьшается количество степеней свободы при вычислении дисперсии. По умолчанию ddof=1, что соответствует выборочной дисперсии. Если установить ddof=0, будет вычисляться дисперсия генеральной совокупности.

Пример

Рассмотрим базовый пример вычисления расширяющейся дисперсии для серии данных:

import pandas as pd ser = pd.Series([1, 2, 3, 4, 5]) res = ser.expanding().var() print(res)

Результат выполнения кода:

0 NaN 1 0.500000 2 1.000000 3 1.666667 4 2.500000 dtype: float64

Как видно из результата, для первого элемента дисперсия не определена и возвращается NaN. Для второго элемента дисперсия двух значений равна 0.5 и так далее.

Пример

Теперь рассмотрим использование параметра ddof для вычисления дисперсии генеральной совокупности:

import pandas as pd ser = pd.Series([1, 2, 3, 4, 5]) res = ser.expanding().var(ddof=0) print(res)

Результат выполнения кода:

0 0.000000 1 0.250000 2 0.666667 3 1.250000 4 2.000000 dtype: float64

В этом случае дисперсия для первого элемента равна 0, так как совокупность состоит из одного значения. Для последующих элементов значения отличаются от предыдущего примера.

Пример

Продемонстрируем работу метода var с DataFrame. В этом случае дисперсия вычисляется для каждого столбца отдельно:

import pandas as pd df = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [5, 4, 3, 2, 1] }) res = df.expanding().var() print(res)

Результат выполнения кода:

a b 0 NaN NaN 1 0.50 0.500000 2 1.00 1.000000 3 1.50 1.666667 4 2.00 2.500000

В результате каждый столбец содержит свою расширяющуюся дисперсию. Обратите внимание, что для столбца 'b' значения зеркально отражают дисперсию столбца 'a' из-за обратного порядка чисел.

Пример

Рассмотрим ситуацию с пропущенными значениями. По умолчанию метод var игнорирует NaN при вычислении дисперсии на каждом шаге:

import pandas as pd import numpy as np ser = pd.Series([1, np.nan, 3, 4, 5]) res = ser.expanding().var() print(res)

Результат выполнения кода:

0 NaN 1 NaN 2 2.000000 3 2.333333 4 2.500000 dtype: float64

На втором шаге дисперсия не вычисляется из-за наличия пропущенного значения. На третьем шаге дисперсия вычисляется на основе значений 1, 3 и равна 2.0.

Смотрите также

  • метод mean аксессора expanding,
    который вычисляет расширяющееся среднее
  • метод std аксессора expanding,
    который вычисляет расширяющееся стандартное отклонение
  • метод sum аксессора expanding,
    который вычисляет расширяющуюся сумму
  • метод count аксессора expanding,
    который подсчитывает количество ненулевых элементов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить