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!
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.



