Pandas Sorting Data

PandasBeginner
Pratique Agora

Introdução

Bem-vindo ao laboratório de Ordenação de Dados com Pandas! A ordenação é uma operação fundamental na análise de dados. Ela ajuda a organizar seus dados, tornando-os mais fáceis de ler, entender e analisar. Quer você precise encontrar os valores mais altos ou mais baixos, ou simplesmente organizar os dados em uma ordem lógica, o Pandas oferece ferramentas poderosas e flexíveis para realizar essa tarefa.

Neste laboratório, você aprenderá a usar os principais métodos de ordenação no Pandas:

  • sort_values(): Para ordenar um DataFrame pelos valores de uma ou mais colunas.
  • sort_index(): Para ordenar um DataFrame pelo seu índice.
  • reset_index(): Para redefinir o índice após uma operação de ordenação.

Ao final deste laboratório, você será proficiente em organizar seus dados para atender às suas necessidades analíticas. Vamos começar!

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 95%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Ordenar DataFrame por uma única coluna usando sort_values

Nesta etapa, você aprenderá a operação de ordenação mais comum: ordenar um DataFrame pelos valores de uma única coluna. Usaremos o método sort_values() para isso. O parâmetro by é usado para especificar a coluna pela qual você deseja ordenar.

Primeiro, abra o arquivo main.py localizado no diretório ~/project usando o explorador de arquivos à esquerda. Este arquivo já foi preenchido com um DataFrame de exemplo.

Agora, adicione o seguinte código ao final de main.py para ordenar o DataFrame pela coluna Age.

## --- Step 1: Sort by a single column ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame sorted by Age:")
print(df_sorted_by_age)

Seu arquivo main.py completo agora deve se parecer com isto:

import pandas as pd

## Create a sample DataFrame for our exercises
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
    'Age': [25, 22, 25, 28, 22],
    'Score': [85, 91, 88, 79, 91]
}
df = pd.DataFrame(data)

print("Original DataFrame:")
print(df)

## --- Step 1: Sort by a single column ---
df_sorted_by_age = df.sort_values(by='Age')
print("\nDataFrame sorted by Age:")
print(df_sorted_by_age)

Para ver o resultado, execute o script no terminal.

python3 main.py

Você verá o DataFrame original seguido pelo novo DataFrame ordenado por idade em ordem crescente.

Saída esperada:

Original DataFrame:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

DataFrame sorted by Age:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Ordenar por múltiplas colunas em ordem crescente

Nesta etapa, você aprenderá como ordenar um DataFrame com base em múltiplas colunas. Isso é útil quando você tem empates na primeira coluna de ordenação e deseja aplicar um critério de ordenação secundário.

Para ordenar por múltiplas colunas, você passa uma lista de nomes de colunas para o parâmetro by do método sort_values(). O Pandas ordenará pela primeira coluna da lista e, em seguida, usará a segunda coluna para desempatar quaisquer ocorrências, e assim por diante.

Vamos ordenar nosso DataFrame primeiro por Age e depois por Score. Adicione o seguinte código ao final do seu arquivo main.py.

## --- Step 2: Sort by multiple columns ---
df_sorted_multiple = df.sort_values(by=['Age', 'Score'])
print("\nDataFrame sorted by Age and then Score:")
print(df_sorted_multiple)

Agora, execute o script novamente para ver as alterações.

python3 main.py

Você verá uma nova seção na saída. Observe como as duas linhas com Age 22 agora são ordenadas por Score (Bob com 91 vem depois de Eve com 91, pois sua ordem é estável). O mesmo se aplica às linhas com Age 25.

Saída esperada (mostrando apenas a nova parte):

...

DataFrame sorted by Age and then Score:
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
0    Alice   25     85
2  Charlie   25     88
3    David   28     79

Ordenar em ordem decrescente com ascending=False

Nesta etapa, você aprenderá como controlar a direção da ordenação. Por padrão, sort_values() ordena em ordem crescente. Você pode alterar isso usando o parâmetro ascending.

  • Para ordenar em ordem decrescente, defina ascending=False.
  • Ao ordenar por múltiplas colunas, você pode especificar uma ordem diferente para cada coluna passando uma lista de booleanos, por exemplo, ascending=[True, False].

Vamos ordenar o DataFrame por Age em ordem crescente e por Score em ordem decrescente. Isso nos ajudará a encontrar o maior pontuador em cada grupo de idade. Adicione o seguinte código ao final de main.py.

