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

Pandas 常用函数Pandas: общие функции


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 pandas as pd
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 pandas as pd
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 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, пропускает 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: Практическое применение — анализ волатильности доходности акций

Стандартное отклонение обычно используется в финансах для измерения риска.

Пример

import pandas as pd

# Смоделировать 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 常用函数Pandas: общие функции

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