DataFrames Pandas oferecem ferramentas poderosas para manipulação de dados, e a ordenação é uma operação fundamental. Este artigo explora como ordenar eficientemente um DataFrame por uma única coluna, focando no método crucial sort_values()
e seus argumentos principais: ascending
e na_position
.
Sumário
- Controlando a Ordem de Ordenação com
ascending
- Lidando com Valores Ausentes com
na_position
- Ordenando por Múltiplas Colunas
- Ordenação In-Place
Controlando a Ordem de Ordenação com ascending
O método sort_values()
fornece controle direto sobre a direção da ordenação. O argumento ascending
, que padrão para True
(ordem crescente), determina se a ordenação será em ordem crescente ou decrescente.
import pandas as pd
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David'],
'Age': [25, 30, 22, 28],
'Score': [85, 92, 78, 88]}
df = pd.DataFrame(data)
# Ordenação crescente por 'Age'
df_ascending = df.sort_values(by='Age')
print("Crescente:n", df_ascending)
# Ordenação decrescente por 'Age'
df_descending = df.sort_values(by='Age', ascending=False)
print("nDecrescente:n", df_descending)
Lidando com Valores Ausentes com na_position
Ao lidar com conjuntos de dados contendo valores ausentes (NaN), o argumento na_position
controla o posicionamento desses valores dentro da coluna ordenada. Ele aceita dois valores:
'first'
(padrão): Posiciona valores NaN no início da coluna ordenada.'last'
: Posiciona valores NaN no final da coluna ordenada.
import pandas as pd
import numpy as np
data = {'Name': ['Alice', 'Bob', 'Charlie', 'David', 'Eve'],
'Age': [25, 30, np.nan, 28, 22],
'Score': [85, 92, 78, 88, 95]}
df = pd.DataFrame(data)
# Valores NaN primeiro
df_na_first = df.sort_values(by='Age', na_position='first')
print("NaN primeiro:n", df_na_first)
# Valores NaN por último
df_na_last = df.sort_values(by='Age', na_position='last')
print("nNaN por último:n", df_na_last)
Ordenando por Múltiplas Colunas
Você pode facilmente estender isso para ordenar por múltiplas colunas passando uma lista para o argumento by
. Pandas ordenará pela primeira coluna na lista, depois pela segunda, e assim por diante.
# Ordenar por Idade (crescente) e depois por Pontuação (decrescente)
df_multi = df.sort_values(by=['Age', 'Score'], ascending=[True, False])
print("nOrdenação multi-coluna:n", df_multi)
Ordenação In-Place
Por padrão, sort_values()
retorna um novo DataFrame ordenado. Para modificar o DataFrame diretamente, defina o argumento inplace
como True
. Observe que isso modifica o DataFrame original, portanto, seja cauteloso.
df.sort_values(by='Age', inplace=True)
print("nOrdenação in-place:n", df)
Ao entender e utilizar esses argumentos, você pode ordenar seus DataFrames Pandas de forma eficiente e precisa, otimizando seu fluxo de trabalho de análise de dados.