df = DataFrame.aggregate(func=None, axis=0, *args, **kwargs) s = Series.aggregate(func=None, *args, **kwargs) # или псевдоним (рекомендуется) df = DataFrame.agg(func=None, axis=0, *args, **kwargs) s = Series.agg(func=None, *args, **kwargs)
func=None
- функция, используемая для агрегирования данных. Если функция, то она должна работать либо при передаче DataFrame
, либо при передаче в DataFrame.apply()
.
Допустимые комбинации:
[np.sum, 'mean']
axis=0
- если 0 или 'index'
: применить функцию к каждому столбцу. Если 1 или 'columns'
: применить функцию к каждой строке.
Методы
Series.aggregate()
иSeries.agg()
аргументaxis
не использует и всегда равен 0.
*args
- позиционные аргументы для передачи аргументу func
.
**kwargs
- ключевые аргументы для передачи аргументу func
.
Возвращает Скаляр, Series
или DataFrame
:
Series.agg()
вызывается с одной функциейSeries
: когда DataFrame.agg()
вызывается с одной функции.DataFrame
: когда DataFrame.agg()
вызывается с несколькими функциями.Метод DataFrame.aggregate()
библиотеки pandas
применяет одну или несколько групповых операций (агрегирующих функций) к данным DataFrame
по указанной оси axis
.
Метод Series.aggregate()
библиотеки pandas
применяет одну или несколько групповых операций (агрегирующих функций) к данным Series
.
Для DataFrame
, операции агрегирования всегда выполняются по оси - индексу (по умолчанию) или оси столбцов. Это поведение отличается от функций агрегирования numpy
(mean
, median
, prod
, sum
, std
, var
), где по умолчанию вычисляется агрегирование плоского массива, например, numpy.mean(arr_2d)
, а не numpy.mean(arr_2d, axis=0)
.
Методы DataFrame.agg()
и Series.agg()
- это псевдоним для DataFrame.aggregate()
и Series.aggregate()
соответственно. Пользователям библиотеки рекомендуется использовать псевдоним.
Функции, изменяющие переданный объект, могут приводить к непредвиденному поведению или ошибкам и не поддерживаются.
DataFrame.agg()
:Еще больше примеров смотрите в разделе "Метод DataFrameGroupBy.aggregate()" в материале "Группировка данных DataFrame/Series в pandas".
Создадим DataFrame
, который будем использовать в примерах:
>>> import numpy as np >>> import pandas as pd df = pd.DataFrame([[1, 2, 3], [4, 5, 6], [7, 8, 9], [np.nan, np.nan, np.nan]], columns=['A', 'B', 'C']) >>> df A B C 0 1.0 2.0 3.0 1 4.0 5.0 6.0 2 7.0 8.0 9.0 3 NaN NaN NaN
Применение нескольких групповых функции к DataFrame
>>> df.agg(['sum', 'min']) A B C sum 12.0 15.0 18.0 min 1.0 2.0 3.0
Различные агрегации для каждого столбца
>>> df.agg({'A' : ['sum', 'min'], 'B' : ['min', 'max']}) A B sum 12.0 NaN min 1.0 2.0 max NaN 8.0
Объединим различные групповые функции по столбцам и переименуем индекс полученного DataFrame
.
>>> df.agg(x=('A', 'max'), y=('B', 'min'), z=('C', 'mean')) A B C x 7.0 NaN NaN y NaN 2.0 NaN z NaN NaN 6.0
Агрегация данных по столбцам DataFrame
>>> df.agg("mean", axis="columns") 0 2.0 1 5.0 2 8.0 3 NaN dtype: float64
Series.agg()
:Создадим Series
, который будем использовать в примерах:
>>> s = pd.Series([1, 2, 3, 4]) >>> s 0 1 1 2 2 3 3 4 dtype: int64
Применение одной групповой функции к Series
>>> s.agg('min') 1
Применение нескольких групповых функции к Series
>>> s.agg(['min', 'max']) min 1 max 4 dtype: int64
Многие распространенные функции агрегирования встроены в объекты Series
/DataFrame
в качестве методов. В перечисленных ниже методах те, у которых есть *
, не имеют оптимизированной для Cython реализации.
Метод `GroupBy` | Описание |
any() | являются ли какие-либо значения в группах истинными |
all() | являются ли истинными все значения в группах |
count() | количество значений, отличных от NA, в группах |
cov() * | ковариация групп |
first() | первое встречающееся значение в каждой группе |
idxmax() * | индекс максимального значения в каждой группе |
idxmin() * | индекс минимального значения в каждой группе |
last() | последнее встречающееся значение в каждой группе |
max() | максимальное значение в каждой группе |
mean() | среднее значение для каждой группы |
median() | медиана каждой группы |
min() | минимальное значение в каждой группе |
nunique() | количество уникальных значений в каждой группе |
prod() | произведение значений в каждой группе |
quantile() | заданный квантиль значений в каждой группе |
sem() | стандартная ошибка среднего значения значений в каждой группе |
size() | количество значений в каждой группе |
skew() * | перекос значений в каждой группе |
std() | стандартное отклонение значений в каждой группе |
sum() | сумма значений в каждой группе |
var() | разница значений в каждой группе |