Pandas Groupby Agregado

Pandas Groupby Agregado



La técnica groupby es esencial debido a lo bien que agrega datos en términos de rendimiento y tamaño del código. El término 'groupby' generalmente describe un procedimiento que incluye los siguientes pasos:

  • Terrible : Al aplicar ciertas condiciones a los conjuntos de datos, podemos dividir los datos en grupos.
  • Aplicar : Un proceso donde aplicamos individualmente un método a cada grupo.
  • Combinatorio : Un procedimiento para combinar varios conjuntos de datos para formar una estructura de datos después de usar el método groupby().

En el proceso de agregación, se calcula una estadística de resumen para cada grupo. Para cada grupo, el método agregado devuelve un valor agregado (valor único). Podemos realizar varias operaciones de agregación en datos agrupados después de dividir los datos en grupos usando la función groupby.







¿Por qué Pandas proporciona una variedad de métodos de agregación de datos?

Pandas ofrece una amplia gama de características y funciones para ayudar en el análisis y la agregación de datos. El uso de los métodos pivot(), groupby() y pivot_table(), por ejemplo, cada uno ofrece una perspectiva diferente sobre cómo se agregarían los datos. Proporcionan enfoques prácticos para llevar a cabo diversas tareas en lugar de ser simplemente reempaquetados.



Cómo usar la función .agg() en Pandas

Un promedio simple o suma de valores es la función de agregación que se usa con más frecuencia. Puede usar la columna de un marco de datos o varias columnas para llamar a una función agregada. Verá muchas formas de agregar datos utilizando el método groupby de Pandas. Para demostrar cuánto más fácil es el procedimiento, veamos algunos ejemplos que se dan a continuación. Las operaciones matemáticas básicas como la suma, el mínimo, el máximo, la desviación absoluta media, la desviación estándar, la media, la mediana, la varianza y el producto se encuentran entre las funciones de agregación integradas que se utilizan con más frecuencia. Para resumir datos, podemos combinar groupby y la función agg().



Ejemplo # 01: Determine la suma de las columnas agrupando los datos usando la función groupby.agg()

Primero crearemos un marco de datos usando la función pd.DataFrame() para que podamos agrupar los datos de la columna o columnas del marco de datos y luego determinar su valor medio. Debemos importar los módulos de pandas y la biblioteca numpy antes de crear el marco de datos.





Como puede ver, usamos el diccionario pandas para crear nuestro marco de datos. Nuestro marco de datos df tiene cuatro columnas: 'paciente', 'grupo', 'edad' y 'botellas de sangre'. Los valores de datos ('Ali', 'John', 'Mike', 'Mike', 'John', 'Ali', 'Ali', 'Mike') están contenidos en la columna 'paciente', mientras que los valores de datos ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) y ( 2, 3, 1, 1, 2, 3, 2, 1) están contenidos en las columnas 'grupo', 'edad' y 'botellas de sangre' respectivamente. Supongamos que tenemos que determinar la suma de valores en la columna 'botas_de_sangre' agrupando los valores en la columna 'grupo'.



Para los datos del grupo 'A', la suma de los valores de 'blood_bottles' es 7. Para los valores del grupo 'B' y 'C', la suma de los valores de 'blood_bottles' es 2 y 6, respectivamente. También podemos agrupar varias columnas para determinar la suma de cada grupo.

Como se puede observar, hemos pasado una lista de etiquetas de columna, es decir, ['paciente', 'grupo'] dentro de la función groupby() para crear los grupos de categorías en cada columna especificada. Para cada grupo de columnas especificadas, hemos determinado la suma de valores en 'botas_de_sangre'. Por ejemplo, 'Ali' está en los valores A y C de la columna 'grupo'. En el grupo A, la suma de los valores de 'botas_de_sangre' para Ali es 2 y 5 en el grupo 'C'.

Ejemplo # 02: Aplicación de funciones múltiples en una sola columna de marco de datos usando la función groupby.agg()

Se pueden aplicar múltiples agregaciones con el método 'groupby()' usando la función pandas agg(). Se puede pasar una lista invocable al método. Veamos cómo podemos agregar nuestros datos utilizando los métodos integrados de la biblioteca numpy. A diferencia del ejemplo anterior, aplicaremos múltiples funciones a una sola columna del marco de datos. La función pd.DataFrame() se usará para crear un marco de datos para esto con al menos una columna que contenga valores numéricos.


