pandas.DataFrame.groupby
- DataFrame.groupby(by=None, axis=_NoDefault.no_default, level=None, as_index=True, sort=True, group_keys=True, observed=_NoDefault.no_default, dropna=True)[source]
-
Группировка DataFrame с помощью отображения или по ряду столбцов.
Операция группировки включает в себя сочетание разделения объекта, применения функции и объединения результатов. Это можно использовать для группировки больших объемов данных и вычисления операций на этих группах.
- Параметры:
-
- 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
-
Это применимо только если какой-либо из группировщиков — это Categoricals. Если True: отображаются только наблюдаемые значения для категориальных группировщиков. Если False: отображаются все значения для категориальных группировщиков.
Устарело начиная с версии 2.1.0: Значение по умолчанию изменится на True в будущей версии pandas.
- dropna:bool, по умолчанию True
-
Если True и если ключи групп содержат значения NA, значения NA вместе со строкой/столбцом будут удалены. Если False, значения NA также будут обрабатываться как ключ в группах.
- Возвращает:
-
- pandas.api.typing.DataFrameGroupBy
-
Возвращает объект группировки, содержащий информацию о группах.
См. также
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–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.DataFrame.groupby.html