Spec-Zone.ru › pandas 2

pandas.DataFrame.groupby

DataFrame.groupby(by=None, axis=<no_default>, level=None, as_index=True, sort=True, group_keys=True, observed=<no_default>, dropna=True)[исходный код]

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

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

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

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

axis:{0 или ‘index’, 1 или ‘columns’}, по умолчанию 0

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

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

level:целое число, имя уровня или последовательность таких значений, по умолчанию None

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

as_index:bool, по умолчанию True

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

sort:bool, по умолчанию True

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

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

group_keys:bool, по умолчанию True

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

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

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

observed:bool, по умолчанию False

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

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

dropna:bool, по умолчанию 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

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

С помощью параметра level можно группировать данные по разным уровням иерархического индекса:

>>> 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

© 2008–2011, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
© 2011–2025, Open source contributors
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.3.0/reference/api/pandas.DataFrame.groupby.html

Spec-Zone.ru

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