Pandas Groupby Index

Pandas Groupby Index
Per dividere i dati in gruppi, possiamo utilizzare i dati Pandas DataFrame.funzione groupby (). Possiamo dividere gli oggetti Pandas in gruppi di dati lungo un asse. La definizione formale di raggruppamento è una mappatura da etichetta a gruppo. Un oggetto è diviso, viene applicata una funzione e le uscite sono combinate in un'operazione GroupBy. Questo è un metodo utile per eseguire le operazioni e aggregare le enormi quantità di dati. Il gruppo Pandas Rimuove le colonne GroupBy dall'elenco delle colonne di DataFrame e le converte in indici per impostazione predefinita. In questo articolo, dimostreremo come raggruppare i dati in base all'indice o al multi-indice del frame dati nei panda e come eseguire le diverse operazioni sull'indice dopo averli raggruppati.

Come utilizzare l'indice GroupBy in Panda

Diamo un'occhiata alla sintassi della funzione GroupBy () prima di applicarla all'indice di DataFrame.

Sintassi:

DataFrame.GroupBy (by = nessuno, axis = 0, level = nessuno, as_index = true, sort = true, group_keys = true)

Dove;

di: Una stringa, una funzione, un iterabile o una mappatura.

asse: Int, zero per impostazione predefinita.

livello: Raggruppando i dati per l'asse indice multilivello di un certo livello o di livelli gerarchici.

as_index: Questo vale solo per l'input di dati. Se index = false, l'output è raggruppato in "SQL-Style".

ordinare: Un gruppo di chiavi deve essere ordinato. Spegni questo per aumentare le prestazioni. Ciò non dovrebbe avere alcun impatto sull'ordine o sulla sequenza di osservazioni all'interno di qualsiasi gruppo. Le righe all'interno di ciascun gruppo sono mantenute nell'ordine mantenuto dal gruppo.

group_keys: Quando si chiama applicare, aggiungi le chiavi dei gruppi all'indice per identificare la stretta delle parti: ridurre la dimensionalità del tipo di ritorno, se è possibile; In caso contrario, restituire un tipo costante.

Ora, è possibile eseguire i calcoli durante il raggruppamento per le colonne indici singole o multiple usando i metodi elencati nei seguenti:

Esempio 1: trovare il valore massimo della colonna raggruppando la colonna dell'indice

Per prima cosa creiamo un telaio di dati utilizzando il PD.Funzione dataframe () in modo da poter raggruppare i dati dall'indice del frame dati e determinare il loro valore massimo per una colonna specifica del data frame. Importiamo la libreria Pandas prima di creare il frame dati.

Creiamo un telaio di dati composto da tre colonne: "team_id", "paese" e "punteggio". I valori dei dati ("001", "002", "001", "001", "003", "003", "002", "001", "002", "003"), ("Spagna", "Brasile", "Brasile", "Germania", "Brasile", "Spagna", "Germania", "Spagna", "Germania", "Spagna") e (6, 10, 6, 5, 8, 5 , 8, 9, 5, 8) sono archiviati nelle colonne "team_id", "paese" e "punteggio", rispettivamente. Come si può notare, esiste un indice intero che è un indice per impostazione predefinita creata dal costruttore Panda. Possiamo specificare la colonna o le colonne del Frame dati come indice del frame dati utilizzando la funzione set_index ().

La colonna "team_id" è ora convertita in un indice. Raggruppiamo l'indice utilizzando la funzione GroupBy () e troviamo il valore massimo per ciascun gruppo con l'aiuto della funzione max ().

Specificando l'etichetta della colonna indice all'interno della funzione GroupBy () come una stringa, convertiamo i dati in tre gruppi: 001, 002 e 003. Quindi, la funzione max () viene applicata alla colonna "punteggio" per trovare il valore massimo per ciascun gruppo. Per il valore di gruppo "001", il valore massimo nella colonna "punteggio" è 9. Quindi, 10 è il valore massimo per i dati del gruppo 002 e 8 è il valore massimo per i dati del gruppo 003.

Esempio 2: trova la somma dei valori della colonna raggruppando le colonne multiindex

Nell'esempio precedente, abbiamo convertito una singola colonna del frame dati come indice del frame dati. Ora, impostiamo le colonne più frame di dati come indici di dati.

