Метод var
Метод var применяется к объекту GroupBy
и возвращает дисперсию значений для каждой группы.
По умолчанию вычисляется несмещённая дисперсия (с делителем n-1).
Метод имеет параметр ddof, который позволяет
задать степень свободы: по умолчанию 1.
Синтаксис
groupby_obj.var(ddof=1)
Пример
Давайте сгруппируем данные по столбцу a
и вычислим дисперсию для столбца b:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3],
'b': [10, 20, 30, 40, 50, 60]
})
grouped = df.groupby('a')
res = grouped.var()
print(res)
Результат выполнения кода:
b
a
1 50.0
2 50.0
3 50.0
Пример
Изменим параметр ddof на 0,
чтобы вычислить смещённую дисперсию:
import pandas as pd
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3],
'b': [10, 20, 30, 40, 50, 60]
})
grouped = df.groupby('a')
res = grouped.var(ddof=0)
print(res)
Результат выполнения кода:
b
a
1 25.0
2 25.0
3 25.0
Пример
Рассмотрим вычисление дисперсии для нескольких столбцов одновременно:
import pandas as pd
df = pd.DataFrame({
'group': ['x', 'x', 'y', 'y', 'z', 'z'],
'b': [5, 15, 25, 35, 45, 55],
'c': [2, 8, 18, 28, 38, 48]
})
grouped = df.groupby('group')
res = grouped.var()
print(res)
Результат выполнения кода:
b c
group
x 50.0 18.0
y 50.0 50.0
z 50.0 50.0
Пример
Если в данных есть пропуски (NaN),
они автоматически исключаются из расчётов:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 1, 2, 2, 3, 3],
'b': [10, np.nan, 30, 40, 50, 60]
})
grouped = df.groupby('a')
res = grouped.var()
print(res)
Результат выполнения кода:
b
a
1 NaN
2 50.0
3 50.0