Функция Pandas Series.var()

Pandas 常用函数Часто используемые функции Pandas


Series.var()Это функция в Pandas, используемая для вычисления дисперсии Series. Дисперсия — это квадрат стандартного отклонения. Она измеряет разброс данных и является фундаментальной метрикой в статистическом анализе.

Чем больше дисперсия, тем более разбросаны данные; чем меньше дисперсия, тем более концентрированы данные. Она широко используется в таких областях, как статистический анализ, машинное обучение и обработка сигналов.


Базовый синтаксис и параметры

var()Это функция-член объекта Series, вызываемая напрямую через точечный оператор.

Формат синтаксиса

Series.var(axis=None, skipna=True, level=None, numeric_only=None, ddof=1, **kwargs)

Описание параметра

Параметр Type Описание Значение по умолчанию
axis int Указывает ось. Series содержит только одну строку данных; этот параметр в основном для совместимости с DataFrame. Отсутствует
skipna bool Если True, пропускать значения NaN при вычислении; если False, результат вернет NaN при обнаружении NaN. True
level int или str Если Series имеет MultiIndex, укажите уровень для вычисления. Отсутствует
numeric_only bool Если True, вычислять только для числовых данных; иначе будет предпринята попытка преобразования в числовой тип. False
ddof int Параметр корректировки степеней свободы. ddof=1 использует выборочную дисперсию (n-1), ddof=0 использует генеральную дисперсию (n). 1

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

  • Тип возвращаемого значения:float
  • ОписаниеВозвращает дисперсию элементов в Series. По умолчанию используется выборочная дисперсия (делённая на n-1).

Примеры

Через серию примеров от простых к сложным давайте тщательно освоимSeries.var()его использование.

Пример 1: Базовое использование — понимание понятия дисперсии

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

Пример

import pandas as pd

# Два набора данных
group_a = pd.Series([85, 86, 87, 88, 89])
group_b = pd.Series([70, 75, 85, 95, 100])

print("Данные группы A (более сконцентрированные):")
print(group_a)
print(f"Среднее: {group_a.mean():.2f}")
print(f"Дисперсия: {group_a.var():.2f}")
print(f"Стандартное отклонение: {group_a.std():.2f}")
print()

print("Данные группы B (более разбросанные):")
print(group_b)
print(f"Среднее: {group_b.mean():.2f}")
print(f"Дисперсия: {group_b.var():.2f}")
print(f"Стандартное отклонение: {group_b.std():.2f}")
print()

print("Примечание: дисперсия — это квадрат стандартного отклонения (2.50^2 = 6.25, 12.50^2 = 156.25)")

Вывод:

A组数据(较集中):
0    85
1    86
2    87
3    88
4    89
dtype: int64
平均值:85.00
方差:2.50
标准差:1.58

B组数据(较分散):
0    70
1    75
2    85
3    95
4   100
dtype: int64
平均值:85.00
方差:156.25
标准差:12.50

注意:方差是标准差的平方 (1.58^2 ≈ 2.50, 12.50^2 = 156.25)

Анализ кода:

  • Группа A имеет дисперсию 2.50, данные очень сконцентрированы.
  • Группа B имеет дисперсию 156.25, данные очень разбросаны.
  • Дисперсия = стандартное отклонение² (приближённое значение обусловлено поправкой ddof=1).

Пример 2: Роль параметра ddof

ddofЭтот параметр определяет, использовать выборочную дисперсию или генеральную дисперсию.

Пример

import pandas as pd

# Создать набор данных
data = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])

print("Данные:")
print(data)
print()

# По умолчанию ddof=1, использовать выборочную дисперсию (делится на n-1)
sample_var = data.var(ddof=1)
print(f"Выборочная дисперсия (ddof=1): {sample_var:.4f}")

# ddof=0, использовать дисперсию генеральной совокупности (деление на n)
population_var = data.var(ddof=0)
print(f"Дисперсия генеральной совокупности (ddof=0): {population_var:.4f}")
print()

# Проверка: квадратный корень из выборочной дисперсии приблизительно равен выборочному стандартному отклонению
import math
print(f"Квадратный корень из выборочной дисперсии: {math.sqrt(sample_var):.4f}")
print(f"Выборочное стандартное отклонение: {data.std():.4f}")

Вывод:

