- analiticas
- Posts
- Ordinare i dati con pandas
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!