pandas.core.groupby.DataFrameGroupBy.aggregate#
- DataFrameGroupBy.агрегировать(функция=None, *args, движок=None, engine_kwargs=None, **kwargs)[источник]#
Агрегировать с использованием одной или нескольких операций по указанной оси.
- Параметры:
- функцияфункция, строка, список, словарь или None
Функция для агрегирования данных. Если это функция, она должна работать либо при передаче DataFrame, либо при передаче в DataFrame.apply.
Допустимые комбинации:
функция
имя строковой функции
список функций и/или имён функций, например
[np.sum, 'mean']словарь меток осей -> функции, имена функций или список таких.
None, в этом случае
**kwargsиспользуются с именованной агрегацией. Здесь выходные данные имеют один столбец для каждого элемента в**kwargs. Имя столбца — это ключевое слово, а значение определяет агрегацию, используемую для вычисления значений в столбце.Также может принимать функцию Numba JIT с
engine='numba'указан. Только передача одной функции поддерживается этим движком.Если
'numba'выбран механизм, функция должна быть пользовательской функцией сvaluesиindexкак первый и второй аргументы соответственно в сигнатуре функции. Индекс каждой группы будет передан пользовательской функции и при необходимости доступен для использования.
- *args
Позиционные аргументы для передачи в func.
- движокstr, по умолчанию None
'cython': Запускает функцию через C-расширения из cython.'numba': Запускает функцию через JIT-скомпилированный код из numba.None: По умолчанию'cython'или глобальная установкаcompute.use_numba
- engine_kwargsdict, по умолчанию None
Для
'cython'движок, нет принятыхengine_kwargsДля
'numba'движок, движок может приниматьnopython,nogilиparallelключи словаря. Значения должны быть либоTrueилиFalse. По умолчаниюengine_kwargsдля'numba'движок это{'nopython': True, 'nogil': False, 'parallel': False}и будет применена к функции
- **kwargs
Если
funcравно None,**kwargsиспользуются для определения выходных имён и агрегаций через Named Aggregation. См.funcзапись.В противном случае, ключевые аргументы для передачи в func.
- Возвращает:
- DataFrame
Смотрите также
DataFrame.groupby.applyПрименить функцию func по группам и объединить результаты.
DataFrame.groupby.transformПреобразует Series в каждой группе на основе заданной функции.
DataFrame.aggregateАгрегировать с использованием одной или нескольких операций по указанной оси.
Примечания
При использовании
engine='numba', не будет внутреннего поведения "отката". Данные группы и индекс группы будут переданы как массивы numpy в JIT-компилированную пользовательскую функцию, и не будет предпринято попыток альтернативного выполнения.Функции, изменяющие переданный объект, могут вызывать неожиданное поведение или ошибки и не поддерживаются. См. Изменение с помощью методов пользовательских функций (UDF) для получения дополнительной информации.
Изменено в версии 1.3.0: Результирующий dtype будет отражать возвращаемое значение переданной
func, см. примеры ниже.Примеры
>>> data = {"A": [1, 1, 2, 2], ... "B": [1, 2, 3, 4], ... "C": [0.362838, 0.227877, 1.267767, -0.562860]} >>> df = pd.DataFrame(data) >>> df A B C 0 1 1 0.362838 1 1 2 0.227877 2 2 3 1.267767 3 2 4 -0.562860
Агрегация выполняется для каждого столбца.
>>> df.groupby('A').agg('min') B C A 1 1 0.227877 2 3 -0.562860
Множественные агрегации
>>> df.groupby('A').agg(['min', 'max']) B C min max min max A 1 1 2 0.227877 0.362838 2 3 4 -0.562860 1.267767
Выберите столбец для агрегации
>>> df.groupby('A').B.agg(['min', 'max']) min max A 1 1 2 2 3 4
Пользовательская функция для агрегации
>>> df.groupby('A').agg(lambda x: sum(x) + 2) B C A 1 5 2.590715 2 9 2.704907
Разные агрегации по столбцам
>>> df.groupby('A').agg({'B': ['min', 'max'], 'C': 'sum'}) B C min max sum A 1 1 2 0.590715 2 3 4 0.704907
Для управления именами выходных данных с разными агрегациями по столбцам, pandas поддерживает "именованную агрегацию"
>>> df.groupby("A").agg( ... b_min=pd.NamedAgg(column="B", aggfunc="min"), ... c_sum=pd.NamedAgg(column="C", aggfunc="sum") ... ) b_min c_sum A 1 1 0.590715 2 3 0.704907
Ключевые слова - это вывод имена столбцов
Значения являются кортежами, первый элемент которых — столбец для выбора, а второй — агрегация для применения к этому столбцу. Pandas предоставляет
pandas.NamedAggnamedtuple с полями['column', 'aggfunc']чтобы сделать аргументы более понятными. Как обычно, агрегация может быть вызываемым объектом или строковым псевдонимом.
См. Именованная агрегация подробнее.
Изменено в версии 1.3.0: Результирующий dtype будет отражать возвращаемое значение агрегирующей функции.
>>> df.groupby("A")[["B"]].agg(lambda x: x.astype(float).min()) B A 1 1.0 2 3.0