pandas.DataFrame.groupby
- DataFrame.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=_NoDefault.no_default, squeeze=_NoDefault.no_default, observed=False, dropna=True)[source]
-
Группировка DataFrame с помощью отображения или ряда столбцов.
Операция группировки включает в себя некоторое сочетание разделения объекта, применения функции и объединения результатов. Это можно использовать для группировки больших объемов данных и вычисления операций над этими группами.
- Параметры
-
- by:отображение, функция, метка или список меток
-
Используется для определения групп для группировки. Если
by— функция, она вызывается для каждого значения индекса объекта. Если передаётся словарь или Series, значения Series или словаря будут использоваться для определения групп (значения Series сначала выравниваются; см. метод.align()). Если передаётся список или массив ndarray длиной, равной выбранной оси (см. руководство по группировке), значения используются непосредственно для определения групп. Метка или список меток могут быть переданы для группировки по столбцам вself. Обратите внимание, что кортеж интерпретируется как (один) ключ. - axis:{0 или ‘индекс’, 1 или ‘столбцы’}, по умолчанию 0
-
Разделение по строкам (0) или столбцам (1). Для Series этот параметр не используется и по умолчанию равен 0.
- level:int, имя уровня или последовательность таких, по умолчанию None
-
Если ось является MultiIndex (многоуровневым), группировка выполняется по определённому уровню или уровням. Не указывайте оба
byиlevel. - as_index:bool, по умолчанию True
-
Для агрегированных результатов возвращаемый объект содержит метки групп в качестве индекса. Актуально только для входных данных DataFrame. as_index=False эффективно соответствует результатам группировки в стиле SQL.
- sort:bool, по умолчанию True
-
Сортировка ключей групп. Для повышения производительности выключите эту опцию. Примечание: это не влияет на порядок наблюдений внутри каждой группы. Groupby сохраняет порядок строк внутри каждой группы.
- group_keys:bool, необязательно
-
При вызове apply и
byвозвращает результат с индексом, подобным входному (т.е. преобразование), добавляются ключи групп в индекс для идентификации фрагментов. По умолчанию ключи групп не включаются, когда метки индекса (и столбца) результата совпадают с входными данными, и включаются в противном случае. Этот параметр не имеет эффекта, если полученный результат не похож на индексированный вход.Изменено в версии 1.5.0: Предупреждение о том, что group_keys больше не будет игнорироваться, когда результат от
applyявляется подобным индексированным Series или DataFrame. Укажитеgroup_keysявно, чтобы включить или исключить ключи групп. - squeeze:bool, по умолчанию False
-
Уменьшить размерность возвращаемого типа, если возможно, в противном случае возвращает согласованный тип.
Устарело начиная с версии 1.1.0.
- observed:bool, по умолчанию False
-
Это применимо только в том случае, если какие-либо группировщики являются Categoricals. Если True: отображать только наблюдаемые значения для категориальных группировщиков. Если False: отображать все значения для категориальных группировщиков.
- dropna:bool, по умолчанию True
-
Если True, и если ключи групп содержат значения NaN, значения NaN вместе со строкой/столбцом будут удалены. Если False, значения NaN также будут обрабатываться как ключ в группах.
Введено в версии 1.1.0.
- Возвращает
-
- 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Мы также можем выбрать включение или исключение значений NaN в ключах групп, установив параметр 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).apply(lambda x: x) Animal Max Speed Animal Falcon 0 Falcon 380.0 1 Falcon 370.0 Parrot 2 Parrot 24.0 3 Parrot 26.0>>> df.groupby("Animal", group_keys=False).apply(lambda x: x) Animal Max Speed 0 Falcon 380.0 1 Falcon 370.0 2 Parrot 24.0 3 Parrot 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/1.5.0/reference/api/pandas.DataFrame.groupby.html