Метод expanding
Метод expanding применяется к DataFrame
и создаёт объект расширяющегося окна. В отличие от
скользящего окна, расширяющееся окно включает все
предыдущие строки на каждом шаге. Основной параметр
метода - min_periods, который задаёт минимальное
количество наблюдений в окне для вычисления значения.
По умолчанию min_periods равен 1.
Синтаксис
df.expanding([min_periods])
Пример
Давайте вычислим кумулятивную сумму для столбца 'a':
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['a'].expanding().sum()
print(res)
Результат выполнения кода:
0 1.0
1 3.0
2 6.0
3 10.0
4 15.0
dtype: float64
Пример
Рассчитаем кумулятивное среднее для столбца 'b':
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['b'].expanding().mean()
print(res)
Результат выполнения кода:
0 10.0
1 15.0
2 20.0
3 25.0
4 30.0
dtype: float64
Пример
Используем параметр min_periods, чтобы
начинать вычисления только с определённого количества
строк:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.expanding(min_periods=3).sum()
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 6.0 60.0
3 10.0 100.0
4 15.0 150.0
Пример
Применим расширяющееся окно для вычисления кумулятивного максимума и минимума:
import pandas as pd
df = pd.DataFrame({
'a': [1, 5, 3, 7, 2],
'b': [10, 30, 20, 50, 40]
})
res_max = df.expanding().max()
res_min = df.expanding().min()
print("Max:\n", res_max)
print("Min:\n", res_min)
Результат выполнения кода:
Max:
a b
0 1 10
1 5 30
2 5 30
3 7 50
4 7 50
Min:
a b
0 1 10
1 1 10
2 1 10
3 1 10
4 1 10
Пример
Вычислим кумулятивное стандартное отклонение с расширяющимся окном:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.expanding().std()
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 0.707107 7.071068
2 1.000000 10.000000
3 1.290994 12.909944
4 1.581139 15.811388