Nel frame dati appena creato, abbiamo quattro colonne con etichette "gruppo", "team_id", "nome" e "età". Nella colonna "Gruppo", abbiamo i valori dei dati ("X", "X", "X", "X", "X", "Y", "Y", "Y", "Y", " Y "). Il "team_id" memorizza i valori ("001", "002", "001", "001", "003", "003", "002", "001", "002", "003"). Mentre le colonne "Nome" e "Age" sono costituite da valori di dati ("Riz", "Bran", "Kim", "William", "Hardy", "Sam", "Ryan", "Lana", "Jenny" , "Argilla") e (21, 25, 19, 17, 22, 27, 25, 18, 29, 21). Imposta le colonne di gruppo e team_id come indici di dati.

L'elenco delle etichette di colonne ["gruppo", "team_id"] viene passato all'interno della funzione set_index (). Ora, il gruppo delle colonne e il team_id fungono da indice multilivello. Convertiamo i dati dell'indice in gruppi e determiniamo la somma dei valori nella colonna "età" per ciascun gruppo.

La funzione determina correttamente la somma dei valori di colonna "età" per ciascun gruppo di indici multilivello.

Esempio 3: Trova il numero di valori univoci raggruppando una colonna indice e una colonna normale del frame dati

Abbiamo visto come raggruppare la colonna dell'indice o più colonne indici di dati. Ora raggruppiamo sia l'indice che le normali colonne di dati di dati per trovare il numero di valori univoci in una colonna specifica. Per il PD.Funzione DataFrame (), Per generare DataFrame, un dizionario viene passato come input.

Viene creato un frame dati. Creiamo quattro colonne nel nostro frame dati. La colonna "Sezione" ha valori di stringa ("rosso", "rosso", "rosso", "rosso", "rosso", "blu", "blu", "blu", "blu", "blu"). La colonna "Student" memorizza i nomi degli studenti come String ("Frey", "Kelly", "Peter", "Tyson", "Jhon", "Sansa", "Cloe", "Randy", "Lance", " Diaz "). La colonna "Soggetti" ha valori stringa come nome di soggetti ("C ++", "C ++", "Java", "Python", "Python", "C ++", "C#", "C#", "R", "JS"). E la colonna "posizione" ha valori interi (3, 1, 3, 2, 1, 5, 4, 6, 4, 7).

Poiché la colonna "Sezione" è impostata come indice di dati, raggruppiamo le nostre colonne utilizzando la funzione GroupBy ().

Passiamo un elenco di etichette di colonne (un'etichetta della colonna indice e un'etichetta di colonna normale) come argomento all'interno della funzione GroupBy () per creare i gruppi. La funzione Nune () viene applicata alla colonna "soggetto" per contare i valori distinti per ciascun gruppo.

Esempio 4: Trova la media di più colonne raggruppando più colonne indici di dati

Abbiamo applicato le diverse funzioni a una colonna specifica del frame dati negli esempi precedenti. Ora applichiamo le diverse funzioni su più colonne dopo aver raggruppato la colonna indice. Creiamo un gesto di dati di esempio come si può vedere di seguito:

Innanzitutto, impostiamo la colonna della sezione come colonna indice.

Ora, raggruppiamo i dati della colonna indice e determiniamo il valore medio e il valore della somma delle colonne "test1" e "test2", rispettivamente.

Usiamo la funzione Agg () e passiamo un dizionario con nomi di colonne come chiavi e funzioni/ operazioni come valori per applicare le diverse funzioni sulle colonne "Test1" e "Test2". La media della colonna "test1" è 7.2 e la somma dei valori di "test2 Test2" della colonna è 35 per il gruppo A. Per il gruppo B, la media dei valori di "test1" della colonna è 6.6 e la somma dei valori di colonna "test2" è 31.

Conclusione

In questo tutorial, abbiamo discusso di come utilizzare la funzione GroupBy () con la colonna di indice di DataFrame in Panda. Innanzitutto, abbiamo discusso della sintassi della funzione GroupBy () per comprendere i suoi parametri e funzionalità. Abbiamo praticamente implementato i più esempi in questo articolo per insegnarti come eseguire le diverse funzioni su una colonna specifica o più colonne di un telaio di dati raggruppando la colonna indice o le colonne dell'indice multilivello.