DataFrame.var() / Series.var()

Метод var() вычисляет несмещённую дисперсию (по умолчанию ddof=1) — меру разброса значений вокруг среднего. Используется для оценки шумности сигнала с датчиков, стабильности измерений, контроля качества.

Сигнатура

DataFrame.var(axis=0, skipna=True, ddof=1, numeric_only=False)
Series.var(axis=None, skipna=True, ddof=1, numeric_only=False)

Параметры

  • axis — 0 (по столбцам) или 1 (по строкам) для DataFrame.

  • skipna — игнорировать ли NaN.

  • ddof — поправка делителя: знаменатель N - ddof. ddof=1 — выборочная дисперсия, ddof=0 — генеральная.

  • numeric_only — учитывать только числовые столбцы.

Возвращаемое значение

Скаляр (для Series) или Series (для DataFrame).

Примеры

Пример 1. Дисперсия Series

import pandas as pd

s = pd.Series([23.5, 23.6, 23.4, 23.5, 23.7])
print(round(s.var(), 5))
0.013

Пример 2. Сравнение двух датчиков

import pandas as pd

df = pd.DataFrame({
    "sensor_A": [23.5, 23.6, 23.4, 23.5, 23.7],
    "sensor_B": [21.0, 25.5, 20.1, 27.0, 22.8],
})
print(df.var().round(3))
sensor_A     0.013
sensor_B     8.367
dtype: float64

Сенсор B заметно более шумный.

Пример 3. ddof=0 — генеральная дисперсия

import pandas as pd

s = pd.Series([1, 2, 3, 4, 5])
print(s.var(ddof=1))  # выборочная
print(s.var(ddof=0))  # генеральная
2.5
2.0

Пример 4. Игнорирование NaN

import pandas as pd
import numpy as np

s = pd.Series([10, np.nan, 12, 11, np.nan])
print(round(s.var(), 3))
1.0

Пример 5. Стандартное отклонение через корень

import pandas as pd
import math

s = pd.Series([100, 102, 98, 101, 99])
print(round(math.sqrt(s.var()), 3))
print(round(s.std(), 3))
1.581
1.581

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.