pandas.DataFrame.groupby#

DataFrame.groupby(by=None, axis=, level=None, as_index=True, sort=True, group_keys=True, observed=, dropna=True)[источник]#

Группировка DataFrame с использованием маппера или по Series столбцов.

Операция группировки включает комбинацию разделения объекта, применения функции и объединения результатов. Это можно использовать для группировки больших объемов данных и выполнения операций над этими группами.

Параметры:
byотображение, функция, метка, pd.Grouper или список таких

Используется для определения групп для groupby. Если by является функцией, она вызывается для каждого значения индекса объекта. Если передан словарь или Series, значения Series или словаря будут использоваться для определения групп (значения Series сначала выравниваются; см. .align() метод). Если передан список или ndarray длины, равной выбранной оси (см. руководство по groupby), значения используются как есть для определения групп. Метка или список меток может быть передан для группировки по столбцам в self. Обратите внимание, что кортеж интерпретируется как (одиночный) ключ.

ось{0 или 'index', 1 или 'columns'}, по умолчанию 0

Разделение по строкам (0) или столбцам (1). Для Series этот параметр не используется и по умолчанию равен 0.

Устарело с версии 2.1.0: Будет удалено и будет вести себя как axis=0 в будущей версии. Для axis=1, сделайте frame.T.groupby(...) вместо этого.

уровеньint, имя уровня или последовательность таких, по умолчанию None

Если ось является MultiIndex (иерархическим), группировка по определенному уровню или уровням. Не указывайте оба by и level.

as_indexbool, по умолчанию True

Возвращает объект с метками групп в качестве индекса. Актуально только для ввода DataFrame. as_index=False фактически даёт вывод в "SQL-стиле". Этот аргумент не влияет на фильтрации (см. фильтрации в руководстве пользователя), такие как head(), tail(), nth() и в преобразованиях (см. преобразования в руководстве пользователя).

sortbool, по умолчанию True

Сортировка ключей группировки. Получите лучшую производительность, отключив это. Обратите внимание, это не влияет на порядок наблюдений внутри каждой группы. Groupby сохраняет порядок строк внутри каждой группы. Если False, группы будут появляться в том же порядке, в котором они были в исходном DataFrame. Этот аргумент не влияет на фильтрации (см. фильтрации в руководстве пользователя), такие как head(), tail(), nth() и в преобразованиях (см. преобразования в руководстве пользователя).

Изменено в версии 2.0.0: Указание sort=False с упорядоченным категориальным группировщиком больше не будет сортировать значения.

group_keysbool, по умолчанию True

При вызове apply и by аргумент создаёт подобно-индексированный (т.е. преобразование) результат, добавьте ключи групп к индексу для идентификации частей. По умолчанию ключи групп не включаются, когда метки индекса (и столбца) результата совпадают с входными данными, и включаются в противном случае.

Изменено в версии 1.5.0: Предупреждает, что group_keys больше не будет игнорироваться, когда результат из apply является Series или DataFrame с похожим индексом. Указать group_keys явно, чтобы включить ключи групп или нет.

Изменено в версии 2.0.0: group_keys теперь по умолчанию True.

observedbool, по умолчанию False

Это применяется только если какие-либо группировщики являются категориальными. Если True: показывать только наблюдаемые значения для категориальных группировщиков. Если False: показывать все значения для категориальных группировщиков.

Устарело с версии 2.1.0: Значение по умолчанию изменится на True в будущей версии pandas.

dropnabool, по умолчанию True

Если True, и если ключи групп содержат значения NA, значения NA вместе со строкой/столбцом будут удалены. Если False, значения NA также будут рассматриваться как ключ в группах.

Возвращает:
pandas.api.typing.DataFrameGroupBy

Возвращает объект groupby, содержащий информацию о группах.

Смотрите также

resample

Удобный метод для преобразования частоты и передискретизации временных рядов.

Примечания

См. руководство пользователя для более подробного использования и примеров, включая разделение объекта на группы, итерацию по группам, выбор группы, агрегацию и многое другое.

Примеры

>>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
...                               'Parrot', 'Parrot'],
...                    'Max Speed': [380., 370., 24., 26.]})
>>> df
   Animal  Max Speed
0  Falcon      380.0
1  Falcon      370.0
2  Parrot       24.0
3  Parrot       26.0
>>> df.groupby(['Animal']).mean()
        Max Speed
Animal
Falcon      375.0
Parrot       25.0

Иерархические индексы

Мы можем группировать по разным уровням иерархического индекса используя уровень параметр:

>>> arrays = [['Falcon', 'Falcon', 'Parrot', 'Parrot'],
...           ['Captive', 'Wild', 'Captive', 'Wild']]
>>> index = pd.MultiIndex.from_arrays(arrays, names=('Animal', 'Type'))
>>> df = pd.DataFrame({'Max Speed': [390., 350., 30., 20.]},
...                   index=index)
>>> df
                Max Speed
Animal Type
Falcon Captive      390.0
       Wild         350.0
Parrot Captive       30.0
       Wild          20.0
>>> df.groupby(level=0).mean()
        Max Speed
Animal
Falcon      370.0
Parrot       25.0
>>> df.groupby(level="Type").mean()
         Max Speed
Type
Captive      210.0
Wild         185.0

Мы также можем выбрать, включать ли NA в ключи группировки или нет, установив dropna параметр, значение по умолчанию True.

>>> l = [[1, 2, 3], [1, None, 4], [2, 1, 3], [1, 2, 2]]
>>> df = pd.DataFrame(l, columns=["a", "b", "c"])
>>> df.groupby(by=["b"]).sum()
    a   c
b
1.0 2   3
2.0 2   5
>>> df.groupby(by=["b"], dropna=False).sum()
    a   c
b
1.0 2   3
2.0 2   5
NaN 1   4
>>> l = [["a", 12, 12], [None, 12.3, 33.], ["b", 12.3, 123], ["a", 1, 1]]
>>> df = pd.DataFrame(l, columns=["a", "b", "c"])
>>> df.groupby(by="a").sum()
    b     c
a
a   13.0   13.0
b   12.3  123.0
>>> df.groupby(by="a", dropna=False).sum()
    b     c
a
a   13.0   13.0
b   12.3  123.0
NaN 12.3   33.0

При использовании .apply(), используйте group_keys включать или исключать ключи групп. Параметр group_keys аргумент по умолчанию True (включить).

>>> df = pd.DataFrame({'Animal': ['Falcon', 'Falcon',
...                               'Parrot', 'Parrot'],
...                    'Max Speed': [380., 370., 24., 26.]})
>>> df.groupby("Animal", group_keys=True)[['Max Speed']].apply(lambda x: x)
          Max Speed
Animal
Falcon 0      380.0
       1      370.0
Parrot 2       24.0
       3       26.0
>>> df.groupby("Animal", group_keys=False)[['Max Speed']].apply(lambda x: x)
   Max Speed
0      380.0
1      370.0
2       24.0
3       26.0