Agrupación Compleja
A veces ocurre que no estamos satisfechos con las funciones integradas de pandas, como .mean()
o .min()
al agrupar.
Observe la columna 'Length'
; aquí, tenemos la duración del vuelo en minutos. Imagine que queremos calcular el tiempo máximo en horas para los elementos que tienen el mismo valor en la columna 'Flight'
y luego en la columna 'Airline'
. Para ello, podemos calcular el valor máximo de la columna 'Length'
para cada clave de grupo y luego dividirlo por 60
. Consulte el ejemplo y la explicación a continuación.
1234import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
Explicación:
Hicimos que el ejemplo de los capítulos anteriores fuera un poco más complicado, así que con el agrupamiento de datos, todo sigue igual; pasemos al método .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
- ayuda a aplicar una función específica a las columnas necesarias;- en la función
lambda
,x
es el argumento yx['Length'].max()/60
es la expresión. Así, la función encuentra el valor máximo para cada clave de grupo y divide el valor agregado por60
.
Swipe to start coding
La tarea consiste en agrupar los datos por el aeropuerto de origen del vuelo y luego por el día de la semana. Calcule la cantidad mínima de tiempo de la suma de las columnas de los grupos 'Length'
y 'Time'
para determinar cuánto puede durar un vuelo con retraso. Siga el algoritmo para gestionar la tarea:
Agrupar datos:
- Guarde la lista de columnas
'AirportFrom'
,'Airline'
,'Time'
y'Length'
(en este orden) en la variablecolumns
; - Extraiga
columns
dedata
; - El orden es fundamental dentro del método
.groupby()
; coloque las columnas'AirportFrom'
y'Airline'
en este orden; - Aplique la función a los valores del conjunto de datos que tengan las mismas claves de grupo;
- Calcule la suma de las dos columnas:
'Length'
y'Time'
. Luego, encuentre su valor mínimo.
Solución
¡Gracias por tus comentarios!
single
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Can you explain what the output of this code will look like?
How does the `.apply()` method differ from using `.agg()` in this context?
Can you show how to reset the index of the resulting DataFrame?
Awesome!
Completion rate improved to 3.03
Agrupación Compleja
Desliza para mostrar el menú
A veces ocurre que no estamos satisfechos con las funciones integradas de pandas, como .mean()
o .min()
al agrupar.
Observe la columna 'Length'
; aquí, tenemos la duración del vuelo en minutos. Imagine que queremos calcular el tiempo máximo en horas para los elementos que tienen el mismo valor en la columna 'Flight'
y luego en la columna 'Airline'
. Para ello, podemos calcular el valor máximo de la columna 'Length'
para cada clave de grupo y luego dividirlo por 60
. Consulte el ejemplo y la explicación a continuación.
1234import pandas as pd data = pd.read_csv('https://codefinity-content-media.s3.eu-west-1.amazonaws.com/4bf24830-59ba-4418-969b-aaf8117d522e/plane', index_col = 0) data_flights = data[['Flight', 'Airline', 'Length']].groupby(['Flight', 'Airline']).apply(lambda x: x['Length'].max()/60) print(data_flights.head(10))
Explicación:
Hicimos que el ejemplo de los capítulos anteriores fuera un poco más complicado, así que con el agrupamiento de datos, todo sigue igual; pasemos al método .apply()
.
.apply(lambda x: x['Length'].max()/60)
.apply()
- ayuda a aplicar una función específica a las columnas necesarias;- en la función
lambda
,x
es el argumento yx['Length'].max()/60
es la expresión. Así, la función encuentra el valor máximo para cada clave de grupo y divide el valor agregado por60
.
Swipe to start coding
La tarea consiste en agrupar los datos por el aeropuerto de origen del vuelo y luego por el día de la semana. Calcule la cantidad mínima de tiempo de la suma de las columnas de los grupos 'Length'
y 'Time'
para determinar cuánto puede durar un vuelo con retraso. Siga el algoritmo para gestionar la tarea:
Agrupar datos:
- Guarde la lista de columnas
'AirportFrom'
,'Airline'
,'Time'
y'Length'
(en este orden) en la variablecolumns
; - Extraiga
columns
dedata
; - El orden es fundamental dentro del método
.groupby()
; coloque las columnas'AirportFrom'
y'Airline'
en este orden; - Aplique la función a los valores del conjunto de datos que tengan las mismas claves de grupo;
- Calcule la suma de las dos columnas:
'Length'
y'Time'
. Luego, encuentre su valor mínimo.
Solución
¡Gracias por tus comentarios!
single