El marco de datos requerido se ha creado con una columna numérica, es decir, 'marcas' con valores 41, 40, 35, 39, 49, 31, 34 y 42. Hay 3 columnas más 'estudiante', 'asignaturas' y 'grado' en nuestro marco de datos que se puede dividir en grupos usando la función groupby(). Los valores en la columna 'estudiantes' y 'asignaturas' son ('Harry', 'Ron', 'Harry', 'Lana', 'Sam', 'Ron', 'Lana', 'Max') y ('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). Mientras que el grado de la columna contiene los valores de datos como cadenas, es decir, ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). Supongamos que tenemos que agrupar los datos de la columna 'sujetos' y determinar tanto la media como la suma de las 'marcas' de la columna para cada dato agrupado.

Hemos especificado el nombre de la columna 'sujetos' como una cadena dentro de la función groupby() para convertir los datos en grupos de categorías. Para la columna de calificaciones, hemos utilizado el método agg(), y dentro de la función agg() hemos especificado las funciones numpy np.sum y np.mean para encontrar la suma y el promedio de las calificaciones de cada grupo de datos en las materias de la columna. La suma y el valor medio para el valor de grupo 'AI' son 91 y 45,5, respectivamente. La suma de puntos para el valor 'C++' es 75 y el valor medio es 37,5. Para el grupo JAVA, la suma de puntos es 71 y el valor medio es 35,5, mientras que la suma y el valor medio para Python son 74 y 37, respectivamente.

Ejemplo # 03: Aplicación de funciones múltiples en las columnas múltiples del marco de datos usando la función groupby.agg()

En lugar de aplicar diferentes funciones a la columna de un solo marco de datos, podemos aplicar múltiples funciones a diferentes columnas numéricas. Podemos usar un diccionario en la función agg() como entrada para aplicar un método de agregación específico a las columnas de diferentes marcos de datos. Importemos los pandas y las bibliotecas numpy antes de crear un marco de datos con varias columnas numéricas.

Hay cuatro columnas en el marco de datos recién creado con los nombres 'jugador', 'puntuación mínima', 'puntuación más alta' y 'ubicación'. En la columna 'jugador', hemos almacenado los nombres de algunos jugadores como valores de datos de cadena ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' Fin'), en la columna 'least_score' están las puntuaciones más bajas de los jugadores para algunos partidos (12, 34, 2, 21, 9, 1, 0, 34), mientras que en la columna 'highest_score' tenemos las puntuaciones más altas de los jugadores (12, 34, 2, 21, 9, 1, 0, 34) y en la columna 'ubicación' están los nombres de las sedes donde los jugadores han disputado sus partidos ('Francia', 'Inglaterra', 'Dubai', ' Dubai', 'Inglaterra', 'Francia', 'Dubai', 'Francia').

Supongamos que después de agrupar los datos en la columna 'jugadores', tenemos que encontrar el promedio de los valores de la columna 'puntuación mínima' y la suma de los valores de datos 'puntuación más alta' para cada grupo.

Dentro de la función agg(), pasamos un diccionario de python {'highest_score' : 'sum', 'least_score' : 'mean'} para encontrar la suma y el valor promedio para una columna específica contra cada grupo. Se puede ver que el valor agrupado Alex tiene la suma del valor 'highest_score' 132 y el promedio del valor 'least_score' 17.5. Para 'Fin' la suma de valores es 199 y el promedio es 18.3333333 en las columnas 'highest_score' y 'least_score' respectivamente. El valor del grupo Leo tiene un valor de suma de 180 en 'highest_score' y un valor promedio de 7.666667 en 'least_score'.

Conclusión

En este tutorial, hemos discutido las funciones groupby() y de agregación en pandas. También hemos discutido cómo usar la función groupby.agg(). Implementamos tres ejemplos en este artículo para enseñarle cómo usar una sola función de agregación en una columna de marco de datos agrupando los datos de columnas únicas y múltiples, cómo aplicar múltiples funciones de agregación en una sola columna de un marco de datos y cómo aplicar múltiples funciones de agregación en las múltiples columnas del marco de datos usando la función groupby.agg().