Метод std
Метод std применяется к объекту Resampler,
который создаётся методом resample у DataFrame
или Series с индексом типа DatetimeIndex.
Он вычисляет стандартное отклонение (выборочное) значений
в каждой группе, образованной при передискретизации.
Результатом является новый объект той же размерности,
где каждому интервалу времени соответствует одно число -
стандартное отклонение для этого периода.
Синтаксис
resampler.std([ddof])
Параметр ddof (число степеней свободы) необязателен.
По умолчанию равен 1 (выборочное стандартное отклонение).
Если передать 0, будет вычислено стандартное отклонение
генеральной совокупности.
Пример
Создадим временной ряд с ежедневными данными и вычислим стандартное отклонение по недельным интервалам:
import pandas as pd
import numpy as np
dates = pd.date_range('2025-01-01', periods=14, freq='D')
ser = pd.Series([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], index=dates)
res = ser.resample('W').std()
print(res)
Результат выполнения кода:
2025-01-05 1.581139
2025-01-12 2.160247
2025-01-19 3.535534
Freq: W-SUN, dtype: float64
Пример
Теперь рассчитаем стандартное отклонение с параметром
ddof=0 (для генеральной совокупности)
для того же ряда по 3-дневным интервалам:
import pandas as pd
import numpy as np
dates = pd.date_range('2025-01-01', periods=9, freq='D')
ser = pd.Series([2, 4, 6, 8, 10, 12, 14, 16, 18], index=dates)
res = ser.resample('3D').std(ddof=0)
print(res)
Результат выполнения кода:
2025-01-01 1.632993
2025-01-04 1.632993
2025-01-07 1.632993
Freq: 3D, dtype: float64
Пример
Применим метод std к DataFrame
с несколькими столбцами и агрегацией по месяцам:
import pandas as pd
import numpy as np
dates = pd.date_range('2025-01-01', periods=12, freq='D')
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
'b': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 110, 120]
}, index=dates)
res = df.resample('M').std()
print(res)
Результат выполнения кода:
a b
2025-01-31 3.605551 36.055513