This website uses cookies

Read our Privacy policy and Terms of use for more information.

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!