Ordinare i dati con pandas

Mettere ordine tra i dati è un gioco da ragazzi!

Il primo passo di ogni analisi di dati consiste nell’esplorazione. Molto spesso, per capirci qualcosa bisogna andare a mettere ordine nel nostro set di dati.

Fortunatamente la libreria pandas ci permette di ordinare il nostro dataset in pochi e semplici passaggi, senza dover rinunciare alla complessità richiesta dalle analisi più approfondite.

Ordinare i dati: sort_values()

Per utilizzare il comando sort_values(), dobbiamo semplicemente specificare la colonna del nostro dataframe in cui vogliamo mettere ordine.

df.sort_values(by=['colonna'])

Una peculiarità degna di nota è che il comando sort_values() crea di default un altro dataframe, copia dell’originale.

Quindi per ordinare i dati nel dataframe originale abbiamo due opzioni.

La prima, consiste nel creare un dataframe chiamato esattamente come il precedente, che corrisponderà alla versione “ordinata” di quest’ultimo.

df = df.sort_values(by=['colonna'])

La seconda, più bella e sintetica, fa uso dell’argomento inplace. Questo fa sì che andremo ad ordinare direttamente il dataframe iniziale.

df.sort_values(by=['colonna'], inplace=True)

Ordine ascendente o discendente?

Il comando sort_values() è di default ascendente. Quindi, se non specifichiamo nulla ordineremo così i nostri dati.

Tuttavia, se vogliamo essere espliciti, ecco 3 opzioni per ordinare i dati in modo ascendente.

df.sort_values(by=['colonna'], inplace=True)

df.sort_values(by=['colonna'], ascending=True, inplace=True)

df.sort_values(by=['colonna'], ascending=1, inplace=True)

Infatti, possiamo usare come sinonimi “True” e 1.

Invece, per ordinare il nostro dataframe in maniera discendente, avremo 2 opzioni:

df.sort_values(by=['Categoria'], ascending=False, inplace=True)

df.sort_values(by=['Categoria'], ascending=0, inplace=True)

Come nell’esempio precedente, possiamo usare come sinonimi “False” e 0.

Ricapitolando: se non chiamato, l’argomento “ascending” è vero.

Ordinare secondo due o più colonne, nella stessa direzione

Se vuoi ordinare il dataframe secondo i valori di diverse colonne, ma nella stessa direzione (entrambe in ordine ascendente o discendente) pandas ci permette di farlo in maniera molto semplice.

# Ordine ascendente
df.sort_values(by=['colonna', 'colonna2'], inplace=True)
# Ordine discendente
df.sort_values(by=['colonna', 'colonna2'], ascending=0, inplace=True)

Ovviamente, i valori sono ordinati inizialmente rispetto alla prima colonna, poi rispetto alla seconda, alla terza, ecc.

Ordinare secondo due o più colonne, in direzioni diverse

Per ordinare i valori del nostro dataframe in maniera diversa a seconda della colonna presa in considerazione, non ci resta che attribuire il valore che desideriamo dell’argomento ascending (True o False) a ciascuna delle colonne specificate:

df.sort_values(by=['colonna', 'colonna2'], ascending=[False,True], inplace=True)

O, in maniera più snella:

df.sort_values(by=['colonna', 'colonna2'], ascending=[0,1], inplace=True)

Per ricevere micro-lezioni come questa via email, iscriviti alla newsletter!