Pular para o conteúdo

Como Ordenar uma Coluna em um DataFrame?

[

pandas Sort: Seu guia para classificar dados no Python

por Spencer Guy ciência de dados intermediário

Introdução aos métodos de classificação do Pandas

Aprender os métodos de classificação do pandas é uma ótima maneira de começar ou praticar a análise básica de dados usando Python. A análise de dados é comumente feita com planilhas, SQL ou pandas. Uma das ótimas vantagens de usar o pandas é que ele pode lidar com uma grande quantidade de dados e oferece alta capacidade de manipulação de dados com alto desempenho.

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 por seu índice usando .sort_index()
  • Organizar dados ausentes ao classificar valores
  • Classificar um DataFrame no local usando inplace definido como True

Para acompanhar este tutorial, você precisará de uma compreensão básica dos DataFrames do pandas e alguma familiaridade com a leitura de dados de arquivos.

Bônus gratuito: Clique aqui para obter um Python Cheat Sheet e aprender o básico do Python 3, como trabalhar com tipos de dados, dicionários, listas e funções do Python.

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

Como um lembrete rápido, um DataFrame do pandas é uma estrutura de dados bidimensional que pode conter colunas com diferentes tipos de dados, semelhante a uma planilha ou a uma tabela SQL. Com o pandas, você pode facilmente importar, analisar e manipular dados para fins de análise.

Vamos começar importando o próprio pandas:

import pandas as pd

Preparando o Conjunto de Dados

Para este tutorial, usaremos um conjunto de dados fictício que contém informações sobre várias pessoas, incluindo seus nomes, idades e salários. Podemos criar esse DataFrame manualmente:

data = {
'Nome': ['Alice', 'Bob', 'Charlie', 'Dave', 'Eve'],
'Idade': [25, 30, 35, 40, 45],
'Salário': [5000, 8000, 6000, 9000, 7000]
}
df = pd.DataFrame(data)

Conhecendo .sort_values()

O método .sort_values() é usado para classificar um DataFrame do pandas pelos valores de uma ou mais colunas. Ele retorna um novo DataFrame com os valores classificados.

Vamos começar classificando nosso DataFrame pelo nome em ordem alfabética:

df_sorted = df.sort_values('Nome')
print(df_sorted)

Isso resultará em um DataFrame ordenado pelos valores da coluna ‘Nome’ em ordem alfabética crescente.

Conhecendo .sort_index()

O método .sort_index() é usado para classificar um DataFrame do pandas por seu índice. Ele retorna um novo DataFrame com o índice classificado.

Devemos ter em mente que o índice do DataFrame é a maneira pela qual os dados são organizados e acessados dentro dele. O índice também pode ser usado para filtrar, selecionar e classificar os dados.

Vamos classificar nosso DataFrame pelo índice em ordem crescente:

df_sorted = df.sort_index()
print(df_sorted)

Isso resultará em um DataFrame ordenado pelo índice em ordem crescente.

Classificando seu DataFrame por uma única coluna

Classificando por uma coluna em ordem crescente

Agora que entendemos os métodos básicos de classificação do pandas, podemos começar a classificar nosso DataFrame com mais detalhes.

Vamos começar classificando nosso DataFrame pelo salário em ordem crescente:

df_sorted = df.sort_values('Salário')
print(df_sorted)

Aqui, estamos usando a função .sort_values() para classificar nosso DataFrame pelo valor da coluna ‘Salário’ em ordem crescente. O resultado será um DataFrame ordenado pelo salário em ordem crescente.

Alterando a ordem de classificação

Por padrão, a função .sort_values() classifica os valores de uma coluna em ordem crescente. No entanto, você também pode alterar a ordem de classificação para decrescente, definindo o parâmetro ascending como False. Por exemplo, vamos classificar nosso DataFrame pelo salário em ordem decrescente:

df_sorted = df.sort_values('Salário', ascending=False)
print(df_sorted)

Aqui, estamos usando o parâmetro ascending=False para alterar a ordem de classificação para decrescente. O resultado será um DataFrame ordenado pelo salário em ordem decrescente.

Escolhendo um algoritmo de classificação

Por padrão, a função .sort_values() usa o algoritmo de classificação ‘quicksort’. No entanto, o pandas também oferece a opção de escolher um algoritmo de classificação diferente, como ‘mergesort’ ou ‘heapsort’. Você pode especificar o algoritmo desejado usando o parâmetro kind. Por exemplo, vamos classificar nosso DataFrame pelo salário usando o algoritmo ‘mergesort’:

df_sorted = df.sort_values('Salário', kind='mergesort')
print(df_sorted)

Aqui, estamos usando o parâmetro kind='mergesort' para escolher o algoritmo de classificação ‘mergesort’. O resultado será um DataFrame ordenado pelo salário usando esse algoritmo de classificação específico.

Classificando seu DataFrame por várias colunas

Às vezes, você pode precisar classificar seu DataFrame com base em várias colunas. O pandas permite que você faça isso fornecendo uma lista de colunas para a função .sort_values(). Vamos aprender como classificar nosso DataFrame pelo nome em ordem alfabética e, em seguida, pelo salário em ordem crescente:

df_sorted = df.sort_values(['Nome', 'Salário'])
print(df_sorted)

Aqui, estamos fornecendo uma lista [‘Nome’, ‘Salário’] para a função .sort_values(). Isso classificará nosso DataFrame primeiro pelo nome em ordem alfabética e, em seguida, pelo salário em ordem crescente.

Alterando a ordem de classificação de colunas

Por padrão, a função .sort_values() classifica as colunas em ordem crescente. No entanto, você também pode alterar a ordem de classificação de cada coluna individualmente fornecendo uma lista de valores booleanos para o parâmetro ascending. Por exemplo, vamos classificar nosso DataFrame pelo nome em ordem alfabética crescente e pelo salário em ordem decrescente:

df_sorted = df.sort_values(['Nome', 'Salário'], ascending=[True, False])
print(df_sorted)

Aqui, estamos fornecendo uma lista de valores booleanos [True, False] para o parâmetro ascending. Isso definirá a ordem de classificação para o nome como crescente e o salário como decrescente.

Classificando por várias colunas em ordem decrescente

Da mesma forma, podemos classificar nosso DataFrame por várias colunas em ordem decrescente, alterando a ordem de classificação usando o parâmetro ascending. Vamos classificar nosso DataFrame pelo nome em ordem alfabética decrescente e pelo salário em ordem crescente:

df_sorted = df.sort_values(['Nome', 'Salário'], ascending=[False, True])
print(df_sorted)

Aqui, estamos fornecendo uma lista de valores booleanos [False, True] para o parâmetro ascending. Isso definirá a ordem de classificação para o nome como decrescente e o salário como crescente.

Classificando por várias colunas com diferentes ordens de classificação

Você também pode classificar seu DataFrame por várias colunas com ordens de classificação diferentes. Vamos classificar nosso DataFrame pelo nome em ordem alfabética decrescente e pelo salário em ordem decrescente:

df_sorted = df.sort_values(['Nome', 'Salário'], ascending=[False, False])
print(df_sorted)

Aqui, estamos fornecendo uma lista de valores booleanos [False, False] para o parâmetro ascending. Isso definirá a ordem de classificação para o nome e o salário como decrescentes.

Classificando seu DataFrame pelo índice

Classificando pelo índice em ordem crescente

Até agora, discutimos como classificar nosso DataFrame com base nas colunas. No entanto, o pandas também permite que você classifique seu DataFrame com base no índice usando o método .sort_index(). Isso pode ser útil quando seu índice contém informações relevantes que você deseja organizar.

Vamos classificar nosso DataFrame pelo índice em ordem crescente:

df_sorted = df.sort_index()
print(df_sorted)

Aqui, estamos usando o método .sort_index() para classificar nosso DataFrame pelo índice em ordem crescente.

Classificando pelo índice em ordem decrescente

Da mesma forma, podemos classificar nosso DataFrame pelo índice em ordem decrescente:

df_sorted = df.sort_index(ascending=False)
print(df_sorted)

Aqui, estamos usando o método .sort_index(ascending=False) para classificar nosso DataFrame pelo índice em ordem decrescente.

Explorando conceitos avançados de classificação de índice

O pandas também oferece recursos avançados para classificação de índice, como classificação por índice multifacetado ou classificação reversa. Esses recursos são úteis para manipular e organizar grandes conjuntos de dados com índices complexos. Você pode explorar esses conceitos avançados em nossa documentação oficial do pandas.

Classificando as colunas do seu DataFrame

Até agora, discutimos como classificar nosso DataFrame pelas linhas usando as colunas e o índice. No entanto, o pandas também permite que você classifique as colunas do seu DataFrame.

Trabalhando com o eixo do DataFrame

O pandas trata as colunas de um DataFrame como o eixo 1 e as linhas como o eixo 0. Você pode especificar o eixo que deseja classificar usando o parâmetro axis. Por exemplo, vamos classificar as colunas do nosso DataFrame em ordem alfabética:

df_sorted = df.sort_index(axis=1)
print(df_sorted)

Aqui, estamos fornecendo o parâmetro axis=1 para classificar as colunas do DataFrame em ordem alfabética.

Usando rótulos de colunas para classificar

O pandas também permite que você use os rótulos de colunas para classificar seu DataFrame. Vamos classificar nosso DataFrame usando o rótulo da coluna ‘Idade’:

df_sorted = df.sort_values(by='Idade')
print(df_sorted)

Aqui, estamos usando o parâmetro by='Idade' para classificar nosso DataFrame usando o rótulo da coluna ‘Idade’. O resultado será um DataFrame ordenado pelo valor da coluna ‘Idade’ em ordem crescente.

Trabalhando com dados ausentes ao classificar no Pandas

Ao classificar dados em um DataFrame, você pode encontrar valores ausentes (NaN, None, etc.). O pandas oferece opções para lidar com esses valores ausentes durante a classificação.

Compreendendo o parâmetro na_position em .sort_values()

O parâmetro na_position é usado para especificar o tratamento de valores ausentes durante a classificação com o método .sort_values(). Os valores possíveis para na_position são:

  • ‘last’: os valores ausentes são colocados no final da classificação (padrão)
  • ‘first’: os valores ausentes são colocados no início da classificação

Por exemplo, vamos classificar nosso DataFrame pelo nome em ordem alfabética e lidar com valores ausentes colocando-os no final da classificação:

df_sorted = df.sort_values('Nome', na_position='last')
print(df_sorted)

Aqui, estamos usando o parâmetro na_position='last' para colocar os valores ausentes no final da classificação pelo nome.

Compreendendo o parâmetro na_position em .sort_index()

Da mesma forma, o parâmetro na_position também pode ser usado com o método .sort_index() para especificar o tratamento de valores ausentes durante a classificação pelo índice.

Por exemplo, vamos classificar nosso DataFrame pelo índice em ordem crescente e lidar com valores ausentes colocando-os no final da classificação:

df_sorted = df.sort_index(na_position='last')
print(df_sorted)

Aqui, estamos usando o parâmetro na_position='last' para colocar os valores ausentes no final da classificação pelo índice.

Usando métodos de classificação para modificar seu DataFrame

Até agora, discutimos como usar os métodos de classificação .sort_values() e .sort_index() para retornar um novo DataFrame classificado. No entanto, você também pode usar esses métodos para modificar seu DataFrame original no local.

Usando .sort_values() in place

Para classificar seu DataFrame no local, você pode usar o parâmetro inplace=True com o método .sort_values(). Isso modificará seu DataFrame original em vez de retornar um novo DataFrame classificado.

Por exemplo, vamos classificar nosso DataFrame pelo salário em ordem crescente no local e observar as mudanças:

df.sort_values('Salário', inplace=True)
print(df)

Aqui, estamos usando o parâmetro inplace=True para classificar nosso DataFrame original pelo salário em ordem crescente no local.

Usando .sort_index() in place

Da mesma forma, você pode usar o parâmetro inplace=True com o método .sort_index() para classificar seu DataFrame pelo índice no local.

Por exemplo, vamos classificar nosso DataFrame pelo índice em ordem decrescente no local e observar as mudanças:

df.sort_index(ascending=False, inplace=True)
print(df)

Aqui, estamos usando o parâmetro inplace=True para classificar nosso DataFrame original pelo índice em ordem decrescente no local.

Conclusão

Aprender a classificar seu DataFrame com os métodos .sort_values() e .sort_index() pode aumentar sua eficiência na análise de dados e na manipulação de grandes conjuntos de dados. Esses métodos permitem que você ordene seus dados com base em valores de coluna, índice e em várias colunas. Você também aprendeu sobre como lidar com valores ausentes durante a classificação e como modificar seu DataFrame no local usando os métodos de classificação.

Pratique o que você aprendeu neste tutorial, experimente diferentes conjuntos de dados e explore as várias opções de classificação oferecidas pelo pandas. A classificação é uma habilidade crucial na análise de dados e pode ajudá-lo a obter insights valiosos de seus dados de forma mais eficiente.