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