Contenu du cours
Techniques Avancées dans Pandas
Techniques Avancées dans Pandas
Groupement Compliqué
Il arrive parfois que nous ne soyons pas satisfaits des fonctions intégrées de pandas, comme .mean()
ou .min()
lors du regroupement.
Regardez la colonne 'Length'
; ici, nous avons la durée du vol en minutes. Imaginez que nous voulons calculer le temps maximum en heures pour les éléments ayant la même valeur dans la colonne 'Flight'
puis dans celle 'Airline'
. Pour ce faire, nous pouvons calculer la valeur maximale de la colonne 'Length'
pour chaque clé de groupe, puis la diviser par 60
. Regardez l'exemple et l'explication ci-dessous.
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))
Explication :
Nous avons rendu l'exemple des chapitres précédents un peu plus compliqué, donc avec le regroupement de données, tout est pareil ; passons à la méthode .apply()
.
.apply()
- elle aide à appliquer une fonction spécifique aux colonnes nécessaires ;- dans la fonction
lambda
,x
est l'argument etx['Length'].max()/60
est l'expression. Ainsi, la fonction trouve la valeur maximale pour chaque clé de groupe et divise la valeur agrégée par60
.
Swipe to start coding
Votre tâche ici est de regrouper les données par l'aéroport d'où le vol a commencé, puis par le jour de la semaine. Calculez le temps minimum de la somme des colonnes des groupes 'Length'
et 'Time'
pour déterminer combien de temps le vol avec retard peut prendre. Suivez l'algorithme pour gérer la tâche :
Regrouper les données :
- Stockez la liste des colonnes
'AirportFrom'
,'Airline'
,'Time'
, et'Length'
(dans cet ordre) dans la variablecolumns
; - Extrayez
columns
dedata
; - L'ordre est crucial dans la méthode
.groupby()
, mettez les colonnes'AirportFrom'
et'Airline'
dans cet ordre; - Appliquez la fonction aux valeurs de l'ensemble de données ayant les mêmes clés de groupe;
- Calculez la somme de deux colonnes :
'Length'
et'Time'
. Ensuite, trouvez leur minimum.
Solution
Merci pour vos commentaires !
Groupement Compliqué
Il arrive parfois que nous ne soyons pas satisfaits des fonctions intégrées de pandas, comme .mean()
ou .min()
lors du regroupement.
Regardez la colonne 'Length'
; ici, nous avons la durée du vol en minutes. Imaginez que nous voulons calculer le temps maximum en heures pour les éléments ayant la même valeur dans la colonne 'Flight'
puis dans celle 'Airline'
. Pour ce faire, nous pouvons calculer la valeur maximale de la colonne 'Length'
pour chaque clé de groupe, puis la diviser par 60
. Regardez l'exemple et l'explication ci-dessous.
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))
Explication :
Nous avons rendu l'exemple des chapitres précédents un peu plus compliqué, donc avec le regroupement de données, tout est pareil ; passons à la méthode .apply()
.
.apply()
- elle aide à appliquer une fonction spécifique aux colonnes nécessaires ;- dans la fonction
lambda
,x
est l'argument etx['Length'].max()/60
est l'expression. Ainsi, la fonction trouve la valeur maximale pour chaque clé de groupe et divise la valeur agrégée par60
.
Swipe to start coding
Votre tâche ici est de regrouper les données par l'aéroport d'où le vol a commencé, puis par le jour de la semaine. Calculez le temps minimum de la somme des colonnes des groupes 'Length'
et 'Time'
pour déterminer combien de temps le vol avec retard peut prendre. Suivez l'algorithme pour gérer la tâche :
Regrouper les données :
- Stockez la liste des colonnes
'AirportFrom'
,'Airline'
,'Time'
, et'Length'
(dans cet ordre) dans la variablecolumns
; - Extrayez
columns
dedata
; - L'ordre est crucial dans la méthode
.groupby()
, mettez les colonnes'AirportFrom'
et'Airline'
dans cet ordre; - Appliquez la fonction aux valeurs de l'ensemble de données ayant les mêmes clés de groupe;
- Calculez la somme de deux colonnes :
'Length'
et'Time'
. Ensuite, trouvez leur minimum.
Solution
Merci pour vos commentaires !