Olá Osvaldo, tudo bem? Espero que sim!
Complementando a resposta do Pedro acima:
O método sort_values() pode trazer certa confusão com o parâmetro axis, isso porque ao utilizar o argumento padrão 0, que é utilizado para a resposta correta do exercício, estamos ordenando as linhas do DataFrame, seja em ordem crescente ou decrescente, porém passamos alguma coluna no parâmetro by para sabermos qual coluna iremos observar ao ordenar as linhas do nosso DataFrame.
Vamos visualizar através do exemplo do exercício. Temos inicialmente o nosso conjunto de dados:
| Nome | Sexo | Idade |
---|
0 | Ary | M | 21 |
1 | Catia | F | 19 |
2 | Carlos | M | 50 |
3 | Beto | M | 29 |
4 | Bruna | F | 31 |
5 | Ana | F | 42 |
Queremos ordenar as linhas em ordem crescente, primeiro levando em consideração a coluna Sexo e depois a coluna Nome. Ao aplicarmos o código:
df_B = df_A.sort_values(by = ['Sexo', 'Nome'])
Obtemos como resultado a tabela:
| Nome | Sexo | Idade |
---|
5 | Ana | F | 42 |
4 | Bruna | F | 31 |
1 | Catia | F | 19 |
0 | Ary | M | 21 |
3 | Beto | M | 29 |
2 | Carlos | M | 50 |
Caso utilizassemos o valor 1 para o parâmetro axis, estaríamos ordenando as colunas do nosso DataFrame, permanecendo intactos a ordem das linhas. Repare que ao fazer a transformação acima, o index ficou desorganizado, uma vez que os dados mudaram sua ordenação.
Vou utilizar outra tabela aqui para mostrar o caso do axis = 1 para ficar mais claro, uma vez que a tabela do exercício ficaria confusa para analisar.
Seja o conjunto de dados df_C, criado através do código:
df_C = pd.DataFrame({'Coluna 1':['A','C','B'],'Coluna 2':['B','A','C'],'Coluna 3':['C','B','A']})
| Coluna 1 | Coluna 2 | Coluna 3 |
---|
0 | A | B | C |
1 | C | A | B |
2 | B | C | A |
Quero ordenar as colunas com base em alguma das linhas, digamos a segunda linha. Vou mudar o nome dos índices para ficar ainda mais claro:
df_C.index = ['Linha 1', 'Linha 2', 'Linha 3']
Ao realizar o código acima, obtemos:
| Coluna 1 | Coluna 2 | Coluna 3 |
---|
Linha 1 | A | B | C |
Linha 2 | C | A | B |
Linha 3 | B | C | A |
Vamos ordenar as colunas através da Linha 2.
df_C.sort_values(by = 'Linha 2', axis = 1)
| Coluna 2 | Coluna 3 | Coluna 1 |
---|
Linha 1 | B | C | A |
Linha 2 | A | B | C |
Linha 3 | C | A | B |
Repare que a ordenação das linhas se manteve a mesma, porém as colunas foram ordenadas com base na ordem crescente dos dados da Linha 2, que agora apresenta A -> B -> C e anteriormente estava C -> A -> B.
Espero que tenha tirado sua dúvida.
Estou à disposição. Bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!