En este artículo, discutiremos cómo agrupar por un marco de datos en función de la fecha y la hora en Pandas. Veremos la forma de agrupar un marco de datos de series temporales por Año, Mes, días, etc. Además, también veremos la forma de agrupar por objetos de tiempo como minutos.
Pandas GroupBy nos permite especificar una instrucción groupby para un objeto. Esta instrucción específica seleccionará una columna a través del parámetro clave de la función de agrupador junto con los parámetros de nivel y/o eje, si se proporcionan, un nivel del índice del objeto/columna de destino.
Sintaxis: pandas.Grouper(key=Ninguno, level=Ninguno, freq=Ninguno, axis=0, sort=False)
A continuación se muestran algunos ejemplos que muestran cómo agrupar por un marco de datos en función de la fecha y la hora utilizando la clase Pandas Grouper.
Ejemplo 1: Agrupar por mes
Python3
# importing modules import pandas as pd # creating a dataframe df df = pd.DataFrame( { "Date": [ pd.Timestamp("2000-11-02"), pd.Timestamp("2000-01-02"), pd.Timestamp("2000-01-09"), pd.Timestamp("2000-03-11"), pd.Timestamp("2000-01-26"), pd.Timestamp("2000-02-16") ], "ID": [1, 2, 3, 4, 5, 6], "Price": [140, 120, 230, 40, 100, 450] } ) # show df display(df) # applying the groupby function on df df.groupby(pd.Grouper(key='Date', axis=0, freq='M')).sum()
Producción:
En el ejemplo anterior, el marco de datos está agrupado por la columna Fecha. Como proporcionamos freq = ‘M’, que significa mes, los datos se agrupan por meses hasta la última fecha de cada mes y se proporciona la columna de suma de precios. No hemos proporcionado valores para todos los meses, luego también la función groupby mostró datos para todos los meses y asignó el valor 0 para otros meses.
Ejemplo 2: Agrupar por días
Python3
# importing modules import pandas as pd # creating a dataframe df df = pd.DataFrame( { "Date": [ pd.Timestamp("2000-11-02"), pd.Timestamp("2000-01-02"), pd.Timestamp("2000-01-09"), pd.Timestamp("2000-03-11"), pd.Timestamp("2000-01-26"), pd.Timestamp("2000-02-16") ], "ID": [1, 2, 3, 4, 5, 6], "Price": [140, 120, 230, 40, 100, 450] } ) # display dataframe display(df) # applying groupby df.groupby(pd.Grouper(key='Date', axis=0, freq='2D', sort=True)).sum()
Producción:
En el ejemplo anterior, el marco de datos está agrupado por la columna Fecha. Como proporcionamos freq = ‘5D’, que significa cinco días, los datos se agrupan por intervalo de 5 días de cada mes hasta la última fecha indicada en la columna de fecha.
Ejemplo 3: Agrupar por año
Python3
# importing module import pandas as pd # creating dataframe with datetime df = pd.DataFrame( { "Date": [ # here the date contains # different years pd.Timestamp("2010-11-02"), pd.Timestamp("2011-01-02"), pd.Timestamp("2013-01-09"), pd.Timestamp("2014-03-11"), pd.Timestamp("2015-01-26"), pd.Timestamp("2012-02-16") ], "ID": [1, 2, 3, 4, 5, 6], "Price": [140, 120, 230, 40, 100, 450] } ) # show df display(df) # applying groupby function df.groupby(pd.Grouper(key='Date', freq='2Y')).sum()
Producción:
En el ejemplo anterior, el marco de datos está agrupado por la columna Fecha. Como proporcionamos freq = ‘2Y’, que significa 2 años, los datos se agrupan en el intervalo de 2 años.
Ejemplo 4: Agrupar por minutos
Python3
# importing module import pandas as pd # create an array of 5 dates starting # at '2015-02-24', one per minute dates = pd.date_range('2015-02-24', periods=10, freq='T') # creating dataframe with above array # of dates df = pd.DataFrame({"Date": dates, "ID": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "Price": [140, 120, 230, 40, 100, 450, 234, 785, 12, 42]}) # display dataframe display(df) # applied groupby function df.groupby(pd.Grouper(key='Date', freq='2min')).sum()
Producción:
En el ejemplo anterior, los datos se agrupan en intervalos de cada 2 minutos.
Publicación traducida automáticamente
Artículo escrito por neelutiwari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA