top of page
  • Foto del escritorEsteban Madrigal

Agrupa datos con GroupBy en Python

¿Alguna vez has tratado de analizar un conjunto de datos y te has preguntado cómo agrupar y aplicar funciones a diferentes grupos de datos de manera eficiente? Si es así, entonces el método groupby de la librería de análisis de datos pandas puede ser justo lo que necesitas.

groupby es una herramienta poderosa que te permite dividir un DataFrame en grupos basados en una o más columnas y aplicar funciones a cada grupo de manera individual. Esto te permite realizar un análisis más detallado de tus datos y descubrir patrones y tendencias que de otra manera podrían pasar desapercibidos.


En este blog, aprenderás cómo usar groupby con pandas para analizar y manipular tus datos de manera eficiente. Veremos cómo calcular estadísticas resumidas, aplicar funciones personalizadas a cada grupo, filtrar los datos y mucho más.


Algunos usos comunes de groupby incluyen:

  • Calcular estadísticas resumidas de un conjunto de datos, como la media, la mediana, la desviación estándar, etc.

  • Transformar los datos agrupando por una o más columnas y aplicando una función a cada grupo.

  • Filtrar los datos para incluir solo aquellos que cumplen ciertas condiciones.

  • Realizar un seguimiento de cómo cambian los datos a lo largo del tiempo o en diferentes categorías.

  • Descubrir patrones y tendencias en los datos.

Vamos a verlo en acción con algunos ejemplos:


Tenemos un Dataset y vamos a responder a unos problemas, pero antes entraremos a detalle con el Dataset que vamos a analizar. El archivo CSV contiene las siguientes columnas:


Category: Tipo de producto.

Size: Tamaño del producto.

Color: Color del producto.

Stock: Número de artículos en stock.

Importamos librerías y el Dataset, además de realizar un poco de limpieza a los datos.

#Importamos Libreria
import pandas as pd
# Cargar el dataset
df = pd.read_csv('/content/Sale_Report.csv')
#Eliminamos Nulos
dfventas = df.dropna()
#reiniciamos el indice
dfventas.reset_index(inplace=True,drop=True)
#Escogemos las columnas que vamos a usar
dfventas[["Category","Size","Color","Stock"]]

Luego de haber cargado los datos vamos a resolver varios problemas con groupby:

Imaginemos que tenemos un jefe y nos pide lo siguiente:


1. ¿Cuánto stock hay por categoría?

# Agrupar los datos por la columna 'Categoria' y calcular el
total de stock por categoria
categoria_stock = dfventas.groupby('Category').sum()['Stock']

# Mostrar los resultados
print(categoria_stock.sort_values(ascending=False))

Declaramos una variable y colocamos el nombre de nuestra variable que contiene el Dataset, seguido de .groupby() donde colocaremos nuestra columna la cual queremos saber los resultados, luego .sum() para sumar todos los stocks los cuales coincidan con cada categoría existente, luego imprimimos la variable que almacena todo el proceso y vemos los resultados.


Colocamos un .sort_values(ascending=False) para ordenar de mayor a menor los datos resultantes.

Y listo, hemos obtenido los resultados para analizarlos.


2. ¿Cuál es el promedio de stock por talla?

# Agrupar los datos por la columna 'Talla' y calcular el promedio de stock
talla_stock = dfventas.groupby('Size').mean()['Stock']

# Mostrar los resultados
print(talla_stock.sort_values(ascending=False))

Igual que el caso anterior, declaramos la variable inicial y colocamos nuestra variable que contiene los datos, en este caso en lugar de realizar una suma, realizamos un promedio, para eso hacemos uso de la función .mean() la cual permite obtener el promedio de lo que deseemos.

Y listo, hemos obtenido los resultados para analizarlos.


3. ¿Cuál es el top 10 de los colores con más stock por pedido?


# Agrupar los datos por la columna 'Color' y calcular cual fue el pedido con más stock
categoria_stock = dfventas.groupby('Color').max()["Stock"]

# Mostrar los resultados
print(categoria_stock.sort_values(ascending=False).head(10))

En este caso a diferencia de los anteriores, aplicamos .max() para encontrar el número mayor de cada color entre todos los pedidos, y así mostrar de cada color cuál fue su mayor pedido.

Colocamos un .head(10) para que nos muestre los primeros 10 resultados.

Y listo, hemos obtenido los resultados para analizarlos.


4. ¿Cuál es la talla con más pedidos?


# Agrupar los datos por la columna 'Talla' y calcular cuantos productos hay por talla
categoria_stock = dfventas.groupby("Size").count()['Category']

# Mostrar los resultados
print(categoria_stock.sort_values(ascending=False))

En este caso, aplicamos un .count() su función es contar cada uno de los pedidos existentes y agruparlas por tallas.


Para .count() no es necesario que nuestros datos sean numéricos en este caso los datos son de tipo texto y los cuenta sin ningún problema y nos da como resultado el conteo por cada una de las tallas.

Como resultado tenemos que la talla con más pedidos fue la talla S.


En general, groupby es una herramienta útil para manipular y analizar datos en pandas. Si desea obtener más información sobre cómo usar groupby, puede consultar la documentación de pandas.


Espero que te sea de utilidad esta información para que lo apliques en tu trabajo o dentro de tu organización.

1122 visualizaciones0 comentarios

Entradas Recientes

Ver todo
bottom of page