pandas.Series.groupby
- Series.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, observed=_NoDefault.no_default, dropna=True)[source]
-
Группировка Series с помощью отображения или по серии столбцов.
Операция группировки включает в себя комбинацию разделения объекта, применения функции и объединения результатов. Это можно использовать для группировки больших объёмов данных и вычисления операций над этими группами.
- Параметры:
-
- by:отображение, функция, метка, pd.Grouper или список таких
-
Используется для определения групп для группировки. Если это функция, она вызывается для каждого значения индекса объекта. Если передается словарь или Series, значения Series или словаря будут использованы для определения групп (значения Series сначала выравниваются; см. метод
.align()). Если передается список или массив ndarray длиной, равной выбранной оси (см. руководство по группировке), значения используются как есть для определения групп. Метка или список меток могут быть переданы для группировки по столбцам вself. Обратите внимание, что кортеж интерпретируется как (один) ключ. - axis:{0 или ‘index’, 1 или ‘columns’}, по умолчанию 0
-
Разделить по строкам (0) или столбцам (1). Для Series этот параметр не используется и по умолчанию равен 0.
Устаревшее с версии 2.1.0: Будет удалено и будет вести себя как axis=0 в будущей версии. Для
axis=1, используйтеframe.T.groupby(...)вместо этого. - level:int, имя уровня или последовательность таких, по умолчанию 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.SeriesGroupBy
-
Возвращает объект группировки, содержащий информацию о группах.
См. также
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–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.Series.groupby.html