Raggruppamento Complesso
A volte può capitare che le funzioni integrate di pandas, come .mean() o .min(), non siano sufficienti durante l'aggregazione dei dati.
Osservare la colonna 'Length'; qui è riportata la durata del volo in minuti. Si immagini di voler calcolare il tempo massimo in ore per gli elementi che hanno lo stesso valore nella colonna 'Flight' e poi in quella 'Airline'. Per farlo, è possibile calcolare il valore massimo della colonna 'Length' per ogni chiave di gruppo e poi dividerlo per 60. Consultare l'esempio e la spiegazione di seguito.
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))
Spiegazione:
Abbiamo reso l'esempio dei capitoli precedenti leggermente più complesso; per quanto riguarda il raggruppamento dei dati, tutto rimane invariato. Passiamo ora al metodo .apply().
.apply(lambda x: x['Length'].max()/60)
.apply()- consente di applicare una funzione specifica alle colonne desiderate;- nella funzione
lambda,xè l'argomento ex['Length'].max()/60è l'espressione. La funzione trova il valore massimo per ogni chiave di gruppo e divide il valore aggregato per60.
Swipe to start coding
Il tuo compito qui è analizzare la durata dei voli considerando aeroporto, compagnia aerea e giorno della settimana.
Raggrupperai i dati per determinare il tempo totale minimo di volo (la somma di 'Length' e 'Time') per ogni combinazione unica di aeroporto di partenza, compagnia aerea e giorno della settimana.
Segui l'algoritmo passo dopo passo:
- Memorizza l'elenco delle colonne
'AirportFrom','Airline','DayOfWeek','Time'e'Length'(in questo ordine) nella variabilecolumns. - Estrai queste colonne da
datautilizzando la notazione tra parentesi (data[columns]). - Raggruppa il dataset per
'AirportFrom','Airline'e'DayOfWeek'(in questo esatto ordine). - All'interno del metodo
.groupby(), applica la funzione.apply()per calcolare la somma delle colonne'Length'e'Time'per ciascun gruppo, quindi trova il minimo di questa somma. - Assegna il risultato a una variabile chiamata
data_flights. - Visualizza le prime 10 righe della Series risultante utilizzando
.head(10).
Soluzione
Grazie per i tuoi commenti!
single
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Raggruppamento Complesso
Scorri per mostrare il menu
A volte può capitare che le funzioni integrate di pandas, come .mean() o .min(), non siano sufficienti durante l'aggregazione dei dati.
Osservare la colonna 'Length'; qui è riportata la durata del volo in minuti. Si immagini di voler calcolare il tempo massimo in ore per gli elementi che hanno lo stesso valore nella colonna 'Flight' e poi in quella 'Airline'. Per farlo, è possibile calcolare il valore massimo della colonna 'Length' per ogni chiave di gruppo e poi dividerlo per 60. Consultare l'esempio e la spiegazione di seguito.
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))
Spiegazione:
Abbiamo reso l'esempio dei capitoli precedenti leggermente più complesso; per quanto riguarda il raggruppamento dei dati, tutto rimane invariato. Passiamo ora al metodo .apply().
.apply(lambda x: x['Length'].max()/60)
.apply()- consente di applicare una funzione specifica alle colonne desiderate;- nella funzione
lambda,xè l'argomento ex['Length'].max()/60è l'espressione. La funzione trova il valore massimo per ogni chiave di gruppo e divide il valore aggregato per60.
Swipe to start coding
Il tuo compito qui è analizzare la durata dei voli considerando aeroporto, compagnia aerea e giorno della settimana.
Raggrupperai i dati per determinare il tempo totale minimo di volo (la somma di 'Length' e 'Time') per ogni combinazione unica di aeroporto di partenza, compagnia aerea e giorno della settimana.
Segui l'algoritmo passo dopo passo:
- Memorizza l'elenco delle colonne
'AirportFrom','Airline','DayOfWeek','Time'e'Length'(in questo ordine) nella variabilecolumns. - Estrai queste colonne da
datautilizzando la notazione tra parentesi (data[columns]). - Raggruppa il dataset per
'AirportFrom','Airline'e'DayOfWeek'(in questo esatto ordine). - All'interno del metodo
.groupby(), applica la funzione.apply()per calcolare la somma delle colonne'Length'e'Time'per ciascun gruppo, quindi trova il minimo di questa somma. - Assegna il risultato a una variabile chiamata
data_flights. - Visualizza le prime 10 righe della Series risultante utilizzando
.head(10).
Soluzione
Grazie per i tuoi commenti!
single