A menudo, es posible que desee agrupar y agregar por varias columnas de un DataFrame de pandas. Afortunadamente, esto es fácil de hacer usando las funciones pandas .groupby () y .agg () .
Este tutorial explica varios ejemplos de cómo utilizar estas funciones en la práctica.
Ejemplo 1: agrupar por dos columnas y encontrar el promedio
Supongamos que tenemos el siguiente DataFrame de pandas:
importar pandas como pd
#create DataFrame
df = pd.DataFrame ({'equipo': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
'posición': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
'asiste': [5, 7, 7, 8, 5, 7, 6, 9],
'rebotes': [11, 8, 10, 6, 6, 9, 6, 10]})
#view Impresión de DataFrame
(df)
la posición del equipo ayuda a los rebotes
0 AG 5 11
1 BG 7 8
2 BF 7 10
3 BG 8 6
4 BF 5 6
5 MF 7 9
6 MC 6 6
7 MC 9 10
El siguiente código muestra cómo agrupar por columnas ‘equipo’ y ‘posición’ y encontrar las asistencias medias:
df. groupby (['equipo', 'posición']). agg ({'asiste': ['significa']}). reset_index ()
la posición del equipo ayuda
significar
0 A G 5,0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4 M F 7.0
La salida nos dice:
- La media de asistencias para los jugadores en la posición G en el equipo A es 5.0 .
- La media de asistencias para los jugadores en la posición F del equipo B es 6.0 .
- La media de asistencias para los jugadores en la posición G del equipo B es 7.5 .
Y así.
También podemos usar el siguiente código para cambiar el nombre de las columnas en el DataFrame resultante:
#agrupar por equipo y posición y encontrar asistencias medias
new = df. groupby (['equipo', 'posición']). agg ({'asiste': ['significa']}). reset_index ()
# renombrar columnas
new.columns = ['equipo', 'pos', 'mean_assists']
#view DataFrame
print (nuevo)
equipo pos mean_assists
0 A G 5,0
1 B F 6.0
2 B G 7.5
3 M C 7.5
4 M F 7.0
Ejemplo 2: agrupar por dos columnas y buscar varias estadísticas
Supongamos que usamos el mismo DataFrame de pandas que en el ejemplo anterior:
importar pandas como pd
#create DataFrame
df = pd.DataFrame ({'equipo': ['A', 'B', 'B', 'B', 'B', 'M', 'M', 'M'],
'posición': ['G', 'G', 'F', 'G', 'F', 'F', 'C', 'C'],
'asiste': [5, 7, 7, 8, 5, 7, 6, 9],
'rebotes': [11, 8, 10, 6, 6, 9, 6, 10]})
El siguiente código muestra cómo encontrar la mediana y la cantidad máxima de rebotes, agrupados en las columnas ‘equipo’ y ‘posición’:
df. groupby (['equipo', 'posición']). agg ({'rebotes': ['mediana', 'max']}). reset_index ()
la posición del equipo rebota
mediana máxima
0 A G 11 11
1 B F 8 10
2 B G 7 8
3 M C 8 10
4 M F 9 9
La salida nos dice:
- La mediana de las asistencias de rebotes para los jugadores en la posición G del equipo A es 11 .
- El número máximo de rebotes para los jugadores en la posición G del equipo A es 11 .
- La mediana de rebotes para los jugadores en la posición F del equipo B es 8 .
- El máximo de rebotes para los jugadores en la posición F del equipo B es 10 .
Y así.
Recursos adicionales
Cómo filtrar un DataFrame de Pandas en múltiples condiciones
Cómo contar los valores perdidos en un DataFrame de Pandas
Cómo apilar múltiples DataFrames de Pandas
- https://r-project.org
- https://www.python.org/
- https://www.stata.com/
Excelente aporte, justo lo que necesitaba.
Gracias.