Pular para o conteúdo

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

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.

import pandas as pd
# Criar o DataFrame de exemplo
data = {'Título': ['Matrix', 'Jurassic Park', 'Star Wars', 'Inception', 'The Shawshank Redemption'],
'Ano': [1999, 1993, 1977, 2010, 1994],
'Gênero': ['Ação', 'Aventura', 'Ficção Científica', 'Ação', 'Drama'],
'Duração': [136, 127, 121, 148, 142]}
df = pd.DataFrame(data)

Aqui está uma amostra do nosso DataFrame:

TítuloAnoGêneroDuração
0Matrix1999Ação136
1Jurassic Park1993Aventura127
2Star Wars1977Ficção Científica121
3Inception2010Ação148
4The Shawshank Redemption1994Drama142

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:

# Classificar pelos valores da coluna 'Ano' em ordem crescente
df_sorted = df.sort_values('Ano')
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
2Star Wars1977Ficção Científica121
1Jurassic Park1993Aventura127
4The Shawshank Redemption1994Drama142
0Matrix1999Ação136
3Inception2010Ação148

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:

# Classificar pelos valores da coluna 'Ano' em ordem decrescente
df_sorted = df.sort_values('Ano', ascending=False)
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
3Inception2010Ação148
0Matrix1999Ação136
4The Shawshank Redemption1994Drama142
1Jurassic Park1993Aventura127
2Star Wars1977Ficção Científica121

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:

# Classificar pelo índice em ordem crescente
df_sorted = df.sort_index()
print(df_sorted)

A saída será a mesma que o DataFrame original:

TítuloAnoGêneroDuração
0Matrix1999Ação136
1Jurassic Park1993Aventura127
2Star Wars1977Ficção Científica121
3Inception2010Ação148
4The Shawshank Redemption1994Drama142

Se quisermos classificar nosso DataFrame em ordem decrescente de indexação, podemos definir o parâmetro ascending=False:

# Classificar pelo índice em ordem decrescente
df_sorted = df.sort_index(ascending=False)
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
4The Shawshank Redemption1994Drama142
3Inception2010Ação148
2Star Wars1977Ficção Científica121
1Jurassic Park1993Aventura127
0Matrix1999Ação136

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():

# Classificar pelo título em ordem crescente e depois pelo ano em ordem crescente
df_sorted = df.sort_values(['Título', 'Ano'])
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
3Inception2010Ação148
4The Shawshank Redemption1994Drama142
2Star Wars1977Ficção Científica121
1Jurassic Park1993Aventura127
0Matrix1999Ação136

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:

# Classificar pelo título em ordem decrescente e depois pelo ano em ordem decrescente
df_sorted = df.sort_values(['Título', 'Ano'], ascending=[False, False])
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
0Matrix1999Ação136
1Jurassic Park1993Aventura127
2Star Wars1977Ficção Científica121
4The Shawshank Redemption1994Drama142
3Inception2010Ação148

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:

# Criar o DataFrame de exemplo com valores ausentes
data = {'Título': ['Matrix', 'Jurassic Park', None, 'Inception', 'The Shawshank Redemption'],
'Ano': [1999, 1993, None, 2010, 1994],
'Gênero': ['Ação', 'Aventura', 'Ficção Científica', 'Ação', None],
'Duração': [136, 127, None, 148, 142]}
df_missing_values = pd.DataFrame(data)

A amostra do novo DataFrame será:

TítuloAnoGêneroDuração
0Matrix1999Ação136
1Jurassic Park1993Aventura127
2NoneNoneFicção CientíficaNone
3Inception2010Ação148
4The Shawshank Redemption1994None142

Agora, vamos classificar o DataFrame com base no título e ver como o parâmetro na_position afeta os valores ausentes:

# Classificar pelo título com valores ausentes posicionados no final
df_sorted = df_missing_values.sort_values('Título')
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
3Inception2010Ação148
1Jurassic Park1993Aventura127
0Matrix1999Ação136
4The Shawshank Redemption1994None142
2NoneNoneFicção CientíficaNone

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:

# Classificar pelo título com valores ausentes posicionados no início
df_sorted = df_missing_values.sort_values('Título', na_position='first')
print(df_sorted)

A saída será:

TítuloAnoGêneroDuração
2NoneNoneFicção CientíficaNone
3Inception2010Ação148
1Jurassic Park1993Aventura127
0Matrix1999Ação136
4The Shawshank Redemption1994None142

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:

# Classificar o DataFrame original pelo valores da coluna 'Duração' em ordem crescente
df.sort_values('Duração', inplace=True)
print(df)

A saída será:

TítuloAnoGêneroDuração
2Star Wars