4 Métodos Incriveis para Renomear Colunas no Pandas (Python)

Alterar os nomes das colunas em um DataFrame do pandas é uma tarefa comum e essencial na manipulação de dados. Este artigo explora quatro métodos distintos para realizar essa operação.

Pandas é uma biblioteca amplamente utilizada em Python para análise de dados. Frequentemente, os dados que precisamos analisar estão em diversos formatos, como arquivos CSV e TSV, bancos de dados relacionais, entre outros. Antes da análise propriamente dita, é necessário realizar uma série de verificações preliminares, tratar valores ausentes e preparar os dados.

Com pandas, você pode:

  • Importar dados de diversas fontes.
  • Explorar conjuntos de dados e lidar com valores faltantes.
  • Analisar os dados para extrair informações relevantes.

Em projetos de análise de dados, é comum criar DataFrames a partir de estruturas de dados do Python, como dicionários. Ou, alternativamente, ler dados de fontes externas, como arquivos CSV, para dentro de um DataFrame.

O DataFrame é a estrutura de dados fundamental em pandas, organizando informações em linhas (registros) e colunas (campos ou atributos). No entanto, pode ser necessário renomear os nomes das colunas para torná-los mais descritivos e aumentar a clareza. Apresentamos aqui quatro abordagens para essa renomeação. Vamos começar!

Criando um DataFrame do Pandas

Para acompanhar este tutorial, você pode usar um ambiente Jupyter Notebook com pandas instalado, ou o Google Colab.

Primeiramente, vamos criar um DataFrame e trabalhar com ele ao longo deste guia.

Aqui está um dicionário, `books_dict`:

books_dict = {
    "one": [
        "Atomic Habits",
        "His Dark Materials",
        "The Midnight Library",
        "The Broken Earth",
        "Anxious People",
    ],
    "two": [
        "James Clear",
        "Philip Pullman",
        "Matt Haig",
        "N.K.Jemisin",
        "Fredrik Backman",
    ],
    "three": ["Nonfiction", "Fantasy", "Magical Realism", "Fantasy", "Fiction"],
    "four": [4, 5, 3, 5, 4],
}
  

Importamos pandas e criamos o DataFrame `df` a partir de `books_dict`.

import pandas as pd

Nota: Antes de prosseguirmos com as alterações de nome de coluna, vamos retornar à criação inicial do DataFrame em algumas ocasiões.

df = pd.DataFrame(books_dict)

Usamos `df.head()` para visualizar as primeiras linhas do DataFrame. Por padrão, ele exibe as cinco primeiras linhas. Como nosso DataFrame tem apenas cinco linhas, `df.head()` mostrará todo o conteúdo.

df.head()

Observamos que os nomes das colunas são as chaves do dicionário, o que não é muito descritivo. Vamos então renomeá-los.

Métodos para Renomear Colunas em Pandas

A seguir, exploraremos diferentes maneiras de renomear colunas em pandas:

  • Atribuir uma lista de novos nomes ao atributo `columns` do DataFrame.
  • Usar o método `rename()` do DataFrame.
  • Utilizar `str.replace` para alterar uma ou mais colunas.
  • Empregar o método `set_axis()` do DataFrame.

Atribuindo ao Atributo `columns`

O atributo `columns` de qualquer DataFrame contém a lista dos nomes das colunas:

df.columns
# Index(['one', 'two', 'three', 'four'], dtype="object")
  

Vamos renomear as colunas para refletir o conteúdo de cada campo. Após a alteração, usamos `df.head()` para visualizar o resultado:

df.columns = ['Title','Author','Genre','Rating']
df.head()
  

Utilizando o Método `rename()`

O método `rename()` permite renomear colunas em pandas, com a seguinte sintaxe:

df.rename(columns={mapping})

O `mapping` é um dicionário que define a correspondência entre os nomes antigos e novos das colunas:

{'old_col_name_1':'new_col_name_1', 'old_col_name_2':'new_col_name_2',...,
'old_col_name_n':'new_col_name_n'}
  

Recriamos o DataFrame `df` a partir do dicionário `books_dict`:

df = pd.DataFrame(books_dict)

Usando o método `rename()` com a sintaxe acima, criamos o DataFrame `df_1`, que é uma cópia do DataFrame original com as colunas renomeadas.

