Pular para o conteúdo

Como usar o pandas para classificar uma coluna

[

pandas Sort: Guia para Classificar Dados no Python

por Spencer Guy 0 Comentários ciência de dados intermediário

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 geralmente é feita 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 com desempenho altamente eficiente.

Neste tutorial, você aprenderá a usar .sort_values() e .sort_index(), o que permitirá classificar os dados de forma eficiente em um DataFrame.

Ao final deste tutorial, você saberá como:

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

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

Bônus Gratuito: Clique aqui para obter um Cheat Sheet do Python 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 lembrete rápido, um DataFrame do pandas é uma estrutura de dados bidimensional que pode ser pensada como uma tabela com linhas e colunas. Os métodos .sort_values() e .sort_index() podem ser aplicados a um DataFrame do pandas para classificar os dados dentro dele.

Existem várias maneiras de classificar um DataFrame no pandas, dependendo dos seus requisitos. Neste tutorial, abordaremos as seguintes abordagens:

  • Classificar um DataFrame em colunas individuais
  • Classificar um DataFrame em várias colunas
  • Classificar um DataFrame pelo seu índice
  • Classificar as colunas de um DataFrame

Agora, vamos começar classificando um DataFrame por colunas individuais.

Preparando o Conjunto de Dados

Primeiro, vamos criar um DataFrame simples para fins de demonstração:

import pandas as pd
data = {'Name': ['John', 'Emma', 'Peter', 'Lisa'],
'Age': [32, 28, 45, 36],
'City': ['New York', 'Chicago', 'San Francisco', 'Boston']}
df = pd.DataFrame(data)
print(df)

A saída será:

Name Age City
0 John 32 New York
1 Emma 28 Chicago
2 Peter 45 San Francisco
3 Lisa 36 Boston

Agora temos um DataFrame com três colunas: “Name”, “Age” e “City”. Vamos usar as colunas “Age” e “City” para fins de classificação.

Familiarizando-se com .sort_values()

O método .sort_values() é usado para classificar um DataFrame do pandas com base nos valores em uma ou mais colunas. Por padrão, ele classifica os valores em ordem ascendente.

Aqui está um exemplo de como usar .sort_values() para classificar o DataFrame pelos valores da coluna “Age” em ordem ascendente:

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

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Observe como os valores da coluna “Age” foram classificados em ordem ascendente.

Familiarizando-se com .sort_index()

O método .sort_index() é usado para classificar um DataFrame do pandas com base em seu índice. Ele permite classificar o DataFrame em ordem ascendente ou descendente com base no índice.

Aqui está um exemplo de como usar .sort_index() para classificar o DataFrame pelo índice em ordem descendente:

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

A saída será:

Name Age City
3 Lisa 36 Boston
2 Peter 45 San Francisco
1 Emma 28 Chicago
0 John 32 New York

Observe como o DataFrame foi classificado em ordem descendente com base no índice.

Agora que você se familiarizou com .sort_values() e .sort_index(), vamos ver como classificar um DataFrame em uma única coluna.

Classificando seu DataFrame em uma única coluna

Classificar por uma coluna em ordem ascendente

Classificar um DataFrame por uma coluna em ordem ascendente é simplesmente uma questão de chamar o método .sort_values() e especificar a coluna pela qual você deseja classificar.

Aqui está um exemplo de como classificar o DataFrame por ordem ascendente usando a coluna “Age”:

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

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Observe que os valores da coluna “Age” foram classificados em ordem ascendente.

Alterando a ordem de classificação

Por padrão, .sort_values() classifica os valores em ordem ascendente. No entanto, se você deseja classificar em ordem descendente, pode definir o parâmetro ascending como False.

Aqui está um exemplo de como classificar o DataFrame por ordem descendente usando a coluna “Age”:

df_sorted = df.sort_values(by='Age', ascending=False)
print(df_sorted)

A saída será:

Name Age City
2 Peter 45 San Francisco
3 Lisa 36 Boston
0 John 32 New York
1 Emma 28 Chicago

Observe que os valores da coluna “Age” foram classificados em ordem descendente.

Escolhendo um algoritmo de classificação

O método .sort_values() usa o algoritmo de classificação Timsort por padrão. No entanto, se você tiver um grande conjunto de dados e quiser melhorar o desempenho da classificação, poderá especificar um algoritmo de classificação diferente usando o parâmetro kind.

Por exemplo, se você quiser usar o algoritmo de classificação Quicksort, pode fazer o seguinte:

df_sorted = df.sort_values(by='Age', kind='quicksort')
print(df_sorted)

Observe que o tipo de algoritmo é específico para cada coluna individualmente.

Agora que você aprendeu a classificar seu DataFrame em uma única coluna, vamos ver como classificá-lo em várias colunas.

Classificando seu DataFrame em várias colunas

Classificando por várias colunas em ordem ascendente

Classificar um DataFrame por várias colunas em ordem ascendente é uma questão de passar uma lista de colunas para o método .sort_values(). O DataFrame será classificado pela primeira coluna especificada e, em seguida, pela segunda coluna, se houver empates.

Aqui está um exemplo de como classificar o DataFrame pelas colunas “Age” e “Name” em ordem ascendente:

df_sorted = df.sort_values(by=['Age', 'Name'])
print(df_sorted)

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Observe como o DataFrame foi classificado primeiro pela coluna “Age” e depois pela coluna “Name”.

Alterando a ordem de classificação de colunas

Se você deseja alterar a ordem de classificação das colunas especificadas, pode passar uma lista com o nome das colunas na ordem desejada.

Aqui está um exemplo de como classificar o DataFrame pelas colunas “Name” e “Age” em ordem ascendente:

df_sorted = df.sort_values(by=['Name', 'Age'])
print(df_sorted)

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Observe como o DataFrame foi classificado primeiro pela coluna “Name” e depois pela coluna “Age”, em ordem ascendente.

Classificando por várias colunas em ordem descendente

Se você deseja classificar o DataFrame por várias colunas em ordem descendente, basta definir ascending como False.

Aqui está um exemplo de como classificar o DataFrame pelas colunas “Age” e “Name” em ordem descendente:

df_sorted = df.sort_values(by=['Age', 'Name'], ascending=False)
print(df_sorted)

A saída será:

Name Age City
2 Peter 45 San Francisco
3 Lisa 36 Boston
0 John 32 New York
1 Emma 28 Chicago

Observe como o DataFrame foi classificado primeiro pela coluna “Age” e depois pela coluna “Name”, em ordem descendente.

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

Se você deseja classificar o DataFrame por várias colunas com diferentes ordens de classificação, basta especificar ascending como uma lista de booleanos correspondentes à ordem desejada.

Aqui está um exemplo de como classificar o DataFrame pelas colunas “Age” e “Name”, com a coluna “Age” em ordem ascendente e a coluna “Name” em ordem descendente:

df_sorted = df.sort_values(by=['Age', 'Name'], ascending=[True, False])
print(df_sorted)

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Observe como o DataFrame foi classificado primeiro pela coluna “Age” em ordem ascendente e, em seguida, pela coluna “Name” em ordem descendente.

Agora que você aprendeu a classificar um DataFrame em várias colunas, vamos ver como classificá-lo pelo seu índice.

Classificando seu DataFrame pelo Índice

Classificando pelo índice em ordem ascendente

Você pode classificar um DataFrame pelo seu índice usando o método .sort_index(). Por padrão, ele classifica em ordem ascendente.

Aqui está um exemplo de como classificar o DataFrame pelo índice em ordem ascendente:

df_sorted = df.sort_index()
print(df_sorted)

A saída será:

Name Age City
0 John 32 New York
1 Emma 28 Chicago
2 Peter 45 San Francisco
3 Lisa 36 Boston

Observe como o DataFrame foi classificado pelo índice em ordem ascendente.

Classificando pelo índice em ordem descendente

Para classificar o DataFrame pelo índice em ordem descendente, você pode definir o parâmetro ascending como False.

Aqui está um exemplo de como classificar o DataFrame pelo índice em ordem descendente:

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

A saída será:

Name Age City
3 Lisa 36 Boston
2 Peter 45 San Francisco
1 Emma 28 Chicago
0 John 32 New York

Observe como o DataFrame foi classificado pelo índice em ordem descendente.

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

O método .sort_index() oferece opções para personalizar ainda mais a classificação do índice. Por exemplo, você pode usar o parâmetro level para classificar o índice com base em um nível específico em um DataFrame com índice hierárquico.

Além disso, você pode usar parâmetros como sort_remaining para especificar se as partes não selecionadas do índice devem ser classificadas quando o level é especificado.

No entanto, para fins deste tutorial, nos limitaremos aos conceitos básicos de classificação do índice.

Agora que você aprendeu a classificar um DataFrame pelo seu índice, vamos ver como classificar as colunas do DataFrame.

Classificando as colunas do seu DataFrame

Trabalhando com o eixo do DataFrame

Você pode usar o parâmetro axis junto com os métodos .sort_values() e .sort_index() para classificar as colunas do DataFrame em vez das linhas.

Por exemplo, se você deseja classificar as colunas do DataFrame em ordem ascendente, pode fazer o seguinte:

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

A saída será:

Age City Name
0 32 New York John
1 28 Chicago Emma
2 45 San Francisco Peter
3 36 Boston Lisa

Observe como as colunas do DataFrame foram classificadas em ordem ascendente.

Usando rótulos de coluna para classificar

Você também pode usar os rótulos de coluna para classificar as colunas do DataFrame.

Aqui está um exemplo de como usar os rótulos de coluna para classificar as colunas do DataFrame em ordem ascendente:

df_sorted = df.sort_values(by=df.columns.tolist())
print(df_sorted)

A saída será:

Age City Name
1 28 Chicago Emma
3 36 Boston Lisa
0 32 New York John
2 45 San Francisco Peter

Observe como as colunas do DataFrame foram classificadas em ordem ascendente com base nos rótulos de coluna.

Agora que você aprendeu a classificar as colunas de um DataFrame, vamos ver como lidar com dados ausentes durante a classificação no pandas.

Lidando com Dados Ausentes ao Classificar no pandas

Ao classificar um DataFrame, é importante considerar como os dados ausentes serão tratados. O pandas oferece opções para definir o comportamento de classificação quando há dados ausentes em uma ou mais colunas.

Compreendendo o parâmetro na_position em .sort_values()

O método .sort_values() possui o parâmetro na_position que determina como os valores ausentes (NaN) serão posicionados durante a classificação.

O valor padrão para o parâmetro na_position é 'last', o que significa que os valores ausentes serão posicionados no final do DataFrame durante a classificação.

Aqui está um exemplo de como usar o .sort_values() com o parâmetro na_position definido como 'last':

import numpy as np
df_nan = pd.DataFrame({'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8]})
df_sorted = df_nan.sort_values(by='A', na_position='last')
print(df_sorted)

A saída será:

A B
0 1.0 5.0
1 2.0 NaN
3 4.0 8.0
2 NaN 7.0

Observe como os valores ausentes são colocados no final do DataFrame durante a classificação.

Compreendendo o parâmetro na_position em .sort_index()

Da mesma forma, o método .sort_index() também possui o parâmetro na_position. O comportamento é semelhante ao do .sort_values().

O valor padrão para o parâmetro na_position em .sort_index() também é 'last', o que significa que os valores ausentes no índice serão posicionados no final durante a classificação.

Aqui está um exemplo de como usar o .sort_index() com o parâmetro na_position definido como 'last':

df_nan = pd.DataFrame({'A': [1, 2, np.nan, 4],
'B': [5, np.nan, 7, 8]})
df_sorted = df_nan.sort_index(na_position='last')
print(df_sorted)

A saída será:

A B
0 1.0 5.0
1 2.0 NaN
2 NaN 7.0
3 4.0 8.0

Observe como os valores ausentes no índice são colocados no final durante a classificação.

Agora que você aprendeu como lidar com dados ausentes durante a classificação no pandas, vamos ver como usar os métodos de classificação para modificar o DataFrame.

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

Os métodos .sort_values() e .sort_index() têm uma opção de inplace que permite modificar o DataFrame original em vez de criar uma nova cópia classificada.

Usando .sort_values() no lugar

Se você deseja classificar o DataFrame no lugar, em vez de criar uma nova cópia classificada, pode usar o parâmetro inplace do .sort_values().

Aqui está um exemplo de como usar o .sort_values() no lugar para classificar o DataFrame pela coluna “Age” em ordem ascendente:

df.sort_values(by='Age', inplace=True)
print(df)

A saída será:

Name Age City
1 Emma 28 Chicago
0 John 32 New York
3 Lisa 36 Boston
2 Peter 45 San Francisco

Agora o DataFrame original foi classificado no lugar.

Usando .sort_index() no lugar

Da mesma forma, você pode usar o parâmetro inplace do .sort_index() para classificar o DataFrame pelo índice no lugar.

Aqui está um exemplo de como usar o .sort_index() no lugar para classificar o DataFrame pelo índice em ordem descendente:

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

A saída será:

Name Age City
3 Lisa 36 Boston
2 Peter 45 San Francisco
1 Emma 28 Chicago
0 John 32 New York

Agora o DataFrame original foi classificado pelo índice no lugar.

Agora que você aprendeu como usar os métodos de classificação para modificar o DataFrame, vamos concluir o tutorial.

Conclusão

Neste tutorial, você aprendeu como usar os métodos .sort_values() e .sort_index() do pandas para classificar um DataFrame com base nos valores de colunas e no índice. Você também aprendeu a trabalhar com dados ausentes durante a classificação e a usar os métodos de classificação para modificar o DataFrame original.

A classificação é uma habilidade essencial para a análise de dados e o pandas torna o processo de classificação simples e eficiente.

Agora você está pronto para começar a classificar seus próprios conjuntos de dados com o pandas!