Alternativa a la función TimeGrouper en Pandas

Olorunfemi Akinlua 21 junio 2023
  1. la función TimeGrouper está en desuso
  2. Usa la función Grupador()
Alternativa a la función TimeGrouper en Pandas

La agrupación de datos es una operación muy común que se llevará a cabo al trabajar con datos. Para comprender los datos, a menudo necesitamos agruparlos para ver relaciones o valores específicos.

Dentro de Pandas, se pueden usar un par de funciones para agrupar marcos de datos según ciertos requisitos. Una de esas funciones fue la función TimeGrouper, que nos permite agrupar datos en función de los objetos de tiempo, pero esta función ha quedado obsoleta durante mucho tiempo.

Este artículo discutirá la alternativa a la función TimeGrouper en Pandas y cómo usarla.

la función TimeGrouper está en desuso

La función TimeGrouper, que se usó con la función groupby, ha quedado obsoleta durante mucho tiempo en la versión 0.21.0 de Pandas a favor de la función Grouper() de pandas que nos permite agrupar datos en función de un instrucción groupby para un objeto (que incluye el objeto tiempo).

Usa la función Grupador()

Como se indicó, la función Grouper() permite a los usuarios especificar una función groupby() para un objeto y seleccionar qué columna queremos como parámetro clave sobre el que se produce la agrupación.

Por ejemplo, al agrupar en columnas que no son de fecha y hora además de las columnas de fecha y hora, groupby() es el lugar apropiado para usar pd.Grouper(). Siempre podemos usar resample() si solo necesita agrupar en una frecuencia.

Ilustremos la forma en que Grouper() funciona agrupando en columnas que no son de fecha y hora y usando la frecuencia de fin de mes, que se define por la M pasada al freq argumento.

Primero, creemos los datos que agruparemos usando la biblioteca numpy.

Código:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': np.random.choice(['x', 'y'], size=50),
                       'b': np.random.rand(50)},
                      index=pd.date_range('2022', periods=50))
print(df.head())

Producción :

            a         b
2022-01-01  x  0.365385
2022-01-02  y  0.484075
2022-01-03  y  0.863266
2022-01-04  x  0.319142
2022-01-05  x  0.386386

Ahora que tenemos los datos, usemos la función Grouper() sobre los datos agrupando en función de la frecuencia de fin de mes con el promedio de las agrupaciones calculadas.

newDf = df.groupby(pd.Grouper(freq="M")).mean()
print(newDf)

Producción :

                   b
2022-01-31  0.582896
2022-02-28  0.451495

Entonces, hemos agrupado con éxito los datos en función de la frecuencia de fin de mes. También podemos agrupar los datos en base a la columna a y la frecuencia de fin de mes con la media de las agrupaciones calculadas.

otherDf = df.groupby([pd.Grouper(freq="M"), "a"]).mean()
print(otherDf)

Producción :

                     b
           a          
2022-01-31 x  0.401720
           y  0.473320
2022-02-28 x  0.760869
           y  0.312064
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

Artículo relacionado - Pandas Function