Como renomear colunas do Pandas [4 Examples]

Renomear colunas em um dataframe do pandas é uma operação comum. Aprenda os quatro métodos diferentes para renomear as colunas do pandas.

Pandas é uma biblioteca Python popular para análise de dados. Os dados que precisamos analisar geralmente estão disponíveis em diferentes formatos, incluindo arquivos csv e tsv, bancos de dados relacionais e muito mais. E você precisa fazer algumas verificações preliminares nos dados, lidar com valores ausentes e preparar os dados para análise posterior.

Com os pandas, você pode:

  • Ingerir dados de várias fontes
  • Explorar o conjunto de dados e lidar com os valores ausentes nele
  • Analise o conjunto de dados para obter insights

Para todos os projetos de análise de dados, você frequentemente criará quadros de dados a partir de estruturas de dados do Python, como um dicionário. Ou você lerá dados de outras fontes, como um arquivo csv em um quadro de dados.

O dataframe é a estrutura de dados básica em pandas. Ele contém os registros nas linhas e os vários campos ou atributos nas colunas.

No entanto, pode ser necessário renomear os nomes das colunas para torná-los mais descritivos e melhorar a legibilidade. Aqui, você aprenderá quatro maneiras diferentes de renomear colunas. Vamos começar!

Criando um Pandas DataFrame

Você pode acompanhar o tutorial em um ambiente de notebook Jupyter com pandas instalado. Ou você pode acompanhar no Google Colab.

Primeiro, criaremos um dataframe do pandas e trabalharemos com ele no restante do tutorial.

  Como carregar o Apple Pencil e o Apple Pencil 2ª geração

Aqui está um dicionário book_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],
}

Primeiro importaremos pandas e depois criaremos um dataframe df de books_dict.

import pandas as pd

Nota: Continuaremos voltando para a célula de código a seguir — para criar uma versão inicial do dataframe — antes de renomear as colunas.

df = pd.DataFrame(books_dict)

Podemos usar df.head() para obter as primeiras linhas do dataframe df. Por padrão, ele retorna as cinco primeiras linhas. Aqui o df tem apenas cinco linhas; então, ao usar df.head(), obtemos todo o dataframe.

df.head()

Vemos que os nomes das colunas são atualmente as chaves do dicionário. Mas isso não é muito descritivo. Então, vamos renomeá-los! 👩‍🏫

Métodos para renomear colunas em Pandas

Agora vamos ver os vários métodos para renomear colunas em pandas:

  • Definindo o atributo de colunas do dataframe para a lista de novos nomes de colunas
  • Usando o método rename() no dataframe
  • Usando str.replace para renomear uma ou mais colunas
  • Usando o método set_axis() no dataframe

Definindo o atributo das colunas

Para qualquer dataframe, o atributo de colunas contém a lista de nomes de colunas:

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

Vamos renomear as colunas para indicar o que cada campo representa e então chamar df.head() para ver os resultados:

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

Usando o método rename()

Para renomear colunas em pandas, você pode usar o método rename() com a sintaxe:

df.rename(column={mapping})

Esse mapeamento pode ser um dicionário com o seguinte formato:

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

Vamos criar df a partir do dicionário books_dict:

df = pd.DataFrame(books_dict)

Usando o método rename() com a sintaxe acima, obtemos df_1. Que é uma cópia do dataframe com as colunas renomeadas.

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

Portanto, os nomes das colunas de df_1 são modificados:

  Como usar o bate-papo por voz no H1Z1 PS4

Mas os nomes das colunas do dataframe original df não mudam:

df.head()

Como esse método nos permite fornecer um mapeamento entre os nomes das colunas antigas e novas, podemos usá-lo para renomear colunas únicas e múltiplas.

Renomear colunas no local

E se você quiser modificar o quadro de dados existente sem criar uma nova cópia?

Para fazer isso, você pode definir inplace igual a True na chamada do método.

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

Isso renomeará as colunas do dataframe original df:

Até agora vimos como:

  • Renomeie as colunas fornecendo um dicionário que mapeie os nomes das colunas antigas para os novos nomes das colunas
  • Renomeie as colunas no local sem criar um novo dataframe

Você também pode usar o método renomear de outra maneira.

Outra Abordagem para Renomear Colunas

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

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

O dataframe df agora se parece com isso:

Suponha que queremos alterar cada um desses nomes de coluna para o caso do título. Em vez de fornecer um dicionário para cada nome de coluna, podemos especificar uma chamada de função ou método em um objeto, conforme mostrado:

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

Aqui, definimos o eixo como ‘colunas’ e usamos str.title para converter todos os nomes de colunas para maiúsculas e minúsculas.

Usando str.replace() nas strings de nome de coluna

Como sempre, execute a seguinte célula de código para criar o dataframe do dicionário:

df = pd.DataFrame(books_dict)

Em Python, você teria usado o método replace() com a sintaxe str.replace(this, with_this) para obter uma cópia de uma string com as alterações necessárias. Aqui está um exemplo:

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

Você sabe que o atributo de colunas contém uma lista de strings contendo os nomes das colunas. Então você pode chamar str.replace(‘old_column_name’,’new_column_name’) assim:

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

Aqui, renomeamos apenas a coluna ‘one’ para ‘Title’, de modo que os nomes das outras colunas permanecem inalterados.

  Como lembrar mensagens importantes no Slack

Agora vamos 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()

Esse método de renomear colunas é útil quando você precisa renomear apenas uma ou um pequeno subconjunto das colunas.

Usando o método set_axis()

Vamos voltar para a versão inicial de um dataframe:

df = pd.DataFrame(books_dict)

Você também pode usar o método set_axis() para renomear as colunas. A sintaxe é a seguinte:

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

Por padrão, o método set_axis() retorna a cópia do dataframe. Mas se você deseja modificar o dataframe no local, pode definir a cópia como False.

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

Conclusão

Aqui está uma revisão dos diferentes métodos para renomear colunas em um dataframe do pandas:

  • Para um df de quadro de dados de amostra, o atributo de colunas df.columns é a lista de nomes de colunas. Para renomear as colunas, você pode definir esse atributo para a lista de novos nomes de colunas.
  • O método rename() para renomear colunas funciona com a seguinte sintaxe: df.rename(columns={mapping}) onde mapping refere-se ao mapeamento dos nomes das colunas antigas para os novos nomes das colunas. Você também pode usar o método rename() especificando uma função a ser aplicada a todos os nomes de coluna: df.rename(função ou chamada de método, axis=’columns’).
  • Da mesma forma que você usa o método replace() em uma string Python, você pode usar df.columns.str.replace(‘old_column_name’, ‘new_column_name’) para substituir os nomes das colunas.
  • Outra abordagem para renomear em colunas é usar o método set_axis com a sintaxe: df.set_axis(list_of_col_names,axis=’columns’).

Isso é tudo para este tutorial! Confira a lista de notebooks colaborativos para análise de dados.