Curso
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.

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
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.