single
Agrupación Complicada
Desliza para mostrar el menú
A veces ocurre que no estamos satisfechos con las funciones integradas de pandas, como .mean() o .min() al agrupar.
Observa la columna 'Length'; aquí tenemos la duración del vuelo en minutos. Imagina 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 de 'Airline'. Para hacerlo, podemos calcular el valor máximo de la columna 'Length' para cada clave de grupo y luego dividirlo por 60. Observa 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, pero con el agrupamiento de datos, todo sigue igual; ahora 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,xes el argumento yx['Length'].max()/60es la expresión. Así, la función encuentra el valor máximo para cada clave de grupo y divide el valor agregado por60.
Desliza para comenzar a programar
Tu tarea aquí es analizar las duraciones de los vuelos considerando el aeropuerto, la aerolínea y el día de la semana.
Agrupa 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.
Sigue el algoritmo paso a paso:
- Guarda la lista de columnas
'AirportFrom','Airline','DayOfWeek','Time'y'Length'(en este orden) en la variablecolumns. - Extrae estas columnas de
datausando la notación de corchetes (data[columns]). - Agrupa el conjunto de datos por
'AirportFrom','Airline'y'DayOfWeek'(en este orden exacto). - Dentro del método
.groupby(), aplica la función.apply()para calcular la suma de las columnas'Length'y'Time'para cada grupo, y luego encuentra el mínimo de esta suma. - Asigna el resultado a una variable llamada
data_flights. - Muestra las primeras 10 filas de la Serie resultante usando
.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