Permite agrupar datos en función de los demás. Es decir, hacer el análisis del DataFrame en función de una de las columnas.
- Agrupar por Author y mostrar el conteo de los datos de las demás columnas
df_books.groupby('Author').count()
---> Name User Rating Reviews Price Year Genre
Abraham Verghese 2 2 2 2 2 2
Adam Gasiewski 1 1 1 1 1 1
Adam Mansbach 1 1 1 1 1 1
Adir Levy 1 1 1 1 1 1
- Agrupar por Author y mostrar la media de los datos de las demás columnas
df_books.groupby('Author').median()
---> User Rating Reviews Price Year
Abraham Verghese 4.6 4866 11 2010.5
Adam Gasiewski 4.4 3113 6 2017
Adam Mansbach 4.8 9568 9 2011
Adir Levy 4.8 8170 13 2019
La columna Author, en los casos anteriores, pasa a ser el índice.
- Podemos usar loc y acceder a un dato específico del DataFrame. Agrupar por autor y mostrar la suma de los valores de las demás columnas para William Davis
df_books.groupby('Author').sum().loc['William Davis']
--->
User Rating 8.8
Reviews 14994.0
Price 12.0
Year 4025.0
Name: William Davis, dtype: float64
- Agrupar por author y mostrar la suma de los valores de las demás columnas. Colocar los índices que el DataFrame trae por defecto
df_books.groupby('Author').sum().reset_index()
---> Author User Rating Reviews Price Year
0 Abraham Verghese 9.2 9732 22 4021
1 Adam Gasiewski 4.4 3113 6 2017
2 Adam Mansbach 4.8 9568 9 2011
3 Adir Levy 4.8 8170 13 2019
- La función
agg()
permite aplicar varias funciones al DataFrame una vez agrupado según una columna específica. Agrupar por Author y mostrar el mínimo y máximo de las demás columnas
df_books.groupby('Author').agg(['min','max'])
---> #muestra cada columna dividida en dos: min y max. Estas contienen los valores maximo y minimo de la columna para cada Author
- Agrupar por Author, obtener el mínimo y máximo de la columna ‘Reviews’ y sumar los valores de la columna ‘User Rating’
df_books.groupby('Author').agg({'Reviews':['min','max'], 'User Rating':'sum'})
---> Reviews min Reviews max User Rating
Abraham Verghese 4866 4866 9.2
Adam Gasiewski 3113 3113 4.4
Adam Mansbach 9568 9568 4.8
Adir Levy 8170 8170 4.8
- Agrupar por ‘Author - Year’ y contar los valores de las demás columnas
df_books.groupby(['Author','Year']).count()
---> Name User Rating Reviews Price Genre
('Abraham Verghese', 2010) 1 1 1 1 1
('Abraham Verghese', 2011) 1 1 1 1 1
('Adam Gasiewski', 2017) 1 1 1 1 1
('Adam Mansbach', 2011) 1 1 1 1 1
Reto
Lee este artículo sobre el método groupby
y cuéntanos que otras funciones de agregación podemos usar
Contribución creada por: Edward Giraldo.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?