Pular para o conteúdo

Como usar a classificação de dataframes facilmente?

[

pandas Sort: Seu Guia para Ordenar Dados no Python

por Spencer Guy (ciência de dados, intermediário)

Introdução

Aprender os métodos de ordenação do pandas é uma ótima maneira de começar ou praticar a realização de análises de dados básicas usando Python. A análise de dados é comumente realizada 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 recursos de manipulação de dados altamente eficientes.

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

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

  • Ordenar um DataFrame do pandas pelos valores de uma ou mais colunas
  • Usar o parâmetro ascending para alterar a ordem de classificação
  • Ordenar um DataFrame pelo seu índice usando o método .sort_index()
  • Organizar dados ausentes ao classificar valores
  • Ordenar um DataFrame inplace usando inplace configurado como True

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

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

Primeiro, vamos importar a biblioteca pandas:

import pandas as pd

Preparando o Conjunto de Dados

Para fins de demonstração, vamos criar um DataFrame simples com dados fictícios:

data = {'Nome': ['João', 'Maria', 'Pedro', 'Ana'],
'Idade': [25, 40, 30, 35],
'Salário': [5000, 7000, 6000, 5500]}
df = pd.DataFrame(data)

Aqui está o DataFrame que criamos:

NomeIdadeSalário
João255000
Maria407000
Pedro306000
Ana355500

Familiarizando-se com .sort_values()

O método .sort_values() é usado para ordenar um DataFrame pelos valores de uma ou mais colunas. Vamos começar ordenando o DataFrame pelos nomes em ordem alfabética:

df_sorted = df.sort_values('Nome')

O DataFrame resultante será o seguinte:

NomeIdadeSalário
Ana355500
João255000
Maria407000
Pedro306000

Familiarizando-se com .sort_index()

Se você quiser ordenar o DataFrame pelo índice, pode usar o método .sort_index():

df_sorted = df.sort_index()

Isso retornará o DataFrame original sem modificações no nosso exemplo.

Ordenando Seu DataFrame em uma Coluna

Agora vamos explorar como ordenar um DataFrame com base nos valores de uma única coluna.

Ordenando por uma Coluna em Ordem Ascendente

Para ordenar o DataFrame pela coluna “Idade” em ordem ascendente, faça o seguinte:

df_sorted = df.sort_values('Idade')

O DataFrame resultante será:

NomeIdadeSalário
João255000
Pedro306000
Ana355500
Maria407000

Alterando a Ordem de Classificação

Por padrão, .sort_values() classifica em ordem ascendente. No entanto, você também pode classificar em ordem descendente especificando ascending=False:

df_sorted = df.sort_values('Idade', ascending=False)

O DataFrame resultante será:

NomeIdadeSalário
Maria407000
Ana355500
Pedro306000
João255000

Escolhendo um Algoritmo de Ordenação

O pandas oferece diferentes algoritmos de ordenação para sort_values(). Por padrão, o algoritmo “quicksort” é usado, mas você também pode especificar “mergesort” ou “heapsort” usando o parâmetro kind:

df_sorted = df.sort_values('Idade', kind='mergesort')

Ordenando Seu DataFrame em Múltiplas Colunas

Agora que você sabe como ordenar um DataFrame por uma única coluna, vamos explorar como ordenar em múltiplas colunas.

Ordenando por Múltiplas Colunas em Ordem Ascendente

Para ordenar o DataFrame primeiro por “Salário” e depois por “Idade” em ordem ascendente, faça o seguinte:

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

O DataFrame resultante será:

NomeIdadeSalário
João255000
Ana355500
Pedro306000
Maria407000

Alterando a Ordem de Classificação das Colunas

Você também pode especificar a ordem de classificação das colunas. Vamos ordenar primeiro por “Salário” em ordem descendente e depois por “Idade” em ordem ascendente:

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

O DataFrame resultante será:

NomeIdadeSalário
Maria407000
Pedro306000
Ana355500
João255000

Ordenando por Múltiplas Colunas com Diferentes Ordens de Classificação

Você também pode especificar diferentes ordens de classificação para diferentes colunas. Vamos ordenar primeiro por “Salário” em ordem descendente e depois por “Idade” em ordem descendente:

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

O DataFrame resultante será:

NomeIdadeSalário
Maria407000
Pedro306000
Ana355500
João255000

Ordenando seu DataFrame pelo Índice

Se você quiser ordenar um DataFrame pelo seu índice, pode usar o método .sort_index().

Ordenando pelo Índice em Ordem Ascendente

Para ordenar o DataFrame pelo índice em ordem ascendente, faça o seguinte:

df_sorted = df.sort_index()

O DataFrame resultante será o mesmo DataFrame original sem modificações no nosso exemplo.

Ordenando pelo Índice em Ordem Descendente

Para ordenar o DataFrame pelo índice em ordem descendente, use o seguinte:

df_sorted = df.sort_index(ascending=False)

O DataFrame resultante será:

NomeIdadeSalário
João255000
Pedro306000
Maria407000
Ana355500

Explorando Conceitos Avançados de Index-Sorting

Existem conceitos avançados relacionados à ordenação do índice em um DataFrame que você pode explorar para tarefas mais complexas, como classificação por valores duplicados no índice.

Ordenando as Colunas do seu DataFrame

Até agora, focamos na ordenação com base nos valores das colunas. Agora vamos explorar como ordenar as colunas do DataFrame.

Trabalhando com o eixo do DataFrame

Por padrão, os métodos .sort_values() e .sort_index() operam nas linhas do DataFrame. No entanto, se você quiser ordenar as colunas em ordem alfabética, pode especificar axis=1:

df_sorted = df.sort_index(axis=1)

O DataFrame resultante terá as colunas ordenadas pelo nome:

IdadeNomeSalário
25João5000
40Maria7000
30Pedro6000
35Ana5500

Usando Rótulos de Coluna para Classificar

Como alternativa, você também pode usar rótulos de coluna para classificar as colunas em uma ordem específica. Por exemplo, vamos ordenar as colunas da seguinte forma: “Salário”, “Idade” e “Nome”:

df_sorted = df[['Salário', 'Idade', 'Nome']]

O DataFrame resultante terá as colunas na ordem especificada:

SalárioIdadeNome
500025João
700040Maria
600030Pedro
550035Ana

Lidando com Dados Ausentes ao Ordenar no Pandas

Ao ordenar um DataFrame no pandas, é importante considerar como lidar com dados ausentes.

Entendendo o Parâmetro na_position em .sort_values()

Por padrão, o método .sort_values() trata os valores ausentes como os maiores valores possíveis e coloca esses valores faltantes no final da ordenação. Para controlar o comportamento dos valores ausentes, você pode usar o parâmetro na_position e especificar “first” ou “last”.

Para colocar os valores ausentes no início da ordenação, use:

df_sorted = df.sort_values('Idade', na_position='first')

O DataFrame resultante será:

NomeIdadeSalário
NaNNaNNaN
João255000
Pedro306000
Ana355500
Maria407000

Entendendo o Parâmetro na_position em .sort_index()

O método .sort_index() também aceita o parâmetro na_position, mas seu comportamento é diferente. Por padrão, os valores ausentes são colocados no final da ordenação quando o índice é classificado. Se você quiser colocar os valores ausentes no início da ordenação do índice, pode fazer o seguinte:

df_sorted = df.sort_index(na_position='first')

O DataFrame resultante será:

NomeIdadeSalário
NaNNaNNaN
João255000
Maria407000
Pedro306000
Ana355500

Usando Métodos de Ordenação para Modificar seu DataFrame

Até agora, discutimos como criar um DataFrame ordenado, mas se você quiser modificar o DataFrame original em vez de criar um DataFrame ordenado separado, pode usar os métodos .sort_values() e .sort_index() com o parâmetro inplace configurado como True.

Por exemplo, para ordenar o DataFrame pelo “Salário” em ordem descendente e modificar o DataFrame original, faça o seguinte:

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

Conclusão

Neste tutorial, você aprendeu como usar os métodos .sort_values() e .sort_index() do pandas para ordenar dados em um DataFrame. Agora, você deve se sentir mais confiante em realizar operações de ordenação de dados eficientes no pandas, seja por uma coluna, múltiplas colunas, pelo índice ou pelas colunas.

Continue praticando e explorando os recursos do pandas para aprimorar suas habilidades de análise e manipulação de dados.