Pular para o conteúdo principal

Pandas Sort Values: Um guia completo

Use sort_values() para reordenar as linhas por valores de coluna. Aplique sort_index() para reorganizar as linhas pelo índice do DataFrame. Combine os dois métodos para explorar seus dados de diferentes ângulos.
Atualizado 16 de jan. de 2025  · 4 min lido

Encontrar partes interessantes de dados em um DataFrame geralmente é mais fácil se você alterar a ordem das linhas. Você pode classificar as linhas passando um nome de coluna para .sort_values().

Nos casos em que as linhas têm o mesmo valor (isso é comum se você classificar em uma variável categórica), você pode querer quebrar os laços classificando em outra coluna. Você pode classificar várias colunas dessa forma, passando uma lista de nomes de colunas.

Exemplo de colunas de classificação do Pandas

Usando o Pandas para classificar colunas

Você pode alterar a ordem das linhas, classificando-as de modo que os dados mais interessantes fiquem na parte superior do DataFrame.

Classificar colunas por uma única variável

Por exemplo, quando aplicamos sort_values() na coluna weight_kg do DataFrame dogs, obtemos o cão mais leve na parte superior, Stella, o Chihuahua, e o cão mais pesado na parte inferior, Bernie, o São Bernardo.

dogs.sort_values("weight_kg")
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
0    Bella     Labrador  Brown         56         24    2013-07-01
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

Se você definir o argumento ascending como False, os dados serão classificados no sentido inverso, do cão mais pesado para o mais leve.

dogs.sort_values("weight_kg", ascending=False)
      name        breed  color  height_cm  weight_kg date_of_birth
6   Bernie  St. Bernard  White         77         74    2018-02-27
4      Max     Labrador  Black         59         29    2017-01-20
0    Bella     Labrador  Brown         56         24    2013-07-01
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
5   Stella    Chihuahua    Tan         18          2    2015-04-20

Classificar colunas por múltiplas variáveis

Você pode classificar por várias variáveis passando uma lista de nomes de colunas para sort_values. Aqui, classificamos primeiro por peso e depois por altura. Agora, Charlie, Lucy e Bella estão ordenados do mais baixo para o mais alto, embora todos tenham o mesmo peso.

dogs.sort_values(["weight_kg", "height_cm"])
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
1  Charlie       Poodle  Black         43         24    2016-09-16
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
0    Bella     Labrador  Brown         56         24    2013-07-01
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

Para alterar a direção em que os valores são classificados, passe uma lista para o argumento ascendente para especificar a direção em que a classificação deve ser feita para cada variável. Agora, Charlie, Lucy e Bella estão ordenados do mais alto para o mais baixo.

dogs.sort_values(["weight_kg", "height_cm"], ascending=[True, False])
      name        breed  color  height_cm  weight_kg date_of_birth
5   Stella    Chihuahua    Tan         18          2    2015-04-20
3   Cooper    Schnauzer   Gray         49         17    2011-12-11
0    Bella     Labrador  Brown         56         24    2013-07-01
2     Lucy    Chow Chow  Brown         46         24    2014-08-25
1  Charlie       Poodle  Black         43         24    2016-09-16
4      Max     Labrador  Black         59         29    2017-01-20
6   Bernie  St. Bernard  White         77         74    2018-02-27

Usando Pandas para classificar por linhas

Às vezes, você pode querer reordenar as linhas com base em seus rótulos de linha (ou seja, o índice do DataFrame) em vez de por colunas específicas. Se esse for o caso, você pode usar o método sort_index() em vez de sort_values(). Lembre-se de que, por padrão, o site sort_index() classificará as linhas em ordem crescente pelo índice:

# Sort rows by their index (ascending)
dogs_sorted = dogs.sort_index()
print(dogs_sorted)

Se você precisar classificar as linhas em ordem decrescente, basta passar ascending=False:

# Sort rows by their index (descending)
dogs_sorted_desc = dogs.sort_index(ascending=False)
print(dogs_sorted_desc)

Da mesma forma, se você tiver um índice multinível (hierárquico), o site sort_index() também poderá lidar com isso classificando vários níveis. Você só precisa passar uma lista para os parâmetros level ou ascending (assim como anteriormente tivemos que passar uma lista para sort_values()):

# Sort rows by multiple levels of a multi-level index
dogs_sorted_multi = dogs.sort_index(level=[0, 1], ascending=[True, False])
print(dogs_sorted_multi)
 

Exemplo interativo do Pandas Sort Values

No exemplo a seguir, você classificará homelessness pelo número de indivíduos sem-teto, do menor para o maior, e o salvará como homelessness_ind. Por fim, você imprimirá o cabeçalho do DataFrame classificado.

# Sort homelessness by individuals
homelessness_ind = homelessness.sort_values("individuals")

# Print the top few rows
print(homelessness_ind.head())

Quando executamos o código acima, ele produz o seguinte resultado:

                region         state  individuals  family_members  state_pop
50            Mountain       Wyoming        434.0           205.0     577601
34  West North Central  North Dakota        467.0            75.0     758080
7       South Atlantic      Delaware        708.0           374.0     965479
39         New England  Rhode Island        747.0           354.0    1058287
45         New England       Vermont        780.0           511.0     624358

Experimente você mesmo.

Para saber mais sobre a classificação e o subconjunto de dados, assista a este vídeo do nosso curso Manipulação de dados com pandas.

Este conteúdo foi extraído do curso Manipulação de dados com pandas do DataCamp, ministrado por Maggie Matsui e Richie Cotton.

Aprendizado adicional

Neste artigo, aprendemos, entre outras coisas, quando usar sort_index() vs. sort_values(): Use sort_values() quando você quiser reordenar as linhas com base nos valores das colunas; use sort_index() quando quiser reordenar as linhas com base nos rótulos das linhas (o índice do DataFrame).

Temos muitos outros tutoriais úteis sobre pandas para que você possa continuar aprendendo, incluindo The ultimate Guide to Pandas for Beginners, para que você possa continuar praticando. Também temos outras instruções específicas para problemas comuns, incluindo Como importar dados CSV para o Pandas e Como unir DataFrames no Pandas. Além disso, lembre-se de fazer nosso curso de habilidades em programação Python para continuar aprimorando suas habilidades. 

Tópicos

Faça cursos de Python com a DataCamp

Curso

Introdução ao Python

4 h
6.6M
Domine os fundamentos da análise de dados com Python em quatro horas e explore pacotes populares.
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow