Метод agg аксессора rolling
Метод agg аксессора rolling применяется к объекту Rolling
и возвращает агрегированные значения по скользящему окну.
Первым параметром можно передать одну функцию, список функций
или словарь с указанием столбцов и функций.
Если передаётся несколько функций, результат будет содержать
многоуровневые столбцы.
Синтаксис
rolling_object.agg(func)
Пример
Давайте создадим таблицу и применим агрегацию суммы к скользящему окну:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df['a'].rolling(window=3).agg('sum')
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 6.0
3 9.0
4 12.0
dtype: float64
Пример
Передадим список из нескольких функций для агрегации:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(window=3).agg(['sum', 'mean'])
print(res)
Результат выполнения кода:
a b
sum mean sum mean
0 NaN NaN NaN NaN
1 NaN NaN NaN NaN
2 6.0 2.0 60.0 20.0
3 9.0 3.0 90.0 30.0
4 12.0 4.0 120.0 40.0
Пример
Используем словарь для применения разных функций к разным столбцам:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.rolling(window=3).agg({
'a': 'sum',
'b': 'mean'
})
print(res)
Результат выполнения кода:
a b
0 NaN NaN
1 NaN NaN
2 6.0 20.0
3 9.0 30.0
4 12.0 40.0
Пример
Применим пользовательскую функцию для агрегации:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
def custom_range(x):
return np.max(x) - np.min(x)
res = df['a'].rolling(window=3).agg(custom_range)
print(res)
Результат выполнения кода:
0 NaN
1 NaN
2 2.0
3 2.0
4 2.0
dtype: float64