Agrupar por y agregar múltiples columnas en Pandas
La biblioteca Pandas es una poderosa biblioteca de análisis de datos en Python. Podemos realizar muchos tipos diferentes de manipulación en un dataframe usando Pandas en Python.
El groupby()
es un método que divide los datos en varios grupos en función de criterios específicos. Después de eso, podemos realizar ciertas operaciones en los datos agrupados.
Aplique las funciones groupby()
y aggregate()
en múltiples columnas en Pandas Python
A veces necesitamos agrupar los datos de varias columnas y aplicar algunos métodos agregados()
. Los métodos aggregate()
son aquellos métodos que combinan los valores de varias filas y devuelven un único valor, por ejemplo, contar()
, tamaño()
, media()
, suma()
, media()
, etc.
En el siguiente código, tenemos los datos de los estudiantes que contienen valores redundantes para algunas columnas. Si desea agrupar los datos en función del Name
y la Sección
del estudiante para obtener sus calificaciones totales, agruparemos los datos según el nombre y la sección y luego calcularemos las calificaciones totales utilizando el método agregado()
.
Hemos almacenado el resultado devuelto y lo hemos mostrado.
Código de ejemplo:
# Python 3.x
import pandas as pd
student = {
"Name": ["Jhon", "Alia", "Jhon", "Alia", "Sam", "Smith", "Sam", "Smith"],
"Section": ["A", "A", "A", "A", "B", "B", "B", "B"],
"Course": ["Java", "Java", "Dart", "Dart", "Java", "Java", "Dart", "Dart"],
"Marks": [70, 80, 90, 60, 80, 90, 50, 80],
}
df = pd.DataFrame(student)
display(df)
result = df.groupby(["Name", "Section"]).aggregate("sum")
display(result)
Producción:
También podemos realizar múltiples operaciones agregadas
a la vez. Pasaremos la lista de nombres de operaciones al método aggregate()
.
Aquí, hemos calculado las calificaciones medias y totales de los estudiantes a la vez usando el método aggregate()
pasando la lista de nombres de operaciones.
Código de ejemplo:
# Python 3.x
import pandas as pd
student = {
"Name": ["Jhon", "Alia", "Jhon", "Alia", "Sam", "Smith", "Sam", "Smith"],
"Section": ["A", "A", "A", "A", "B", "B", "B", "B"],
"Course": ["Java", "Java", "Dart", "Dart", "Java", "Java", "Dart", "Dart"],
"Marks": [70, 80, 90, 60, 80, 90, 50, 80],
}
df = pd.DataFrame(student)
display(df)
result = df.groupby(["Name", "Section"]).aggregate(["mean", "sum"])
display(result)
Producción:
I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.
LinkedIn