Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Duda en resultado de código con Groupby

Buen día:

En la sección "Para saber más: entendiendo el método grupoby, se da un ejercicio con dos códigos:

1)

import pandas as pd

df = pd.DataFrame({ 'Animal': ['Perro', 'Gato', 'Elefante', 'Perro', 'Gato', 'Elefante'], 'Color': ['Negro', 'Blanco', 'Gris', 'Marrón', 'Negro', 'Marrón'], 'Cantidad': [2, 3, 1, 4, 2, 2] }) df

2)

df.groupby('Animal').sum(numeric_only=True)

¿Por qué al correr el cógido: df.groupby('Animal').sum(numeric_only=True) , sólo arroja la cantidad de Elefantes, Gatos y Perros? Esperaba que diera la cantidad de todos los animales. Todos los valores en la columna 'Cantidad' son integer, por lo que no me queda claro el resultado.

De antemano mil gracias por apoyarme. A veces es difícil dar las gracias a los apoyos recibidos.

2 respuestas

Hola Jorge,

Gracias por compartir tu duda. El comportamiento que observas al usar df.groupby('Animal').sum(numeric_only=True) es completamente normal y esperado. Cuando utilizas el método groupby en la columna 'Animal', estás agrupando los datos por cada tipo de animal que aparece en esa columna. Luego, al aplicar .sum(numeric_only=True), estás sumando los valores numéricos de la columna 'Cantidad' para cada grupo de animales.

Por eso, el resultado que obtienes es la suma de la columna 'Cantidad' para cada tipo de animal (Perro, Gato y Elefante). No está sumando todos los valores de la columna 'Cantidad' en su conjunto, sino que los está sumando por cada grupo de animales que has especificado en el groupby.

Por ejemplo, si tenemos:

  • Perro: 2 + 4 = 6
  • Gato: 3 + 2 = 5
  • Elefante: 1 + 2 = 3

El resultado que obtienes es:

          Cantidad
Animal            
Elefante         3
Gato             5
Perro            6

Si quisieras obtener la suma total de todos los animales sin agrupar, podrías simplemente usar df['Cantidad'].sum(), que te daría el total de todos los valores en la columna 'Cantidad'.

Espero que esto aclare tu duda sobre el uso del método groupby. ¡Espero haber ayudado y buenos estudios!

Porque ya están todos. Es decir:

'Perro' aparece 2 veces, con cantidades 2 y 4 → suma = 6 'Gato' aparece 2 veces, con cantidades 3 y 2 → suma = 5 'Elefante' aparece 2 veces, con cantidades 1 y 2 → suma = 3

No hay más animales distintos en el DataFrame. Si esperabas ver más filas (más animales), tal vez esperabas que cada fila fuera individual, pero groupby() agrupa por valores únicos. Por eso muestra una fila por tipo de animal, con la suma de su cantidad.