Функция Pandas Series.var()
Часто используемые функции 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: Базовое использование — понимание понятия дисперсии
Дисперсия — это квадрат стандартного отклонения, измеряющий степень отклонения данных от среднего.
Пример
# Два набора данных
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Этот параметр определяет, использовать выборочную дисперсию или генеральную дисперсию.
Пример
# Создать набор данных
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 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: Сравнение практического применения дисперсии и стандартного отклонения
В практических приложениях у дисперсии и стандартного отклонения есть свои преимущества.
Пример
# Моделирование месячной доходности (%) двух инвестиционных портфелей
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).
- Дисперсия — это квадрат стандартного отклонения, что удобнее в математических операциях.
- Стандартное отклонение сохраняет исходную единицу, и его легче понять интуитивно.
- В финансовой сфере и дисперсия, и стандартное отклонение используются для измерения риска (волатильности).
В практических приложениях, если нужно интуитивно понять разброс данных, более уместно использовать стандартное отклонение; если нужно выполнять математические операции (например, вычислять ковариацию), удобнее использовать дисперсию.
Другие расширения