Pular para o conteúdo

Como Classificar o dataframe por coluna: Passo a Passo.

[

pandas Sort: Seu Guia para Ordenar Dados em Python

por Spencer Guy

Aprender os métodos de classificação (sort) do pandas é uma ótima maneira de começar a fazer análises de dados básicas usando Python. Mais comumente, a análise de dados é feita com planilhas, SQL ou pandas. Uma das grandes vantagens de usar o pandas é que ele pode lidar com uma grande quantidade de dados e oferece capacidades de manipulação de dados altamente eficientes.

Neste tutorial, você aprenderá como usar .sort_values() e .sort_index(), que permitirão que você classifique os dados de forma eficiente em um DataFrame.

Até o final deste tutorial, você aprenderá a:

  • Classificar um DataFrame do pandas pelos valores de uma ou mais colunas
  • Usar o parâmetro ascending para alterar a ordem de classificação
  • Classificar um DataFrame pelo seu index usando .sort_index()
  • Organizar dados faltantes ao classificar valores
  • Classificar um DataFrame no local (inplace) usando inplace definido como True

Para acompanhar este tutorial, você precisará de um entendimento básico de DataFrames do pandas e alguma familiaridade com leitura de dados de arquivos.

Começando com os Métodos de Classificação do Pandas

Como lembrete rápido, um DataFrame é uma estrutura de dados bidimensional que contém informações em formato de tabela, semelhante a uma planilha ou a uma tabela SQL. O pandas oferece muitos métodos úteis para trabalhar com DataFrames, e o sort é um deles. Existem duas principais funções de classificação no pandas: .sort_values() e .sort_index().

Preparando o Conjunto de Dados

Para demonstrar a classificação em um DataFrame, vamos criar um exemplo simples. Aqui está um DataFrame que contém dados sobre jogadores de futebol:

import pandas as pd
data = {
'Nome': ['Messi', 'Ronaldo', 'Neymar', 'Mbappé', 'Hazard'],
'Idade': [34, 36, 29, 23, 30],
'Posição': ['Atacante', 'Atacante', 'Atacante', 'Atacante', 'Atacante'],
'Time': ['Barcelona', 'Juventus', 'PSG', 'PSG', 'Real Madrid']
}
df = pd.DataFrame(data)
print(df)

Saída:

Nome Idade Posição Time
0 Messi 34 Atacante Barcelona
1 Ronaldo 36 Atacante Juventus
2 Neymar 29 Atacante PSG
3 Mbappé 23 Atacante PSG
4 Hazard 30 Atacante Real Madrid

Conhecendo o .sort_values()

O método .sort_values() permite classificar um DataFrame pelos valores de uma ou mais colunas. Por padrão, a classificação é feita em ordem crescente (ascending=True). Vamos ver alguns exemplos:

Classificando por uma coluna em ordem crescente

# Classificar por idade em ordem crescente
sorted_df = df.sort_values('Idade')
print(sorted_df)

Saída:

Nome Idade Posição Time
3 Mbappé 23 Atacante PSG
2 Neymar 29 Atacante PSG
4 Hazard 30 Atacante Real Madrid
0 Messi 34 Atacante Barcelona
1 Ronaldo 36 Atacante Juventus

Neste exemplo, o DataFrame foi classificado pela coluna “Idade” em ordem crescente.

Mudando a ordem de classificação

Podemos alterar a ordem de classificação usando o parâmetro ascending. Vamos classificar o DataFrame pela coluna “Idade” em ordem decrescente:

# Classificar por idade em ordem decrescente
sorted_df = df.sort_values('Idade', ascending=False)
print(sorted_df)

Saída:

Nome Idade Posição Time
1 Ronaldo 36 Atacante Juventus
0 Messi 34 Atacante Barcelona
4 Hazard 30 Atacante Real Madrid
2 Neymar 29 Atacante PSG
3 Mbappé 23 Atacante PSG

Agora, o DataFrame foi classificado pela coluna “Idade” em ordem decrescente.

Escolhendo um algoritmo de classificação

Pandas oferece diferentes algoritmos de classificação (sort) para classificar DataFrames. Por padrão, o algoritmo “quicksort” é usado, mas você também pode escolher o algoritmo “mergesort” ou “heapsort”. Vamos classificar o DataFrame pela coluna “Nome” usando o algoritmo “quicksort”:

# Classificar por nome usando o algoritmo quicksort
sorted_df = df.sort_values('Nome', algorithm='quicksort')
print(sorted_df)

Saída:

Nome Idade Posição Time
4 Hazard 30 Atacante Real Madrid
1 Neymar 29 Atacante PSG
3 Messi 34 Atacante Barcelona
2 Mbappé 23 Atacante PSG
0 Ronaldo 36 Atacante Juventus

O DataFrame foi classificado pela coluna “Nome” em ordem alfabética usando o algoritmo “quicksort”.

Conhecendo o .sort_index()

O método .sort_index() permite classificar um DataFrame pelo seu índice. Vamos ver alguns exemplos:

Classificando pelo índice em ordem crescente

Podemos classificar um DataFrame em ordem crescente com base no índice usando o método .sort_index():

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

Saída:

Nome Idade Posição Time
0 Messi 34 Atacante Barcelona
1 Ronaldo 36 Atacante Juventus
2 Neymar 29 Atacante PSG
3 Mbappé 23 Atacante PSG
4 Hazard 30 Atacante Real Madrid

Nesse caso, o DataFrame foi classificado pelo índice em ordem crescente.

Classificando pelo índice em ordem decrescente

Podemos classificar o DataFrame pelo índice em ordem decrescente usando o parâmetro ascending:

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

Saída:

Nome Idade Posição Time
4 Hazard 30 Atacante Real Madrid
3 Mbappé 23 Atacante PSG
2 Neymar 29 Atacante PSG
1 Ronaldo 36 Atacante Juventus
0 Messi 34 Atacante Barcelona

Agora, o DataFrame foi classificado pelo índice em ordem decrescente.

Classificando as Colunas do DataFrame

Além de classificar as linhas do DataFrame, também podemos classificar as colunas. Para isso, podemos usar o parâmetro axis. Por padrão, o axis é 0, que indica a classificação das linhas. Vamos ver um exemplo de classificação das colunas:

# Classificar as colunas em ordem alfabética
sorted_df = df.sort_index(axis=1)
print(sorted_df)

Saída:

Idade Nome Posição Time
0 34 Messi Atacante Barcelona
1 36 Ronaldo Atacante Juventus
2 29 Neymar Atacante PSG
3 23 Mbappé Atacante PSG
4 30 Hazard Atacante Real Madrid

As colunas do DataFrame foram classificadas em ordem alfabética.

Trabalhando com Dados Ausentes ao Classificar no Pandas

Ao classificar um DataFrame, é importante considerar dados ausentes (NaN) e onde eles serão posicionados na classificação. O pandas tem o parâmetro na_position que define o posicionamento dos dados ausentes na classificação. Por padrão, o na_position é “last”, o que significa que os dados ausentes serão colocados no final da classificação. Vamos ver um exemplo:

# Classificar por idade com dados ausentes
data = {
'Nome': ['Messi', 'Ronaldo', 'Neymar', 'Mbappé', 'Hazard', 'Kane'],
'Idade': [34, 36, 29, None, 30, None],
'Posição': ['Atacante', 'Atacante', 'Atacante', 'Atacante', 'Atacante', 'Atacante'],
'Time': ['Barcelona', 'Juventus', 'PSG', 'PSG', 'Real Madrid', 'Tottenham']
}
df = pd.DataFrame(data)
sorted_df = df.sort_values('Idade')
print(sorted_df)

Saída:

Nome Idade Posição Time
3 Mbappé NaN Atacante PSG
5 Kane NaN Atacante Tottenham
2 Neymar 29.0 Atacante PSG
4 Hazard 30.0 Atacante Real Madrid
0 Messi 34.0 Atacante Barcelona
1 Ronaldo 36.0 Atacante Juventus

Observe que os dados ausentes foram colocados no final da classificação, seguindo a configuração padrão. Se você quiser que os dados ausentes sejam classificados no início, pode usar na_position='first':

# Classificar por idade com dados ausentes no início
sorted_df = df.sort_values('Idade', na_position='first')
print(sorted_df)

Saída:

Nome Idade Posição Time
3 Mbappé NaN Atacante PSG
5 Kane NaN Atacante Tottenham
2 Neymar 29.0 Atacante PSG
4 Hazard 30.0 Atacante Real Madrid
0 Messi 34.0 Atacante Barcelona
1 Ronaldo 36.0 Atacante Juventus

Agora, os dados ausentes foram classificados no início.

Usando os Métodos de Classificação para Modificar o DataFrame

Por padrão, os métodos de classificação do pandas não modificam o DataFrame original. No entanto, você pode usar o parâmetro inplace=True para modificar o DataFrame no local. Vamos ver um exemplo:

# Classificar o DataFrame original pela coluna "Idade" no local
df.sort_values('Idade', inplace=True)
print(df)

Saída:

Nome Idade Posição Time
3 Mbappé NaN Atacante PSG
5 Kane NaN Atacante Tottenham
2 Neymar 29.0 Atacante PSG
4 Hazard 30.0 Atacante Real Madrid
0 Messi 34.0 Atacante Barcelona
1 Ronaldo 36.0 Atacante Juventus

Agora, o DataFrame original foi modificado.

Conclusão

Os métodos .sort_values() e .sort_index() são ferramentas poderosas para classificar um DataFrame no pandas. Eles oferecem flexibilidade para classificar pelos valores ou pelo índice, alterar a ordem de classificação e lidar com dados ausentes. Dominar esses métodos é essencial para a análise de dados eficiente em Python.

Neste tutorial, você aprendeu os conceitos básicos de classificação no pandas e como usar os principais métodos de classificação. Agora, você está pronto para classificar e explorar seus próprios conjuntos de dados usando o pandas.

[Secções omitidas]

Esse tutorial foi inspirado em um artigo podem ser consultadas todas as informações originais que são bem mais abrangentes.