Spec-Zone.ru › pandas 2

pandas.core.groupby.DataFrameGroupBy.aggregate

DataFrameGroupBy.aggregate(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
  • Если func равно None, **kwargs используются для определения имён выходных данных и агрегаций с помощью именованной агрегации. См. запись func

  • В противном случае — ключевые аргументы, передаваемые в func.

Возвращаемое значение:
DataFrame

См. также

DataFrame.groupby.apply

Применение функции func к каждой группе и объединение результатов.

DataFrame.groupby.transform

Преобразование Series в каждой группе на основе заданной функции.

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.NamedAgg namedtuple с полями ['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.aggregate.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API