pandas.core.groupby.DataFrameGroupBy.agg
- DataFrameGroupBy.agg(func=None, *args, engine=None, engine_kwargs=None, **kwargs)[source]
-
Агрегирование с использованием одной или нескольких операций по указанной оси.
- Параметры:
-
- func:функция, строка, список, словарь или None
-
Функция для агрегирования данных. Если функция, то она должна работать как с DataFrame, так и с методом DataFrame.apply.
Допустимые комбинации:
функция
имя функции в виде строки
список функций и/или имён функций, например
[np.sum, 'mean']словарь меток оси -> функций, имён функций или списков таких.
-
None, в этом случае
**kwargsиспользуются с именованным агрегированием. Здесь на выходе будет по одному столбцу для каждого элемента в**kwargs. Имя столбца — это ключевое слово, а значение определяет используемую агрегацию для вычисления значений в столбце.Также может принимать функцию Numba JIT с
engine='numba'указанным. Поддерживается только передача одной функции с этим движком.Если выбран движок
'numba', функция должна быть пользовательской функцией сvaluesиindexв качестве первого и второго аргументов соответственно в сигнатуре функции. Индекс каждой группы будет передан пользовательской функции и, при необходимости, доступен для использования.
- *args
-
Позиционные аргументы для передачи функции func.
- engine:строка, по умолчанию None
-
'cython': Выполняет функцию через C-расширения из cython.'numba': Выполняет функцию через JIT-скомпилированный код из numba.None: По умолчанию'cython'или глобальное заданиеcompute.use_numba
- engine_kwargs:словарь, по умолчанию None
-
Для движка
'cython'нет допустимыхengine_kwargsДля движка
'numba'движок может приниматьnopython,nogilиparallelключи словаря. Значения должны бытьTrueилиFalse. По умолчаниюengine_kwargsдля движка'numba'—{'nopython': True, 'nogil': False, 'parallel': False}и будет применено к функции
- **kwargs
-
Если
funcNone,**kwargsиспользуются для определения имён выходных данных и агрегаций с помощью именованного агрегирования. См. записьfuncВ противном случае, ключевые слова аргументов для передачи в func.
- Возвращаемое значение:
-
- DataFrame
См. также
DataFrame.groupby.apply-
Применение функции func к каждой группе и объединение результатов.
DataFrame.groupby.transform-
Преобразование ряда в каждой группе на основе заданной функции.
DataFrame.aggregate-
Агрегирование с использованием одной или нескольких операций по указанной оси.
Примечания
При использовании
engine='numba', внутренней «обработки по умолчанию» не будет. Данные группы и индекс группы будут переданы как массивы NumPy в JIT-скомпилированную пользовательскую функцию, и другие попытки выполнения не будут предприниматься.Функции, изменяющие переданный объект, могут привести к неожиданному поведению или ошибкам и не поддерживаются. См. Изменение с использованием пользовательских функций (UDF) для получения дополнительной информации.
Изменено в версии 1.3.0: Тип результата будет отражать возвращаемое значение переданной
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: Тип результата будет отражать возвращаемое значение агрегирующей функции.
>>> df.groupby("A")[["B"]].agg(lambda x: x.astype(float).min()) B A 1 1.0 2 3.0
© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.core.groupby.DataFrameGroupBy.agg.html