A ordem que coloca no parâmetro "by" importa?
A ordem que coloca no parâmetro "by" importa?
Boas André!! Tudo bem? Espero que sim! A ordem dos parâmetros importa sim! Vou demonstrar! Primeiro vamos importar uma base de dados e realizar o sort com os valores. Eu gosto muito de Pokemon, então a base de dados que vou usar é uma pokedex disponível no GitHub. Dessa forma, não precisaremos baixar nenhum arquivo para trabalhar com os dados. Primeiramente, vamos importas o pandas:
import pandas as pdAgora, vamos importar a base de dados:
dados = pd.read_csv('https://gist.githubusercontent.com/armgilles/194bcff35001e7eb53a2a8b441e8b2c6/raw/92200bc0a673d5ce2110aaad4544ed6c4010f687/pokemon.csv')Se olharmos para os dados nesse momento, eles estão ordenados pelo número do pokemon na pokedex:
    #    Name    Type 1    Type 2    Total    HP    Attack    Defense    Sp. Atk    Sp. Def    Speed    Generation    Legendary
0    1    Bulbasaur    Grass    Poison    318    45    49    49    65    65    45    1    False
1    2    Ivysaur    Grass    Poison    405    60    62    63    80    80    60    1    False
2    3    Venusaur    Grass    Poison    525    80    82    83    100    100    80    1    False
3    3    VenusaurMega Venusaur    Grass    Poison    625    80    100    123    122    120    80    1    False
4    4    Charmander    Fire    NaN    309    39    52    43    60    50    65    1    FalseAgora, vamos fazer dois o sort de duas maneiras a partir das colunas HP, e Generation, em ordens difrerentes para ver a diferença entre os dataframes:
dados1 = dados.sort_values(by=['HP', 'Generation'])Para facilitar a visualização, vamos printar apenas o index, nome do Pokemon, HP e a geração:
#estou usando o collab, então não preciso colocar essa expressão em um print
dados1[['Name', 'HP', 'Generation']].head()Que resulta em:
            Name    HP    Generation
    316    Shedinja    1    3    
    55     Diglett    10    1    
    139    Magikarp   20    1    
    186    Pichu      20    2    
    230    Shuckle    20    2    E agora vamos fazer o mesmo, invertendo os valores no by:
dados2 = dados.sort_values(by=['Generation', 'HP'])E a visualização:
dados2[['Name', 'HP', 'Generation']].head()Que resulta em:
                Name    HP    Generation
    55        Diglett     10    1
    139       Magikarp    20    1
    68        Abra        25    1
    88        Magnemite   25    1
    24        Rattata     30    1Perceba que dados1 e dados2 são diferentes, pois a ordem que inserimos no by altera a forma com que o DataFrame é ordenado.
Espero ter ajudado! Bons estudos!