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!
últimas postagens
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.
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:
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.
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.