quinta-feira, 22 de abril de 2021

Python - Altere os nomes das colunas e os índices das linhas no DataFrame pandas

Dado um DataFrame pandas, vamos ver como alterar seus nomes de coluna e índices de linha.

Sobre o DataFrame pandas

Os DataFrame pandas são grades retangulares usadas para armazenar dados. É fácil visualizar e trabalhar com dados quando armazenados em dataFrame.

  • Consiste em linhas e colunas.
  • Cada linha é uma medida de alguma instância, enquanto a coluna é um vetor que contém dados para algum atributo/variável específico.
  • Cada coluna de dataframe tem dados homogêneos em qualquer coluna específica, mas as linhas de dataframe podem conter dados homogêneos ou heterogêneos em qualquer linha específica.
  • Ao contrário da matriz bidimensional, os eixos do dataframe do pandas são rotulados.

O tipo Dataframe do Pandas tem dois atributos chamados "columns" e "index" que podem ser usados para alterar os nomes das colunas, bem como os índices das linhas.

Crie um DataFrame usando um dicionário.

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

print(df)

Saída:

    Nome  Idade
0    Tom     15
1   Nick     26
2   John     17
3  Peter     28

Método #1: Alterar o nome da coluna e o índice da linha usando os atributo df.columns e df.index respectivamente.

Para alterar os nomes das colunas, fornecemos uma lista python contendo os nomes das colunasparra o atributo df.columns. Exemplo: df.columns = ['First_col', 'Second_col', 'Third_col', .....].

Para alterar os índices de linha, também fornecemos uma lista python para o atributo df.index. Exemplo: df.index = ['row1', 'row2', 'row3', ......]

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Muda o nome das colunas
df.columns = ['Coluna_1', 'Coluna_2']

# Muda o nome dos index
df.index = ['Lina_1', 'Linha_2', 'Linha_3', 'Linha_4']

print(df)

Saída:

        Coluna_1  Coluna_2
Lina_1       Tom        15
Linha_2     Nick        26
Linha_3     John        17
Linha_4    Peter        28

Método #2: Usando a função rename() com dicionário para alterar uma única coluna

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Alterar o nome da coluna 'Nome' para 'Coluna_1'
df = df.rename(columns={"Nome":"Coluna_1"})

print(df)

Saída:

  Coluna_1  Idade
0      Tom     15
1     Nick     26
2     John     17
3    Peter     28

Alterar vários nomes de coluna simultaneamente:

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Alterar o nome da coluna 'Nome' para 'Coluna_1'
# e alterando o nome da coluna 'Idade' para 'Coluna_2'
df = df.rename({"Nome":"Coluna_1","Idade":"Coluna_2"}, axis='columns')

print(df)

Saída:

  Coluna_1  Coluna_2
0      Tom        15
1     Nick        26
2     John        17
3    Peter        28

Método #3: Usando a função Lambda para renomear as colunas.

Uma função lambda é uma pequena função anônima que pode receber qualquer número de argumentos, mas pode ter apenas uma expressão. Usando a função lambda, podemos modificar todos os nomes das colunas de uma vez. Vamos adicionar 'x' no final de cada nome de coluna usando a função lambda

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

# Renomeando colunas usando uma função lambda
# Adiciona '_x' ao final do nome de cada coluna
df = df.rename(columns=lambda x: x+'_x')

print(df)

Saída:

   Nome_x  Idade_x
0    Tom      15
1   Nick      26
2   John      17
3  Peter      28

Método #4: Usando o atributo values para renomear as colunas.

Podemos usar o atributo values diretamente na coluna cujo nome queremos alterar.

import pandas as pd

df = pd.DataFrame({
    "Nome": ['Tom', 'Nick', 'John', 'Peter'],
    "Idade": [15, 26, 17, 28]
})

df.columns.values[1] = 'Estudantes_Idade'

print(df)

Saída:

    Nome  Estudantes_Idade
0    Tom                15
1   Nick                26
2   John                17
3  Peter                28

Vamos mudar o índice da linha usando a função Lambda.

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

# isto aumentará o valor do índice da linha em 10 para cada linha
df = df.rename(index=lambda x: x + 10)

print(df)

Saída:

        A   B
10    Tom  25
11   Nick  16
12   John  27
13  Peter  18

Agora, se quisermos alterar os índices de linha e nomes de coluna simultaneamente, isso pode ser feito usando a função rename() e passando o atributo de coluna e índice como o parâmetro.

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

df = df.rename(index=lambda x: x + 5, columns=lambda x: x + 'x')

print(df)

Saída:

import pandas as pd

df = pd.DataFrame({
    "A": ['Tom', 'Nick', 'John', 'Peter'],
    "B": [25, 16, 27, 18]
})

df = df.rename(index=lambda x: x + 5, columns=lambda x: x + 'x')

print(df)

Artigo escrito por Shubham__Ranjan e traduzido por Acervolima de Python | Change column names and row indexes in Pandas DataFrame.

Licença

0 comentários:

Postar um comentário