Функция Pandas Series.std()
Series.std()Это функция в Pandas для вычисления стандартного отклонения Series. Стандартное отклонение — это мера разброса данных, представляющая среднюю степень отклонения данных от их среднего значения.
Чем больше стандартное отклонение, тем более разбросаны данные; чем меньше стандартное отклонение, тем более сконцентрированы данные. Оно часто используется в таких сценариях, как контроль качества, оценка рисков и анализ экзаменационных баллов.
Базовый синтаксис и параметры
std()Это метод объекта Series, вызываемый напрямую через оператор точки.
Формат синтаксиса
Series.std(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.std()использование.
Пример 1: базовое использование — понимание концепции стандартного отклонения
Стандартное отклонение измеряет разброс данных; чем больше значение, тем более рассеяны данные.
Пример
import numpy as np
# Два набора данных с оценками
# Группа A: оценки относительно сконцентрированы
group_a = pd.Series([85, 86, 87, 88, 89])
# Группа B: оценки относительно разбросаны
group_b = pd.Series([70, 75, 85, 95, 100])
print("Оценки группы A (более сконцентрированы):")
print(group_a)
print(f"Среднее: {group_a.mean():.2f}")
print(f"Стандартное отклонение: {group_a.std():.2f}")
print()
print("Баллы группы B (более разбросанные):")
print(group_b)
print(f"Среднее: {group_b.mean():.2f}")
print(f"Стандартное отклонение: {group_b.std():.2f}")
print()
print("Анализ: хотя у двух групп одинаковое среднее (85), у группы B больше стандартное отклонение, что указывает на большие различия в баллах.")
Вывод:
A组成绩(较集中): 0 85 1 86 2 87 3 88 4 89 dtype: int64 平均值:85.00 标准差:1.58 B组成绩(较分散): 0 70 1 75 2 85 3 95 4 100 dtype: int64 平均值:85.00 标准差:12.50 分析:虽然两组平均值相同(85),但 B 组标准差更大,说明成绩差异更大。
Пояснение кода:
- Стандартное отклонение группы A составляет около 1.58, данные очень сконцентрированы.
- Стандартное отклонение группы B составляет около 12.50, данные гораздо более разбросаны.
- Это показывает, что даже при одинаковом среднем распределение данных может быть совершенно различным.
Пример 2: Роль параметра ddof
ddofПараметр управляет тем, использовать выборочное стандартное отклонение или стандартное отклонение генеральной совокупности.
import numpy as np
# Создать набор данных
data = pd.Series([2, 4, 4, 4, 5, 5, 7, 9])
print("Данные:")
print(data)
print()
# По умолчанию ddof=1, используется выборочное стандартное отклонение (делится на n-1)
sample_std = data.std(ddof=1)
print(f"Выборочное стандартное отклонение (ddof=1): {sample_std:.4f}")
# ddof=0, используется стандартное отклонение генеральной совокупности (делится на n)
population_std = data.std(ddof=0)
print(f"Стандартное отклонение генеральной совокупности (ddof=0): {population_std:.4f}")
print()
print("Пояснение:")
print("Выборочное стандартное отклонение = sqrt(sum((x-mean)^2) / (n-1))")
print("Стандартное отклонение генеральной совокупности = sqrt(sum((x-mean)^2) / n)")
print("Когда объём данных большой, разница между ними очень мала.")
Вывод:
数据: 0 2 1 4 2 4 3 4 4 5 5 5 6 7 7 9 dtype: int64 样本标准差(ddof=1):2.2678 总体标准差(ddof=0):2.1213
Пояснение кода:
- Выборочное стандартное отклонение (ddof=1) использует n-1 в качестве делителя и подходит для выборок, взятых из генеральной совокупности.
- Стандартное отклонение генеральной совокупности (ddof=0) использует n в качестве делителя и подходит для всего набора данных.
- В Pandas по умолчанию используется ddof=1, то есть выборочное стандартное отклонение.
Пример 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, пропускает NaN при вычислении стандартного отклонения
std_skipna = data_with_nan.std()
print(f"Стандартное отклонение при skipna=True (по умолчанию): {std_skipna:.4f}")
# Установить skipna=False
std_no_skipna = data_with_nan.std(skipna=False)
print(f"Стандартное отклонение при skipna=False: {std_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(默认)时的标准差:15.8114 skipna=False 时的标准差:nan
Пример 4: Практическое применение — анализ волатильности доходности акций
Стандартное отклонение обычно используется в финансах для измерения риска.
Пример
# Смоделировать 10 дней ежедневной доходности (%) для двух акций
stock_a = pd.Series([1.2, 0.8, -0.5, 1.5, 0.3, -0.2, 1.0, 0.7, -0.3, 0.5])
stock_b = pd.Series([3.5, -2.0, 4.2, -1.5, 2.8, -3.0, 1.2, -0.8, 3.0, -2.4])
print("Дневная доходность акции A (%):")
print(stock_a)
print(f"Средняя доходность: {stock_a.mean():.2f}%")
print(f"Волатильность (стандартное отклонение): {stock_a.std():.2f}%")
print()
print("Дневная доходность акции B (%):")
print(stock_b)
print(f"Средняя доходность: {stock_b.mean():.2f}%")
print(f"Волатильность (стандартное отклонение): {stock_b.std():.2f}%")
print()
print("Анализ:")
print("У акции B больше стандартное отклонение, что указывает на более волатильную доходность и более высокий риск.")
print("Хотя их средние доходности могут быть схожими, уровень риска различается.")
Вывод:
股票 A 日收益率(%): 0 1.2 1 0.8 2 -0.5 3 1.5 4 0.3 5 -0.2 6 1.0 7 0.7 8 -0.3 9 0.5 dtype: int64 平均收益率:0.60% 波动率(标准差):0.68% 股票 B 日收益率(%): 0 3.5 1 -2.0 2 4.2 3 -1.5 4 2.8 5 -3.0 6 1.2 7 -0.8 8 3.0 9 -2.4 dtype: int64 平均收益率:0.60% 波动率(标准差):2.59% 分析:股票 B 的波动率是股票 A 的约 4 倍,说明风险高得多。
Примечания
- По умолчанию используется выборочное стандартное отклонение (ddof=1), подходящее для статистического анализа.
- Если вам нужно рассчитать стандартное отклонение генеральной совокупности, установите ddof=0.
- Единица измерения стандартного отклонения совпадает с единицей исходных данных, что делает его интуитивно понятным.
- Чем больше стандартное отклонение, тем более разбросаны данные; чем меньше стандартное отклонение, тем более сконцентрированы данные.
Итог
Series.std()Это важная функция для измерения разброса данных. Её основные особенности включают:
- По умолчанию она использует выборочное стандартное отклонение (ddof=1), которое больше подходит для статистического анализа.
- Её можно использовать вместе с
mean()чтобы всесторонне описать характеристики распределения данных. - В финансах стандартное отклонение часто используется для измерения риска (волатильности).
- Квадрат стандартного отклонения — это дисперсия (
var())。
В реальном анализе данных стандартное отклонение часто используется вместе с такими показателями, как среднее значение и медиана, чтобы сформировать полное представление о распределении данных.
Другие расширения
Pandas: общие функции