## --- Step 3: Sort in descending and mixed order ---
df_sorted_mixed = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("\nDataFrame sorted by Age (asc) and Score (desc):")
print(df_sorted_mixed)

Execute o script para observar o resultado.

python3 main.py

Na saída, observe as linhas para a idade 22. Eve e Bob têm uma pontuação de 91, então sua ordem pode não mudar. Para a idade 25, Charlie (Score 88) agora aparece antes de Alice (Score 85) porque ordenamos as pontuações em ordem decrescente.

Saída esperada (mostrando apenas a nova parte):

...

DataFrame sorted by Age (asc) and Score (desc):
      Name  Age  Score
1      Bob   22     91
4      Eve   22     91
2  Charlie   25     88
0    Alice   25     85
3    David   28     79

Ordenar índice usando sort_index

Nesta etapa, você aprenderá como ordenar um DataFrame pelo seu índice. Após realizar uma operação sort_values(), o índice do DataFrame fica embaralhado. Você pode ver isso nas saídas anteriores (por exemplo, o índice é 1, 4, 2, 0, 3).

O método sort_index() permite que você ordene o DataFrame com base nos rótulos do seu índice, restaurando a ordem original se o índice era um intervalo simples.

Vamos pegar o resultado da etapa anterior (df_sorted_mixed) e ordená-lo pelo seu índice. Adicione o seguinte código ao final de main.py.

## --- Step 4: Sort by index ---
## The previous result (df_sorted_mixed) has a jumbled index. Let's sort it by index.
df_reordered_by_index = df_sorted_mixed.sort_index()
print("\nDataFrame re-sorted by index:")
print(df_reordered_by_index)

Execute o script.

python3 main.py

Você verá que o DataFrame agora está ordenado pelo seu índice (0, 1, 2, 3, 4), o que efetivamente o restaura à sua ordem de linha original.

Saída esperada (mostrando apenas a nova parte):

...

DataFrame re-sorted by index:
      Name  Age  Score
0    Alice   25     85
1      Bob   22     91
2  Charlie   25     88
3    David   28     79
4      Eve   22     91

Resetar índice após ordenação com reset_index

Nesta etapa final, você aprenderá como redefinir o índice de um DataFrame. Após a ordenação, o índice não é mais um intervalo limpo e sequencial a partir de 0. Embora sort_index() possa restaurar a ordem original, às vezes você deseja manter a nova ordem ordenada, mas ter um índice novo e sequencial.

O método reset_index() é perfeito para isso. Ele substitui o índice atual por um índice inteiro padrão (0, 1, 2, ...). É comum usar o parâmetro drop=True para descartar completamente o índice antigo. Se você não usar drop=True, o índice antigo será adicionado como uma nova coluna chamada index.

Vamos pegar um dos nossos DataFrames ordenados (df_sorted_mixed) e redefinir seu índice. Adicione a última parte do código a main.py.

## --- Step 5: Reset index after sorting ---
## Let's take a sorted DataFrame and give it a new, clean index
df_with_reset_index = df_sorted_mixed.reset_index(drop=True)
print("\nSorted DataFrame with reset index:")
print(df_with_reset_index)

Execute o script uma última vez.

python3 main.py

Observe a saída final. O DataFrame ainda está ordenado por Idade (asc) e Pontuação (desc), mas o índice agora é uma sequência limpa de 0 a 4.

Saída esperada (mostrando apenas a nova parte):

...

Sorted DataFrame with reset index:
      Name  Age  Score
0      Bob   22     91
1      Eve   22     91
2  Charlie   25     88
3    Alice   25     85
4    David   28     79

Resumo

Parabéns por completar o laboratório Pandas Sorting Data! Você aprendeu as habilidades essenciais para organizar e ordenar seus dados em um Pandas DataFrame.

Neste laboratório, você praticou:

  • Ordenar por uma única coluna usando sort_values(by='column_name').
  • Ordenar por múltiplas colunas passando uma lista para o parâmetro by.
  • Controlar a direção da ordenação com o parâmetro ascending.
  • Restaurar a ordem original ordenando o índice com sort_index().
  • Criar um índice novo e limpo em um DataFrame ordenado usando reset_index(drop=True).

Essas técnicas de ordenação são fundamentais para a limpeza, exploração e preparação de dados para análises e visualizações mais avançadas. Continue praticando essas habilidades para se tornar mais eficiente em sua jornada de ciência de dados.