Agrupación Compleja
A veces ocurre que las funciones integradas de pandas, como .mean()
o .min()
, no resultan suficientes al agrupar datos.
Observe la columna 'Length'
; aquí se encuentra la duración del vuelo en minutos. Suponga que se desea 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, se puede 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()
- permite 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 aquí es analizar las duraciones de los vuelos considerando el aeropuerto, la aerolínea y el día de la semana.
Se agruparán los datos para determinar el tiempo total mínimo de vuelo (la suma de 'Length'
y 'Time'
) para cada combinación única de aeropuerto de salida, aerolínea y día de la semana.
Siga el algoritmo paso a paso:
- Almacene la lista de columnas
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
y'Length'
(en este orden) en la variablecolumns
. - Extraiga estas columnas de
data
utilizando la notación de corchetes (data[columns]
). - Agrupe el conjunto de datos por
'AirportFrom'
,'Airline'
y'DayOfWeek'
(en este orden exacto). - Dentro del método
.groupby()
, aplique la función.apply()
para calcular la suma de las columnas'Length'
y'Time'
para cada grupo, y luego encuentre el valor mínimo de esta suma. - Asigne el resultado a una variable llamada
data_flights
. - Muestre las primeras 10 filas de la Serie resultante utilizando
.head(10)
.
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 las funciones integradas de pandas, como .mean()
o .min()
, no resultan suficientes al agrupar datos.
Observe la columna 'Length'
; aquí se encuentra la duración del vuelo en minutos. Suponga que se desea 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, se puede 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()
- permite 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 aquí es analizar las duraciones de los vuelos considerando el aeropuerto, la aerolínea y el día de la semana.
Se agruparán los datos para determinar el tiempo total mínimo de vuelo (la suma de 'Length'
y 'Time'
) para cada combinación única de aeropuerto de salida, aerolínea y día de la semana.
Siga el algoritmo paso a paso:
- Almacene la lista de columnas
'AirportFrom'
,'Airline'
,'DayOfWeek'
,'Time'
y'Length'
(en este orden) en la variablecolumns
. - Extraiga estas columnas de
data
utilizando la notación de corchetes (data[columns]
). - Agrupe el conjunto de datos por
'AirportFrom'
,'Airline'
y'DayOfWeek'
(en este orden exacto). - Dentro del método
.groupby()
, aplique la función.apply()
para calcular la suma de las columnas'Length'
y'Time'
para cada grupo, y luego encuentre el valor mínimo de esta suma. - Asigne el resultado a una variable llamada
data_flights
. - Muestre las primeras 10 filas de la Serie resultante utilizando
.head(10)
.
Solución
¡Gracias por tus comentarios!
single