数据:
0    2
1    4
2    4
3    4
4    5
5    5
6    7
7    9
dtype: int64

样本方差(ddof=1):5.1429
总体方差(ddof=0):4.5000

样本方差的平方根:2.2678
样本标准差:2.2678

Пример 3: Обработка данных, содержащих пропущенные значения

Пример

import pandas as pd
import numpy as np

# Создать Series, содержащий пропущенные значения
data_with_nan = pd.Series([10, 20, np.nan, 30, 40, np.nan, 50])

print("Данные, содержащие пропущенные значения:")
print(data_with_nan)
print()

# По умолчанию skipna=True
var_skipna = data_with_nan.var()
print(f"Дисперсия при skipna=True (по умолчанию): {var_skipna:.4f}")

# Установить skipna=False
var_no_skipna = data_with_nan.var(skipna=False)
print(f"Дисперсия при skipna=False: {var_no_skipna}")

Вывод:

包含缺失值的数据:
0    10.0
1    20.0
2       NaN
3    30.0
4    40.0
5       NaN
6    50.0
dtype: float64

skipna=True(默认)时的方差:250.0000
skipna=False 时的方差:nan

Пример 4: Сравнение практического применения дисперсии и стандартного отклонения

В практических приложениях у дисперсии и стандартного отклонения есть свои преимущества.

Пример

import pandas as pd

# Моделирование месячной доходности (%) двух инвестиционных портфелей
portfolio_a = pd.Series([2.5, 3.0, -1.0, 1.5, 2.0, 2.8, -0.5, 1.2, 1.8, 2.2])
portfolio_b = pd.Series([5.0, -3.5, 8.0, -2.0, 6.5, -4.0, 7.0, -1.5, 4.5, -2.0])

print("Портфель A (месячная доходность %):")
print(portfolio_a)
print(f"Дисперсия: {portfolio_a.var():.4f}")
print(f"Стандартное отклонение (волатильность): {portfolio_a.std():.2f}%")
print()

print("Портфель B (месячная доходность %):")
print(portfolio_b)
print(f"Дисперсия: {portfolio_b.var():.4f}")
print(f"Стандартное отклонение (волатильность): {portfolio_b.std():.2f}%")
print()

print("Анализ:")
print("- Портфель A имеет меньшую дисперсию и стандартное отклонение и работает более стабильно")
print("- Портфель B имеет большую дисперсию и стандартное отклонение и несет более высокий риск")
print("- С точки зрения риска портфель A больше подходит консервативным инвесторам")

Вывод:

投资组合 A(月度收益 %):
0    2.5
1    3.0
2   1.0
3    1.5
4    2.0
5    2.8
6    0.5
7    1.2
8    1.8
9    2.2
dtype: int64
方差:1.29
标准差(波动率):1.14%

投资组合 B(月度收益 %):
0    5.0
1   -3.5
2    8.0
3   -2.0
4    6.5
5   -4.0
6    7.0
7   -1.5
8    4.5
9   -2.0
dtype: int64
方差:19.56
标准差(波动率):4.42%

分析:组合 B 的风险(波动率)约是组合 A 的 4 倍。

Примечания

  • Дисперсия — это квадрат стандартного отклонения. Связь между ними: std = sqrt(var).
  • По умолчанию используется выборочная дисперсия (ddof=1), что подходит для статистического анализа.
  • Единица дисперсии — это квадрат исходной единицы данных, что не очень интуитивно понятно; стандартное отклонение сохраняет исходную единицу, и его легче интерпретировать.
  • В случаях, когда дисперсия нужна для математических расчетов (например, при анализе ковариации), следует использовать дисперсию.

Итог

Series.var()Это базовая функция в статистическом анализе. Ее основные особенности включают:

  • По умолчанию используется выборочная дисперсия (ddof=1).
  • Дисперсия — это квадрат стандартного отклонения, что удобнее в математических операциях.
  • Стандартное отклонение сохраняет исходную единицу, и его легче понять интуитивно.
  • В финансовой сфере и дисперсия, и стандартное отклонение используются для измерения риска (волатильности).

В практических приложениях, если нужно интуитивно понять разброс данных, более уместно использовать стандартное отклонение; если нужно выполнять математические операции (например, вычислять ковариацию), удобнее использовать дисперсию.

Pandas 常用函数Часто используемые функции Pandas

Другие расширения