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.