Spec-Zone.ru › pandas 1

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

Spec-Zone.ru

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