Un Grouper permite al usuario especificar una instrucción groupby para un objeto.
Esta especificación seleccionará una columna a través de la key parámetro, o si se dan los parámetros de nivel y / o eje, un nivel del índice del objeto de destino.
Si eje y / o nivel se pasan como palabras clave a ambos Agrupador y agrupar por, los valores pasados a Agrupador prevalecerán.
- Parámetros
-
- key : str, por defecto es Ninguno
-
Agrupar por key, que selecciona la columna de agrupación del destino.
- nivel : nombre / número, predeterminado en Ninguno
-
El nivel del índice de destino.
- frecuencia : objeto str / frecuencia, predeterminado en Ninguno
-
Esto se agrupará por la frecuencia especificada si la selección de destino (a través de key o nivel) es un objeto similar a una fecha y hora. Para obtener la especificación completa de las frecuencias disponibles, consulte aquí.
- eje : str, int, por defecto es 0
-
Número / nombre del eje.
- clasificar : bool, predeterminado a falso
-
Si ordenar las etiquetas resultantes.
- cerrado : ‘izquierda o derecha’
-
Final cerrado del intervalo. Sólo cuando frecuencia se pasa el parámetro.
- etiqueta : ‘izquierda o derecha’
-
Límite de intervalo que se utilizará para el etiquetado. Sólo cuando frecuencia se pasa el parámetro.
- convención : ‘inicio’, ‘final’, ‘e’, ’s’
-
Si agrupador es PeriodIndex y frecuencia se pasa el parámetro.
- base : int, predeterminado 0
-
Sólo cuando frecuencia se pasa el parámetro. Para frecuencias que subdividen de manera uniforme 1 día, el “origen” de los intervalos agregados. Por ejemplo, para la frecuencia de ‘5 minutos’, la base podría oscilar entre 0 y 4. El valor predeterminado es 0.
En desuso desde la versión 1.1.0: Los nuevos argumentos que debe utilizar son ‘desplazamiento’ u ‘origen’.
- loffset : str, DateOffset, objeto timedelta
-
Sólo cuando frecuencia se pasa el parámetro.
En desuso desde la versión 1.1.0: loffset solo funciona para .resample(...)
y no para Grouper (GH28302). Sin embargo, loffset también está obsoleto para .resample(...)
Ver: DataFrame.resample
- origen : ‘época’, ‘inicio’, ‘día_inicio’, marca de tiempo o str, ‘día_inicio’ predeterminado
-
La marca de tiempo en la que se ajustará la agrupación. La zona horaria de origen debe coincidir con la zona horaria del índice. Si no se utiliza una marca de tiempo, también se admiten estos valores:
-
‘época’: origen es 1970-01-01
-
‘comienzo’: origen es el primer valor de la serie temporal
-
‘día_inicio’: origen es el primer día a la medianoche de la serie temporal
Nuevo en la versión 1.1.0.
- compensar : Timedelta o str, el valor predeterminado es Ninguno
-
Un timedelta de compensación agregado al origen.
Nuevo en la versión 1.1.0.
- dropna : bool, por defecto Verdadero
-
Si es verdadero y si grupo keys contienen valores NA, los valores NA junto con la fila / columna se eliminarán. Si es Falso, los valores NA también se tratarán como key en grupos.
Nuevo en la versión 1.2.0.
- Devoluciones
-
- Una especificación para una instrucción groupby
Ejemplos de
Azúcar sintáctico para df.groupby('A')
>>> df = pd.DataFrame(......"Animal":["Falcon","Parrot","Falcon","Falcon","Parrot"],..."Speed":[100,5,200,300,15],......)>>> df
Animal Speed
0 Falcon 1001 Parrot 52 Falcon 2003 Falcon 3004 Parrot 15>>> df.groupby(pd.Grouper(key="Animal")).mean()
Speed
Animal
Falcon 200
Parrot 10
Especifique una operación de remuestreo en la columna ‘Fecha de publicación’
>>> 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
02000-01-0201012000-01-0212022000-01-0923032000-01-16340>>> df.groupby(pd.Grouper(key="Publish date", freq="1W")).mean()
ID Price
Publish date
2000-01-020.515.02000-01-092.030.02000-01-163.040.0
Si desea ajustar el inicio de los bins en función de una marca de tiempo fija:
>>> 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-0123:30:0002000-10-0123:37:0032000-10-0123:44:0062000-10-0123:51:0092000-10-0123:58:00122000-10-0200:05:00152000-10-0200:12:00182000-10-0200:19:00212000-10-0200:26:0024
Freq: 7T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min')).sum()2000-10-0123:14:0002000-10-0123:31:0092000-10-0123:48:00212000-10-0200:05:00542000-10-0200:22:0024
Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', origin='epoch')).sum()2000-10-0123:18:0002000-10-0123:35:00182000-10-0123:52:00272000-10-0200:09:00392000-10-0200:26:0024
Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', origin='2000-01-01')).sum()2000-10-0123:24:0032000-10-0123:41:00152000-10-0123:58:00452000-10-0200:15:0045
Freq: 17T, dtype: int64
Si desea ajustar el inicio de los contenedores con un compensar Timedelta, las dos siguientes líneas son equivalentes:
>>> ts.groupby(pd.Grouper(freq='17min', origin='start')).sum()2000-10-0123:30:0092000-10-0123:47:00212000-10-0200:04:00542000-10-0200:21:0024
Freq: 17T, dtype: int64
>>> ts.groupby(pd.Grouper(freq='17min', offset='23h30min')).sum()2000-10-0123:30:0092000-10-0123:47:00212000-10-0200:04:00542000-10-0200:21:0024
Freq: 17T, dtype: int64
Para reemplazar el uso de lo obsoleto base argumento, ahora puede usar compensar, en este ejemplo es equivalente a tener base = 2:
>>> ts.groupby(pd.Grouper(freq='17min', offset='2min')).sum()2000-10-0123:16:0002000-10-0123:33:0092000-10-0123:50:00362000-10-0200:07:00392000-10-0200:24:0024
Freq: 17T, dtype: int64
Atributos