Pandas DataFrame DataFrame.sort_values() Função

Suraj Joshi 30 janeiro 2023
  1. A sintaxe de pandas.DataFrame.sort_values():
  2. Códigos de exemplo: Classificar DataFrame com Pandas pandas.DataFrame.sort_values() baseado em uma única coluna
  3. Códigos de exemplo: classificar DataFrame com Pandas DataFrame.sort_values() com base em várias colunas
  4. Códigos de exemplo: classificar DataFrame em ordem decrescente com Pandas DataFrame.sort_values()
  5. Códigos de exemplo: Ordenar DataFrame colocando NaN primeiro com Pandas DataFrame.sort_values()
Pandas DataFrame DataFrame.sort_values() Função

Pandas DataFrame.sort_values() método ordena o chamador DataFrame em ordem ascendente ou descendente por valores na coluna especificada ao longo de qualquer índice.

A sintaxe de pandas.DataFrame.sort_values():

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

Parâmetros

by Nome ou lista de nomes a ordenar por
axis ordenar ao longo da linha (axis=0) ou coluna (axis=1)
ascending ordenar em ordem “ascendente” (ascending=True) ou “descendente” (ascending=False)
inplace Booleano. Se True, modificar no local a opção de chamada DataFrame.
kind que algoritmo de ordenação a utilizar. default:quicksort
na_position Colocar o valor NaN no início (na_posição=primeiro) ou no final (na_posição=último)
ignore_index Booleano. Se True, os índices do DataFrame original são ignorados. O valor padrão é ‘Falso’, o que significa que os índices são utilizados.
Novo na versão 1.0.0

Retornar

Se inplace for True, ele retorna a classificação DataFrame; caso contrário, None.

Códigos de exemplo: Classificar DataFrame com Pandas pandas.DataFrame.sort_values() baseado em uma única coluna

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)

Resultado:

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

Ordena o DataFrame df na ordem ascendente (padrão) por valores na coluna Preço.

Os índices na ordenação DataFrame mantém o mesmo que na ordenação original DataFrame.

Se você preferir ter a nova coluna de índice na ordenação DataFrame, então você poderia definir ignore_index (introduzido a partir da versão 1.0.0) para ser 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:")

Resultado:

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

Aqui, utilizamos ignore_index=True para atribuir novos índices às linhas e ignorar o índice do DataFrame original.

Códigos de exemplo: classificar DataFrame com Pandas DataFrame.sort_values() com base em várias colunas

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)

Resultado:

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

Aqui, no início, Sales é classificado primeiro na ordem ascendente, e depois Price para cada Sales também é classificado na ordem ascendente.

No df, 200 é o menor valor da coluna Sales e 3 é o menor valor da coluna Preço para o valor de Sales de 200.

Portanto, a linha com 200 na coluna Sales e 3 na coluna Price vai para o topo.

Devido ao inplace=True, o DataFrame original é modificado após chamar a função sort_values().

Códigos de exemplo: classificar DataFrame em ordem decrescente com 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)

Resultado:


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

Ordena o DataFrame df na ordem decrescente dos valores da coluna Sales.

O 400 é o maior valor na coluna Sales; portanto, a entrada vai para o topo, e outras linhas são ordenadas de acordo.

Códigos de exemplo: Ordenar DataFrame colocando NaN primeiro com 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)

Resultado:

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

Por padrão, os valores NaN são colocados no final do DataFrame após a ordenação.

Mas ao definir na_position=first, podemos colocar os valores NaN no início de DataFrame.

Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

Artigo relacionado - Pandas DataFrame