Regroupement Complexe
Il arrive parfois que les fonctions intégrées de pandas, telles que .mean() ou .min(), ne suffisent pas lors de l'utilisation du groupement.
Considérer la colonne 'Length' ; ici, la durée du vol est exprimée en minutes. Supposons que l'objectif soit de calculer la durée maximale en heures pour les éléments ayant la même valeur dans la colonne 'Flight', puis dans la colonne 'Airline'. Pour cela, il est possible de calculer la valeur maximale de la colonne 'Length' pour chaque clé de groupe, puis de la diviser par 60. Consulter l'exemple et l'explication ci-dessous.
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))
Explication :
Nous avons rendu l'exemple des chapitres précédents un peu plus complexe, donc avec le groupement de données, tout reste identique ; passons à la méthode .apply().
.apply(lambda x: x['Length'].max()/60)
.apply()– permet d'appliquer une fonction spécifique aux colonnes souhaitées ;- dans la fonction
lambda,xest l'argument etx['Length'].max()/60est l'expression. Ainsi, la fonction recherche la valeur maximale pour chaque clé de groupe et divise la valeur agrégée par60.
Swipe to start coding
Votre tâche ici consiste à analyser les durées de vol en tenant compte de l'aéroport, de la compagnie aérienne et du jour de la semaine.
Vous regrouperez les données afin de déterminer le temps de vol total minimum (la somme de 'Length' et 'Time') pour chaque combinaison unique d'aéroport de départ, de compagnie aérienne et de jour de la semaine.
Suivez l'algorithme étape par étape :
- Stockez la liste des colonnes
'AirportFrom','Airline','DayOfWeek','Time'et'Length'(dans cet ordre) dans la variablecolumns. - Extrayez ces colonnes de
dataen utilisant la notation par crochets (data[columns]). - Regroupez l'ensemble de données par
'AirportFrom','Airline'et'DayOfWeek'(dans cet ordre précis). - À l'intérieur de la méthode
.groupby(), appliquez la fonction.apply()pour calculer la somme des colonnes'Length'et'Time'pour chaque groupe, puis trouvez le minimum de cette somme. - Assignez le résultat à une variable nommée
data_flights. - Affichez les 10 premières lignes de la série résultante à l'aide de
.head(10).
Solution
Merci pour vos commentaires !
single
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
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
Regroupement Complexe
Glissez pour afficher le menu
Il arrive parfois que les fonctions intégrées de pandas, telles que .mean() ou .min(), ne suffisent pas lors de l'utilisation du groupement.
Considérer la colonne 'Length' ; ici, la durée du vol est exprimée en minutes. Supposons que l'objectif soit de calculer la durée maximale en heures pour les éléments ayant la même valeur dans la colonne 'Flight', puis dans la colonne 'Airline'. Pour cela, il est possible de calculer la valeur maximale de la colonne 'Length' pour chaque clé de groupe, puis de la diviser par 60. Consulter l'exemple et l'explication ci-dessous.
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))
Explication :
Nous avons rendu l'exemple des chapitres précédents un peu plus complexe, donc avec le groupement de données, tout reste identique ; passons à la méthode .apply().
.apply(lambda x: x['Length'].max()/60)
.apply()– permet d'appliquer une fonction spécifique aux colonnes souhaitées ;- dans la fonction
lambda,xest l'argument etx['Length'].max()/60est l'expression. Ainsi, la fonction recherche la valeur maximale pour chaque clé de groupe et divise la valeur agrégée par60.
Swipe to start coding
Votre tâche ici consiste à analyser les durées de vol en tenant compte de l'aéroport, de la compagnie aérienne et du jour de la semaine.
Vous regrouperez les données afin de déterminer le temps de vol total minimum (la somme de 'Length' et 'Time') pour chaque combinaison unique d'aéroport de départ, de compagnie aérienne et de jour de la semaine.
Suivez l'algorithme étape par étape :
- Stockez la liste des colonnes
'AirportFrom','Airline','DayOfWeek','Time'et'Length'(dans cet ordre) dans la variablecolumns. - Extrayez ces colonnes de
dataen utilisant la notation par crochets (data[columns]). - Regroupez l'ensemble de données par
'AirportFrom','Airline'et'DayOfWeek'(dans cet ordre précis). - À l'intérieur de la méthode
.groupby(), appliquez la fonction.apply()pour calculer la somme des colonnes'Length'et'Time'pour chaque groupe, puis trouvez le minimum de cette somme. - Assignez le résultat à une variable nommée
data_flights. - Affichez les 10 premières lignes de la série résultante à l'aide de
.head(10).
Solution
Merci pour vos commentaires !
single