Como Classificar um DataFrame de forma Fácil?
pandas Sort: Seu Guia para Ordenar Dados em Python
O pandas é uma biblioteca poderosa para análise de dados em Python. Uma de suas funcionalidades mais úteis é a capacidade de ordenar dados em um DataFrame de forma eficiente. Neste tutorial, você aprenderá como usar os métodos .sort_values()
e .sort_index()
para organizar e ordenar seus dados em um DataFrame.
Ao final deste tutorial, você saberá:
- Ordenar um DataFrame pandas pelos valores de uma ou mais colunas;
- Usar o parâmetro
ascending
para alterar a ordem de classificação; - Ordenar um DataFrame pela sua indexação usando
.sort_index()
; - Lidar com dados ausentes durante a ordenação;
- Ordenar um DataFrame no local usando o parâmetro
inplace
definido comoTrue
.
Para seguir este tutorial, você precisará ter uma compreensão básica de DataFrames do pandas e alguma familiaridade com a leitura de dados a partir de arquivos.
Começando com os Métodos de Classificação do Pandas
Primeiro, vamos preparar o conjunto de dados que usaremos para demonstrar os métodos de classificação do pandas. Para este exemplo, usaremos um conjunto de dados fictício contendo informações sobre filmes, incluindo o título, o ano de lançamento, o gênero e a duração.
Aqui está uma amostra do nosso DataFrame:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
0 | Matrix | 1999 | Ação | 136 |
1 | Jurassic Park | 1993 | Aventura | 127 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
3 | Inception | 2010 | Ação | 148 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
Agora que temos nosso DataFrame preparado, podemos começar a explorar os métodos de classificação do pandas.
Conhecendo o .sort_values()
O método .sort_values()
é usado para classificar os valores de uma ou mais colunas do DataFrame em ordem crescente ou decrescente. Ele retorna um novo DataFrame com os valores classificados.
Vamos começar classificando nossos filmes por ano de lançamento:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
2 | Star Wars | 1977 | Ficção Científica | 121 |
1 | Jurassic Park | 1993 | Aventura | 127 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
0 | Matrix | 1999 | Ação | 136 |
3 | Inception | 2010 | Ação | 148 |
Agora os filmes estão organizados do mais antigo para o mais recente. Se quisermos classificá-los em ordem decrescente, podemos definir o parâmetro ascending=False
:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
3 | Inception | 2010 | Ação | 148 |
0 | Matrix | 1999 | Ação | 136 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
1 | Jurassic Park | 1993 | Aventura | 127 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
Podemos ver que os filmes agora estão classificados do mais recente para o mais antigo.
Conhecendo o .sort_index()
O método .sort_index()
é usado para classificar o DataFrame com base em sua indexação, em ordem crescente ou decrescente. Isso pode ser útil quando você deseja classificar seu DataFrame pela ordem dos índices em vez dos valores das colunas.
Vamos classificar nosso DataFrame com base na indexação:
A saída será a mesma que o DataFrame original:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
0 | Matrix | 1999 | Ação | 136 |
1 | Jurassic Park | 1993 | Aventura | 127 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
3 | Inception | 2010 | Ação | 148 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
Se quisermos classificar nosso DataFrame em ordem decrescente de indexação, podemos definir o parâmetro ascending=False
:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
4 | The Shawshank Redemption | 1994 | Drama | 142 |
3 | Inception | 2010 | Ação | 148 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
1 | Jurassic Park | 1993 | Aventura | 127 |
0 | Matrix | 1999 | Ação | 136 |
Agora o DataFrame está classificado em ordem decrescente de indexação.
Classificando o DataFrame com Base em Múltiplas Colunas
O pandas também permite classificar um DataFrame com base em múltiplas colunas. Isso é útil quando você deseja classificar seus dados com base em várias características.
Para classificar um DataFrame com base em várias colunas, você pode passar uma lista de colunas para o método .sort_values()
:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
3 | Inception | 2010 | Ação | 148 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
1 | Jurassic Park | 1993 | Aventura | 127 |
0 | Matrix | 1999 | Ação | 136 |
Observe que os filmes são classificados primeiro pelo título em ordem crescente e, em seguida, pelo ano de lançamento em ordem crescente. Se quisermos classificá-los em ordem decrescente, podemos definir o parâmetro ascending=False
:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
0 | Matrix | 1999 | Ação | 136 |
1 | Jurassic Park | 1993 | Aventura | 127 |
2 | Star Wars | 1977 | Ficção Científica | 121 |
4 | The Shawshank Redemption | 1994 | Drama | 142 |
3 | Inception | 2010 | Ação | 148 |
Agora os filmes são classificados pelo título em ordem decrescente e, em seguida, pelo ano de lançamento em ordem decrescente.
Organizando Dados Ausentes Durante a Classificação em Pandas
Ao classificar dados em um DataFrame, é possível encontrar valores ausentes. O pandas oferece uma maneira de lidar com dados ausentes durante a classificação, através do parâmetro na_position
. Esse parâmetro define onde os valores ausentes serão posicionados no DataFrame classificado.
Por padrão, o valor de na_position
é definido como ‘last’, o que significa que os valores ausentes são posicionados no final do DataFrame classificado. Se você deseja que os valores ausentes sejam posicionados no início do DataFrame classificado, você pode definir o parâmetro na_position='first'
.
Vamos criar um novo conjunto de dados com valores ausentes para demonstrar isso:
A amostra do novo DataFrame será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
0 | Matrix | 1999 | Ação | 136 |
1 | Jurassic Park | 1993 | Aventura | 127 |
2 | None | None | Ficção Científica | None |
3 | Inception | 2010 | Ação | 148 |
4 | The Shawshank Redemption | 1994 | None | 142 |
Agora, vamos classificar o DataFrame com base no título e ver como o parâmetro na_position
afeta os valores ausentes:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
3 | Inception | 2010 | Ação | 148 |
1 | Jurassic Park | 1993 | Aventura | 127 |
0 | Matrix | 1999 | Ação | 136 |
4 | The Shawshank Redemption | 1994 | None | 142 |
2 | None | None | Ficção Científica | None |
Como podemos ver, os valores ausentes são posicionados no final do DataFrame classificado.
Agora, vamos classificar o DataFrame novamente, mas posicionando os valores ausentes no início:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
2 | None | None | Ficção Científica | None |
3 | Inception | 2010 | Ação | 148 |
1 | Jurassic Park | 1993 | Aventura | 127 |
0 | Matrix | 1999 | Ação | 136 |
4 | The Shawshank Redemption | 1994 | None | 142 |
Agora, os valores ausentes são posicionados no início do DataFrame classificado.
Usando os Métodos de Classificação para Modificar seu DataFrame
Até agora, vimos como usar os métodos de classificação do pandas para criar um novo DataFrame com os valores classificados. No entanto, você também pode usar esses métodos para modificar o DataFrame original.
Para fazer isso, você pode definir o parâmetro inplace=True
ao usar os métodos .sort_values()
ou .sort_index()
.
Vamos usar o método .sort_values()
para classificar o DataFrame original pelos valores da coluna “Duração” em ordem crescente e modificar o DataFrame original:
A saída será:
Título | Ano | Gênero | Duração | |
---|---|---|---|---|
2 | Star Wars |