Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Agrupación Compleja | Agregación de Datos
Técnicas Avanzadas en Pandas

bookAgrupació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.

1234
import 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))
copy

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 y x['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 por 60.
Tarea

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:

  1. Almacene la lista de columnas 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' y 'Length' (en este orden) en la variable columns.
  2. Extraiga estas columnas de data utilizando la notación de corchetes (data[columns]).
  3. Agrupe el conjunto de datos por 'AirportFrom', 'Airline' y 'DayOfWeek' (en este orden exacto).
  4. 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.
  5. Asigne el resultado a una variable llamada data_flights.
  6. Muestre las primeras 10 filas de la Serie resultante utilizando .head(10).

Solución

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
single

single

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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?

close

Awesome!

Completion rate improved to 3.03

bookAgrupació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.

1234
import 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))
copy

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 y x['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 por 60.
Tarea

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:

  1. Almacene la lista de columnas 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' y 'Length' (en este orden) en la variable columns.
  2. Extraiga estas columnas de data utilizando la notación de corchetes (data[columns]).
  3. Agrupe el conjunto de datos por 'AirportFrom', 'Airline' y 'DayOfWeek' (en este orden exacto).
  4. 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.
  5. Asigne el resultado a una variable llamada data_flights.
  6. Muestre las primeras 10 filas de la Serie resultante utilizando .head(10).

Solución

Switch to desktopCambia al escritorio para practicar en el mundo realContinúe desde donde se encuentra utilizando una de las siguientes opciones
¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 3
single

single

some-alt