pandas.Grouper
- classpandas.Grouper(*args, **kwargs)[source]
-
A Grouper позволяет пользователю указать инструкцию groupby для объекта.
Это задание выберет столбец через параметр key, или, если заданы параметры level и/или axis, уровень индекса целевого объекта.
Если axis и/или level переданы в качестве ключевых слов как в Grouper, так и в groupby, значения, переданные в Grouper, имеют приоритет.
- Параметры
-
- key:строка, по умолчанию None
-
Ключ groupby, который выбирает столбец группирования целевого объекта.
- level:имя/число, по умолчанию None
-
Уровень целевого индекса.
- freq:строка/объект частоты, по умолчанию None
-
Это сгруппирует по указанной частоте, если целевой выбор (через key или level) является объектом типа datetime. Для полного описания доступных частот см. здесь.
- axis:строка, целое число, по умолчанию 0
-
Номер/имя оси.
- sort:логическое значение, по умолчанию False
-
Нужно ли сортировать получившиеся метки.
- closed:{‘left’ или ‘right’}
-
Закрывающий конец интервала. Только когда передан параметр freq.
- label:{‘left’ или ‘right’}
-
Граница интервала для маркировки. Только когда передан параметр freq.
- convention:{‘start’, ‘end’, ‘e’, ‘s’}
-
Если grouper — PeriodIndex и передан параметр freq.
- base:целое число, по умолчанию 0
-
Только когда передан параметр freq. Для частот, которые равномерно делят 1 день, «начало» агрегированных интервалов. Например, для частоты ‘5min’ base может изменяться от 0 до 4. По умолчанию 0.
Устарело начиная с версии 1.1.0: Вы должны использовать новые аргументы «offset» или «origin».
- loffset:строка, DateOffset, объект timedelta
-
Только когда передан параметр freq.
Устарело начиная с версии 1.1.0: loffset работает только для
.resample(...)и не для Grouper (GH28302). Однако loffset также устарел для.resample(...)См.:DataFrame.resample - origin:Timestamp или строка, по умолчанию ‘start_day’
-
Маркер времени, относительно которого производится группировка. Временная зона origin должна совпадать с временной зоной индекса. Если строка, должна быть одной из следующих:
‘epoch’: origin — 1970-01-01
‘start’: origin — первое значение временного ряда
‘start_day’: origin — первый день в полночь временного ряда
Новое в версии 1.1.0.
‘end’: origin — последнее значение временного ряда
‘end_day’: origin — потолок полуночи последнего дня
Новое в версии 1.3.0.
- offset:Timedelta или строка, по умолчанию None
-
Смещение timedelta, добавляемое к origin.
Новое в версии 1.1.0.
- dropna:логическое значение, по умолчанию True
-
Если True, и если ключи групп содержат значения NaN, значения NaN вместе со строкой/столбцом будут удалены. Если False, значения NaN также будут рассматриваться как ключ в группах.
Новое в версии 1.2.0.
- Возвращаемое значение
-
- Запись для инструкции groupby
Примеры
Синтаксический сахар для
df.groupby('A')>>> df = pd.DataFrame( ... { ... "Animal": ["Falcon", "Parrot", "Falcon", "Falcon", "Parrot"], ... "Speed": [100, 5, 200, 300, 15], ... } ... ) >>> df Animal Speed 0 Falcon 100 1 Parrot 5 2 Falcon 200 3 Falcon 300 4 Parrot 15 >>> df.groupby(pd.Grouper(key="Animal")).mean() Speed Animal Falcon 200.0 Parrot 10.0Указать операцию resample для столбца ‘Publish date’
>>> df = pd.DataFrame( ... { ... "Publish date": [ ... pd.Timestamp("2000-01-02"), ... pd.Timestamp("2000-01-02"), ... pd.Timestamp("2000-01-09"), ... pd.Timestamp("2000-01-16") ... ], ... "ID": [0, 1, 2, 3], ... "Price": [10, 20, 30, 40] ... } ... ) >>> df Publish date ID Price 0 2000-01-02 0 10 1 2000-01-02 1 20 2 2000-01-09 2 30 3 2000-01-16 3 40 >>> df.groupby(pd.Grouper(key="Publish date", freq="1W")).mean() ID Price Publish date 2000-01-02 0.5 15.0 2000-01-09 2.0 30.0 2000-01-16 3.0 40.0Если вы хотите настроить начало бинов на основе фиксированного момента времени:
>>> start, end = '2000-10-01 23:30:00', '2000-10-02 00:30:00' >>> rng = pd.date_range(start, end, freq='7min') >>> ts = pd.Series(np.arange(len(rng)) * 3, index=rng) >>> ts 2000-10-01 23:30:00 0 2000-10-01 23:37:00 3 2000-10-01 23:44:00 6 2000-10-01 23:51:00 9 2000-10-01 23:58:00 12 2000-10-02 00:05:00 15 2000-10-02 00:12:00 18 2000-10-02 00:19:00 21 2000-10-02 00:26:00 24 Freq: 7T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min')).sum() 2000-10-01 23:14:00 0 2000-10-01 23:31:00 9 2000-10-01 23:48:00 21 2000-10-02 00:05:00 54 2000-10-02 00:22:00 24 Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', origin='epoch')).sum() 2000-10-01 23:18:00 0 2000-10-01 23:35:00 18 2000-10-01 23:52:00 27 2000-10-02 00:09:00 39 2000-10-02 00:26:00 24 Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', origin='2000-01-01')).sum() 2000-10-01 23:24:00 3 2000-10-01 23:41:00 15 2000-10-01 23:58:00 45 2000-10-02 00:15:00 45 Freq: 17T, dtype: int64
Если вы хотите настроить начало бинов с помощью offset Timedelta, две следующие строки эквивалентны:
>>> ts.groupby(pd.Grouper(freq='17min', origin='start')).sum() 2000-10-01 23:30:00 9 2000-10-01 23:47:00 21 2000-10-02 00:04:00 54 2000-10-02 00:21:00 24 Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', offset='23h30min')).sum() 2000-10-01 23:30:00 9 2000-10-01 23:47:00 21 2000-10-02 00:04:00 54 2000-10-02 00:21:00 24 Freq: 17T, dtype: int64
Чтобы заменить устаревший аргумент base, вы можете использовать offset, в этом примере он эквивалентен base=2:
>>> ts.groupby(pd.Grouper(freq='17min', offset='2min')).sum() 2000-10-01 23:16:00 0 2000-10-01 23:33:00 9 2000-10-01 23:50:00 36 2000-10-02 00:07:00 39 2000-10-02 00:24:00 24 Freq: 17T, dtype: int64
Атрибуты
ax
groups
© 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.Grouper.html