Funzione Pandas DataFrame DataFrame.sort_values()

Suraj Joshi 30 gennaio 2023
  1. Sintassi di pandas.DataFrame.sort_values():
  2. Codici di esempio: ordina DataFrame con Pandas pandas.DataFrame.sort_values() in base a una singola colonna
  3. Codici di esempio: ordina DataFrame con Pandas DataFrame.sort_values() in base a più colonne
  4. Codici di esempio: ordina DataFrame in ordine decrescente con Pandas DataFrame.sort_values()
  5. Codici di esempio: ordina DataFrame inserendo NaN prima con Pandas DataFrame.sort_values()
Funzione Pandas DataFrame DataFrame.sort_values()

Il metodo Pandas DataFrame.sort_values() ordina il chiamante DataFrame in ordine crescente o decrescente in base ai valori nella colonna specificata lungo uno degli indici.

Sintassi di pandas.DataFrame.sort_values():

DataFrame.sort_values(
    by,
    axis=0,
    ascending=True,
    inplace=False,
    kind="quicksort",
    na_position="last",
    ignore_index=False,
)

Parametri

by Nome o lista di nomi in base a cui ordinare
axis ordina lungo la riga (axis = 0) o la colonna (axis = 1)
ascending ordina in ordine ascendente (ascendente = vero) o discendente (ascendente = falso)
inplace Booleano. Se True, modifica il chiamante DataFrame sul posto
kind quale algoritmo di ordinamento utilizzare. impostazione predefinita: quicksort
na_position Metti il ​​valore NaN all’inizio (na_position=first) o alla fine (na_position=last)
ignore_index Booleano. Se True, gli indici dell’originale DataFrame vengono ignorati. Il valore predefinito è False, il che significa che vengono utilizzati gli indici.
Novità nella versione 1.0.0

Ritorno

Se inplace è True, restituisce il DataFrame ordinato; altrimenti None.

Codici di esempio: ordina DataFrame con Pandas pandas.DataFrame.sort_values() in base a una singola colonna

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'])
print("After Sorting:")
print(sorted_df)

Produzione:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
       Date  Sales  Price
1  April-11    300      1
2  April-12    400      2
5  April-16    300      2
0  April-10    200      3
4  April-14    300      3
3  April-13    200      4

Ordina il DataFrame df in ordine crescente (predefinito) in base ai valori nella colonna Price.

Gli indici nel DataFrame ordinato rimangono gli stessi dell’originale DataFrame.

Se preferisci avere la nuova colonna indice nel DataFrame ordinato, puoi impostare ignore_index (introdotto dalla versione 1.0.0) come True.

import pandas as pd

dates = ["April-10", "April-11", "April-12", "April-13", "April-14", "April-16"]
sales = [200, 300, 400, 200, 300, 300]
prices = [3, 1, 2, 4, 3, 2]

df = pd.DataFrame({"Date": dates, "Sales": sales, "Price": prices})
print("Before Sorting:")
print(df)
sorted_df = df.sort_values(by=["Price"], ignore_index=True)
print("After Sorting:")

Produzione:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-11    300      1
1  April-12    400      2
2  April-16    300      2
3  April-10    200      3
4  April-14    300      3
5  April-13    200      4

Qui, usiamo ignore_index=True per assegnare nuovi indici alle righe e ignorare l’indice del DataFrame originale.

Codici di esempio: ordina DataFrame con Pandas DataFrame.sort_values() in base a più colonne

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
df.sort_values(by=['Sales','Price'],
               ignore_index=True,
               inplace=True)
print("After Sorting:")
print(df)

Produzione:

Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-13    200      4
2  April-11    300      1
3  April-16    300      2
4  April-14    300      3
5  April-12    400      2

Qui, in un primo momento, Vendite viene ordinato prima in ordine crescente, quindi anche Price per ogni Sales viene ordinato in ordine crescente.

In df, 200 è il valore più piccolo della colonna Sales e 3 è il valore più piccolo della colonna Price per il valore Sales di 200.

Quindi, la riga con 200 nella colonna Sales e 3 in Price va in alto.

A causa di inplace=True, l’originale DataFrame viene modificato dopo aver chiamato la funzione sort_values().

Codici di esempio: ordina DataFrame in ordine decrescente con Pandas DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Sales'],
                         ignore_index=True,
                         ascending=False)
print("After Sorting:")
print(sorted_df)

Produzione:


Before Sorting:
       Date  Sales  Price
0  April-10    200      3
1  April-11    300      1
2  April-12    400      2
3  April-13    200      4
4  April-14    300      3
5  April-16    300      2
After Sorting:
       Date  Sales  Price
0  April-12    400      2
1  April-11    300      1
2  April-14    300      3
3  April-16    300      2
4  April-10    200      3
5  April-13    200      4

Ordina il DataFrame df nell’ordine discendente dei valori della colonna Sales.

400 è il valore più grande nella colonna Sales; quindi la voce va in alto e le altre righe vengono ordinate di conseguenza.

Codici di esempio: ordina DataFrame inserendo NaN prima con Pandas DataFrame.sort_values()

import pandas as pd

dates=['April-10', 
       'April-11', 
       'April-12', 
       'April-13',
       'April-14',
       'April-16']
sales=[200,300,400,200,300,300]
prices=[3, 1, 2, 4,3,2]

df = pd.DataFrame({'Date':dates ,
                   'Sales':sales ,
                   'Price': prices})
print("Before Sorting:")
print(df)
sorted_df=df.sort_values(by=['Price'],ignore_index=True,na_position='first')
print("After Sorting:")
print(sorted_df)

Produzione:

Before Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-11    300    1.0
2  April-12    400    2.0
3  April-13    200    4.0
4  April-14    300    3.0
5  April-16    300    NaN
After Sorting:
       Date  Sales  Price
0  April-10    200    NaN
1  April-16    300    NaN
2  April-11    300    1.0
3  April-12    400    2.0
4  April-14    300    3.0
5  April-13    200    4.0

Per impostazione predefinita, i valori NaN vengono inseriti alla fine di DataFrame dopo l’ordinamento.

Ma impostando na_position=first, possiamo inserire i valori NaN all’inizio di DataFrame.

Autore: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

Articolo correlato - Pandas DataFrame