df_1 = df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'})
df_1.head()
  

Note que, neste caso, apenas os nomes das colunas do DataFrame `df_1` foram modificados:

Os nomes das colunas do DataFrame original `df` permanecem inalterados:

df.head()

Este método permite renomear colunas individuais ou múltiplas, já que podemos fornecer um mapeamento entre os nomes antigos e novos.

Renomear Colunas “In Place”

Se você precisar alterar o DataFrame original, sem criar uma cópia, você pode definir o parâmetro `inplace` como `True` na chamada do método.

df.rename(columns={'one':'Title','two':'Author','three':'Genre','four':'Rating'},inplace=True)
df.head()
  

Isso irá renomear as colunas do DataFrame original `df`:

Até agora, aprendemos como:

  • Renomear colunas usando um dicionário que mapeia os nomes antigos para os novos.
  • Renomear colunas “in place”, modificando o DataFrame original.

O método `rename()` pode ser utilizado de outras formas, conforme veremos a seguir.

Outra Abordagem para Renomear Colunas

Vamos renomear as colunas para que todas as letras fiquem maiúsculas:

df = pd.DataFrame(books_dict)
df.columns = ['TITLE','AUTHOR','GENRE','RATING']
df.head()
  

O DataFrame `df` agora se apresenta assim:

Suponha que desejamos alterar cada um desses nomes para o formato “Title Case”. Em vez de um dicionário, podemos usar uma função ou método, como mostrado:

df.rename(str.title,axis="columns",inplace=True)
df.head()
  

Aqui, definimos o `axis` como “columns” e usamos `str.title` para transformar todos os nomes das colunas para o formato “Title Case”.

Usando `str.replace()` nas Strings de Nomes de Coluna

Retornando à criação inicial do DataFrame, executamos a célula abaixo:

df = pd.DataFrame(books_dict)

Em Python, o método `replace()` é usado com a sintaxe `str.replace(this, with_this)` para substituir partes de uma string. Por exemplo:

>>> str1 = 'Marathon'
>>> str1.replace('Mara','Py')
'Python'
  

O atributo `columns` contém uma lista de strings com os nomes das colunas. Podemos usar `str.replace(‘old_column_name’,’new_column_name’)` para alterar os nomes:

df.columns = df.columns.str.replace('one','Title')
df.head()
  

Neste caso, apenas a coluna ‘one’ foi alterada para ‘Title’. Os demais nomes permanecem inalterados.

Vamos agora renomear as outras colunas, usando a mesma abordagem:

df.columns = df.columns.str.replace('two','Author')
df.columns = df.columns.str.replace('three','Genre')
df.columns = df.columns.str.replace('four','Rating')
df.head()
  

Essa abordagem é útil quando você precisa renomear apenas uma ou algumas colunas.

Usando o Método `set_axis()`

Voltando à versão inicial do DataFrame:

df = pd.DataFrame(books_dict)

O método `set_axis()` também permite renomear colunas, com a seguinte sintaxe:

df.set_axis([list_of_column_names],axis="columns")

Por padrão, o método `set_axis()` retorna uma cópia do DataFrame. Para modificar o DataFrame original, defina `copy` como `False`.

df = df.set_axis(['Title','Author','Genre','Rating'],axis="columns",copy=False)
df.head()
  

Conclusão

Revisando, aqui estão os diferentes métodos para renomear colunas em um DataFrame pandas:

  • Para um DataFrame de exemplo `df`, o atributo `df.columns` é a lista de nomes das colunas. Para renomeá-las, basta atribuir a ele uma lista com os novos nomes.
  • O método `rename()` para renomear colunas utiliza a sintaxe: `df.rename(columns={mapping})`, onde `mapping` é a correspondência entre nomes antigos e novos. Você também pode usar o método `rename()` especificando uma função: `df.rename(função ou chamada de método, axis=’columns’)`.
  • Assim como se usa `replace()` em uma string Python, podemos usar `df.columns.str.replace(‘old_column_name’, ‘new_column_name’)` para substituir os nomes das colunas.
  • Outra opção é usar `set_axis` com a sintaxe: `df.set_axis(list_of_col_names, axis=’columns’)`.

Isso é tudo por este tutorial! Explore nossa lista de notebooks colaborativos para análise de dados.