Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Raggruppamento Complesso | Aggregazione Dei Dati
Tecniche Avanzate in Pandas

bookRaggruppamento 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.

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

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 e x['Length'].max()/60 è l'espressione. La funzione trova il valore massimo per ogni chiave di gruppo e divide il valore aggregato per 60.
Compito

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:

  1. Memorizza l'elenco delle colonne 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' e 'Length' (in questo ordine) nella variabile columns.
  2. Estrai queste colonne da data utilizzando la notazione tra parentesi (data[columns]).
  3. Raggruppa il dataset per 'AirportFrom', 'Airline' e 'DayOfWeek' (in questo esatto ordine).
  4. 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.
  5. Assegna il risultato a una variabile chiamata data_flights.
  6. Visualizza le prime 10 righe della Series risultante utilizzando .head(10).

Soluzione

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

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

bookRaggruppamento 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.

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

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 e x['Length'].max()/60 è l'espressione. La funzione trova il valore massimo per ogni chiave di gruppo e divide il valore aggregato per 60.
Compito

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:

  1. Memorizza l'elenco delle colonne 'AirportFrom', 'Airline', 'DayOfWeek', 'Time' e 'Length' (in questo ordine) nella variabile columns.
  2. Estrai queste colonne da data utilizzando la notazione tra parentesi (data[columns]).
  3. Raggruppa il dataset per 'AirportFrom', 'Airline' e 'DayOfWeek' (in questo esatto ordine).
  4. 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.
  5. Assegna il risultato a una variabile chiamata data_flights.
  6. Visualizza le prime 10 righe della Series risultante utilizzando .head(10).

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 3
single

single

some-alt