Raggruppamento Complesso
A volte può capitare che le funzioni integrate di pandas, come .mean()
o .min()
, non siano sufficienti durante l'aggregazione dei dati.
Osserva la colonna 'Length'
; qui abbiamo la durata del volo in minuti. Immagina 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, possiamo calcolare il valore massimo della colonna 'Length'
per ogni chiave di gruppo e poi dividerlo per 60
. Consulta 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 è raggruppare i dati in base all'aeroporto da cui è partito il volo e poi per giorno della settimana. Calcola il valore minimo della somma delle colonne dei gruppi 'Length'
e 'Time'
per determinare quanto può durare un volo con ritardo. Segui l'algoritmo per gestire il compito:
Raggruppa i dati:
- Memorizza l'elenco delle colonne
'AirportFrom'
,'Airline'
,'Time'
e'Length'
(in questo ordine) nella variabilecolumns
; - Estrai
columns
dadata
; - L'ordine è fondamentale all'interno del metodo
.groupby()
; inserisci le colonne'AirportFrom'
e'Airline'
in questo ordine; - Applica la funzione ai valori del set di dati che hanno le stesse chiavi di gruppo;
- Calcola la somma di due colonne:
'Length'
e'Time'
. Poi trova il loro valore minimo.
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.
Osserva la colonna 'Length'
; qui abbiamo la durata del volo in minuti. Immagina 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, possiamo calcolare il valore massimo della colonna 'Length'
per ogni chiave di gruppo e poi dividerlo per 60
. Consulta 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 è raggruppare i dati in base all'aeroporto da cui è partito il volo e poi per giorno della settimana. Calcola il valore minimo della somma delle colonne dei gruppi 'Length'
e 'Time'
per determinare quanto può durare un volo con ritardo. Segui l'algoritmo per gestire il compito:
Raggruppa i dati:
- Memorizza l'elenco delle colonne
'AirportFrom'
,'Airline'
,'Time'
e'Length'
(in questo ordine) nella variabilecolumns
; - Estrai
columns
dadata
; - L'ordine è fondamentale all'interno del metodo
.groupby()
; inserisci le colonne'AirportFrom'
e'Airline'
in questo ordine; - Applica la funzione ai valori del set di dati che hanno le stesse chiavi di gruppo;
- Calcola la somma di due colonne:
'Length'
e'Time'
. Poi trova il loro valore minimo.
Soluzione
Grazie per i tuoi commenti!
single