Spec-Zone.ru › pandas 2

pandas.Series.groupby

Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, observed=<no_default>, dropna=True)[source]

Группирует Series с помощью сопоставителя или Series со столбцами.

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

Параметры:
by:mapping, function, label, pd.Grouper or list of such

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

axis:{0 or ‘index’, 1 or ‘columns’}, default 0

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

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

level:int, level name, or sequence of such, default None

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

as_index:bool, default True

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

sort:bool, default True

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

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

group_keys:bool, default True

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

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

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

observed:bool, default False

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

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

dropna:bool, default True

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

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

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

См. также

resample

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

Примечания

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

Примеры

>>> ser = pd.Series([390., 350., 30., 20.],
...                 index=['Falcon', 'Falcon', 'Parrot', 'Parrot'],
...                 name="Max Speed")
>>> ser
Falcon    390.0
Falcon    350.0
Parrot     30.0
Parrot     20.0
Name: Max Speed, dtype: float64
>>> ser.groupby(["a", "b", "a", "b"]).mean()
a    210.0
b    185.0
Name: Max Speed, dtype: float64
>>> ser.groupby(level=0).mean()
Falcon    370.0
Parrot     25.0
Name: Max Speed, dtype: float64
>>> ser.groupby(ser > 100).mean()
Max Speed
False     25.0
True     370.0
Name: Max Speed, dtype: float64

Группировка по индексам

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

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

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

>>> ser = pd.Series([1, 2, 3, 3], index=["a", 'a', 'b', np.nan])
>>> ser.groupby(level=0).sum()
a    3
b    3
dtype: int64
>>> ser.groupby(level=0, dropna=False).sum()
a    3
b    3
NaN  3
dtype: int64
>>> arrays = ['Falcon', 'Falcon', 'Parrot', 'Parrot']
>>> ser = pd.Series([390., 350., 30., 20.], index=arrays, name="Max Speed")
>>> ser.groupby(["a", "b", "a", np.nan]).mean()
a    210.0
b    350.0
Name: Max Speed, dtype: float64
>>> ser.groupby(["a", "b", "a", np.nan], dropna=False).mean()
a    210.0
b    350.0
NaN   20.0
Name: Max Speed, dtype: float64

© 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.Series.groupby.html

Spec-Zone.ru

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