Python
Mudando Facilmente os Nomes das Colunas no Pandas: Um Guia para Iniciantes

Mudando Facilmente os Nomes das Colunas no Pandas: Um Guia para Iniciantes

MoeNagy Dev

Mudando os Nomes das Colunas no Pandas

Visão Geral do Pandas DataFrame

Um Pandas DataFrame é uma estrutura de dados bidimensional e tabular, com linhas e colunas. Cada coluna em um DataFrame pode ter um tipo de dados diferente, e as colunas podem ser acessadas e manipuladas individualmente.

Entendendo a estrutura de um Pandas DataFrame

import pandas as pd
 
# Criar um DataFrame de exemplo
data = {'Nome': ['Alice', 'Bob', 'Charlie'],
        'Idade': [25, 30, 35],
        'Cidade': ['Nova York', 'Londres', 'Paris']}
 
df = pd.DataFrame(data)
print(df)

Saída:

       Nome  Idade        Cidade
0    Alice     25  Nova York
1      Bob     30     Londres
2  Charlie     35       Paris

Acessando e manipulando dados de colunas

Você pode acessar colunas individuais de um DataFrame usando o nome da coluna como um atributo ou como uma chave entre colchetes:

print(df['Nome'])
print(df.Idade)

Saída:

0    Alice
1      Bob
2  Charlie
Name: Nome, dtype: object
0    25
1    30
2    35
Name: Idade, dtype: int64

Você também pode atribuir novos valores a uma coluna:

df['País'] = ['EUA', 'Reino Unido', 'França']
print(df)

Saída:

       Nome  Idade        Cidade    País
0    Alice     25  Nova York     EUA
1      Bob     30     Londres Reino Unido
2  Charlie     35       Paris    França

Renomeando Colunas

Renomear colunas em um Pandas DataFrame é uma tarefa comum ao trabalhar com dados. Existem várias maneiras de realizar isso.

Usando o método rename()

O método rename() permite que você renomeie uma ou mais colunas. Você pode passar um dicionário ou uma função para o `.

# Renomeando uma única coluna usando um dicionário
df = df.rename(columns={'Name': 'Nome Completo'})
print(df)

Saída:

       Nome Completo  Age       City Country
0        Alice   25  New York     USA
1          Bob   30    London      UK
2      Charlie   35     Paris   France

Passando um dicionário para rename()

Você pode passar um dicionário para o parâmetro columns, onde as chaves são os nomes de coluna antigos e os valores são os novos nomes de coluna.

# Renomeando múltiplas colunas usando um dicionário
df = df.rename(columns={'Nome Completo': 'Participante', 'Age': 'Anos'})
print(df)

Saída:

       Participante  Anos       City Country
0        Alice     25  New York     USA
1          Bob     30    London      UK
2      Charlie     35     Paris   France

Passando uma função para rename()

Você também pode passar uma função para o parâmetro columns, que será aplicada a cada nome de coluna.

# Renomeando colunas usando uma função
df = df.rename(columns=lambda x: x.lower().replace(' ', '_'))
print(df)

Saída:

       participante  anos       city country
0        alice     25  New York     USA
1          bob     30    London      UK
2      charlie     35     Paris   France

Renomeando múltiplas colunas de uma vez

Você pode renomear várias colunas passando um dicionário ou uma lista de tuplas para o parâmetro columns.

# Renomeando múltiplas colunas de uma vez
df = df.rename(columns={'participante': 'nome', 'anos': 'idade'})
print(df)

Saída:

       nome  idade       city country
0    alice   25  New York     USA
1      bob   30    London      UK
2  charlie   35     Paris   France

Modificando Nomes de Colunas Diretamente

Você também pode modificar os nomes de coluna diretamente acessando o atributo columns do DataFrame.

Acessando e atualizando nomes de coluna

# Acessando e atualizando nomes de coluna
df.columns = ['Nome', 'Idade', 'Localização', 'Nacionalidade']
print(df)

Saída: `. Nome Idade Localização Nacionalidade 0 alice 25 Nova York EUA 1 bob 30 Londres Reino Unido 2 charlie 35 Paris França

Usando list comprehension para renomear colunas

Você pode usar list comprehension para aplicar uma transformação aos nomes das colunas.

# Renomeando colunas usando list comprehension
df.columns = [col.upper() for col in df.columns]
print(df)

Saída:

       NOME  IDADE    LOCALIZAÇÃO NACIONALIDADE
0    alice   25  Nova York         EUA
1      bob   30    Londres           Reino Unido
2  charlie   35     Paris        França

Lidando com Nomes de Colunas Ausentes ou Duplicados

É importante lidar com casos em que os nomes das colunas estão ausentes ou duplicados.

Identificando e abordando nomes de colunas ausentes

# Criando um DataFrame com um nome de coluna ausente
data = {'Nome': ['Alice', 'Bob', 'Charlie'], 'Idade': [25, 30, 35]}
df = pd.DataFrame(data)
print(df)

Saída:

       Nome  Idade
0    Alice     25
1      Bob     30
2  Charlie     35

Para resolver o nome de coluna ausente, você pode usar o método rename() ou atribuir um novo nome diretamente ao atributo columns.

# Renomeando a coluna ausente
df = df.rename(columns={None: 'Nova Coluna'})
print(df)

Saída:

       Nome  Idade     Nova Coluna
0    Alice     25            NaN
1      Bob     30            NaN
2  Charlie     35            NaN

Resolvendo nomes de colunas duplicados

# Criando um DataFrame com nomes de colunas duplicados
data = {'Nome': ['Alice', 'Bob', 'Charlie'], 'Idade': [25, 30, 35], 'Nome': [1, 2, 3]}
df = pd.DataFrame(data)
print(df)

Saída:

       Nome  Idade  Nome
0    Alice     25     1
1      Bob     30     2
2  Charlie     35     3

Para resolver os nomes de colunas duplicados, você pode usar o método rename() ou o método set_axis().

# Resolvendo nomes de colunas duplicados
df = df.rename(columns={'Nome_x': 'Nome', 'Nome_y': 'Nome_2'})
print(df)

Saída:

       Nome  Idade  Nome_2
0    Alice     25       1
1      Bob     30       2
2  Charlie     35       3

Bob 30 2 2 Charlie 35 3


## Técnicas Avançadas de Renomeação de Colunas

O Pandas fornece técnicas adicionais para cenários mais avançados de renomeação de colunas.

### Renomeando colunas com base em um padrão específico

```python
# Renomeando colunas com base em um padrão
data = {'feature_1': [1, 2, 3], 'feature_2': [4, 5, 6], 'target': [10, 20, 30]}
df = pd.DataFrame(data)
df = df.rename(columns=lambda x: x.replace('feature_', 'col_'))
print(df)

Saída:

   col_1  col_2  target
0      1      4      10
1      2      5      20
2      3      6      30

Renomeando colunas usando expressões regulares

# Renomeando colunas usando expressões regulares
data = {'feature1_a': [1, 2, 3], 'feature1_b': [4, 5, 6], 'feature2_a': [7, 8, 9]}
df = pd.DataFrame(data)
df = df.rename(columns=lambda x: re.sub(r'feature(\d+)_(\w+)', r'col_\1_\2', x))
print(df)

Saída:

   col_1_a  col_1_b  col_2_a
0        1        4        7
1        2        5        8
2        3        6        9

Renomeando colunas em um índice de coluna multinível

# Renomeando colunas em um índice de coluna multinível
data = {('group1', 'A'): [1, 2, 3], ('group1', 'B'): [4, 5, 6], ('group2', 'C'): [7, 8, 9]}
df = pd.DataFrame(data)
df.columns = pd.MultiIndex.from_tuples([('Grupo 1', 'Recurso A'), ('Grupo 1', 'Recurso B'), ('Grupo 2', 'Recurso C')])
df = df.rename(columns=lambda x: ('G 1', x[1]))
print(df)

Saída:

   (G 1, Recurso A)  (G 1, Recurso B)  (G 2, Recurso C)
0                 1                 4                 7
1                 2                 5                 8
2                 3                 6                 9

Renomeando Colunas Durante a Criação do DataFrame

Você também pode renomear colunas durante a criação de um Pandas DataFrame.

Passando nomes de colunas durante a inicialização do DataFrame

# Renomeando colunas durante a inicialização do DataFrame
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
print(df)
Output:

A B C 0 1 2 3 1 4 5 6 2 7 8 9


### Renomeando colunas ao ler dados de arquivos

```python
# Renomeando colunas ao ler dados de um arquivo
df = pd.read_csv('data.csv', names=['Nome', 'Idade', 'Cidade'])
print(df)

Mantendo a Ordem das Colunas Após a Renomeação

Ao renomear colunas, é importante considerar a ordem das colunas.

Preservando a ordem de coluna original

# Preservando a ordem de coluna original
df = df[['Nome', 'Idade', 'Cidade']]
print(df)

Output:

       Nome  Idade       Cidade
0    Alice    25  New York
1      Bob    30    London
2  Charlie    35     Paris

Reordenando colunas após a renomeação

# Reordenando colunas após a renomeação
df = df[['Cidade', 'Nome', 'Idade']]
print(df)

Output:

       Cidade       Nome  Idade
0  New York    Alice   25
1    London      Bob   30
2     Paris  Charlie   35

Aplicando Renomeação em Múltiplos DataFrames

Ao trabalhar com vários DataFrames relacionados, muitas vezes é necessário garantir convenções de nomenclatura de colunas consistentes.

Renomeando colunas em DataFrames relacionados

# Renomeando colunas em DataFrames relacionados
df1 = pd.DataFrame({'Nome': ['Alice', 'Bob'], 'Idade': [25, 30]})
df2 = pd.DataFrame({'Nome': ['Charlie', 'David'], 'Cidade': ['New York', 'London']})
 
df1 = df1.rename(columns={'Nome': 'Participante', 'Idade': 'Anos'})
df2 = df2.rename(columns={'Nome': 'Participante', 'Cidade': 'Local'})
 
print(df1)
print(df2)

Output:

   Participante  Anos
0       Alice    25
1         Bob    30

   Participante     Local
0     Charlie  New York
1       David    London

Garantindo convenções de nomenclatura de colunas consistentes

# Garantindo convenções de nomenclatura de colunas consistentes
df1 = df1.rename(columns={'Participante': 'nome', 'Anos': 'idade'})
df2 = df2.rename(columns={'Participante': 'nome', 'Local': 'cidade'})
 
print(df1)
print(df2)

Output:

      nome  idade
0   Alice     25
1     Bob     30

      nome     cidade
0 .

Charlie Nova Iorque 1 David Londres

Automatizando Fluxos de Trabalho de Renomeação de Colunas

Para tornar a renomeação de colunas mais eficiente, você pode desenvolver funções reutilizáveis e integrá-las aos seus fluxos de processamento de dados.

Loops e Instruções Condicionais

Loops e instruções condicionais são essenciais em Python para controlar o fluxo do seu programa e automatizar tarefas repetitivas. Vamos explorar algumas estruturas de loop e instruções condicionais comuns.

Loops For

Loops for são usados para iterar sobre uma sequência (como uma lista, tupla ou string) ou outros objetos iteráveis. Aqui está um exemplo de um loop for que itera sobre uma lista de números e imprime cada um deles:

números = [1, 2, 3, 4, 5]
for num in números:
    print(num)

Saída:

1
2
3
4
5

Você também pode usar a função range() para criar uma sequência de números para iterar:

for i in range(1, 6):
    print(i)

Saída:

1
2
3
4
5

Loops While

Loops while são usados para executar um bloco de código enquanto uma determinada condição for verdadeira. Aqui está um exemplo de um loop while que conta regressivamente de 5 a 1:

contagem = 5
while contagem > 0:
    print(contagem)
    contagem -= 1
print("Decolagem!")

Saída:

5
4
3
2
1
Decolagem!

Instruções Condicionais

Instruções condicionais, como if-elif-else, permitem que você tome decisões com base em certas condições. Aqui está um exemplo de uma simples instrução if-else:

idade = 18
if idade >= 18:
    print("Você é um adulto.")
else:
    print("Você é menor de idade.")

Saída:

Você é um adulto.

Você também pode usar elif para verificar várias condições:

pontuação = 85
if pontuação >= 90:
    print("Você tirou um A!")
elif pontuação >= 80:
    print("Você tirou um B.")
elif pontuação >= 70:
    print("Você tirou um C.")
else:
    print("Você precisa melhorar.")

Saída:

Você tirou um B.

Loops Aninhados e Instruções Condicionais

Você também pode aninhar loops e instruções condicionais uns dentro dos outros para criar uma lógica mais complexa. Aqui está um. Um exemplo de um loop for aninhado que verifica se um número é primo:

for num in range(2, 21):
    # Inicializa a variável is_prime como True
    is_prime = True
    for i in range(2, int(num ** 0.5) + 1):
        # Verifica se o número é divisível por algum número entre 2 e a raiz quadrada do número
        if num % i == 0:
            # Se for divisível, define is_prime como False e sai do loop interno
            is_prime = False
            break
    if is_prime:
        print(f"{num} é um número primo.")
    else:
        print(f"{num} não é um número primo.")

Saída:

2 é um número primo.
3 é um número primo.
4 não é um número primo.
5 é um número primo.
6 não é um número primo.
7 é um número primo.
8 não é um número primo.
9 não é um número primo.
10 não é um número primo.
11 é um número primo.
12 não é um número primo.
13 é um número primo.
14 não é um número primo.
15 não é um número primo.
16 não é um número primo.
17 é um número primo.
18 não é um número primo.
19 é um número primo.
20 não é um número primo.

Funções

Funções são um bloco de construção fundamental do Python. Elas permitem que você agrupe código relacionado, tornando seus programas mais organizados, modulares e reutilizáveis.

Definindo Funções

Para definir uma função em Python, você usa a palavra-chave def seguida pelo nome da função, um conjunto de parênteses e dois-pontos. O código que compõe o corpo da função é recuado.

Aqui está um exemplo de uma função simples que cumprimenta o usuário:

def cumprimentar(nome):
    print(f"Olá, {nome}!")
 
cumprimentar("Alice")

Saída:

Olá, Alice!

Você também pode definir funções que recebem vários argumentos:

def somar_numeros(a, b):
    return a + b
 
resultado = somar_numeros(5, 3)
print(resultado)

Saída:

8

Argumentos Padrão e de Palavra-chave

As funções podem ter argumentos padrão, que são usados quando um parâmetro não é fornecido durante a chamada da função. Aqui está um exemplo:

def cumprimentar(nome, mensagem="Olá"):
    print(f"{mensagem}, {nome}!")
 
cumprimentar("Alice")
cumprimentar("Bob", "Oi")

Saída:

Olá, Alice!
Oi, Bob!

Você também pode usar argumentos de palavra-chave para chamar funções, o que pode tornar o código mais legível:

def calcular(a, b, operacao="+"):
    if operacao == "+":
        return a + b
    elif operacao == "-":
        return a - b
    # Adicione mais operações conforme necessário
 
resultado = calcular(5, 3, operacao="-")
print(resultado)

Saída:

2

e_area(comprimento, largura): return comprimento * largura

Usando argumentos de palavra-chave

area = calculate_area(comprimento=5, largura=3) print(area)


Saída:

15


### Escopo e Tempo de Vida da Variável

O escopo de uma variável determina onde ela pode ser acessada no seu código. O Python tem escopo local e global. Variáveis definidas dentro de uma função têm escopo local, enquanto variáveis definidas fora de funções têm escopo global.

Aqui está um exemplo que demonstra a diferença:

```python
variavel_global = "Eu sou global!"

def minha_funcao():
    variavel_local = "Eu sou local."
    print(variavel_global)
    print(variavel_local)

minha_funcao()
print(variavel_global)
# print(variavel_local)  # Isso gerará um erro

Saída:

Eu sou global!
Eu sou local.
Eu sou global!

Observe que variavel_local não pode ser acessada fora de minha_funcao() porque ela tem escopo local.

Funções Recursivas

Funções recursivas são funções que se chamam a si mesmas para resolver um problema. Aqui está um exemplo de uma função recursiva que calcula o fatorial de um número:

def fatorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * fatorial(n - 1)
 
print(fatorial(5))

Saída:

120

Neste exemplo, a função fatorial() se chama com um valor menor de n até atingir o caso base (quando n é 0 ou 1), momento em que ela retorna 1.

Módulos e Pacotes

No Python, módulos e pacotes são usados para organizar e reutilizar código. Módulos são arquivos Python individuais, enquanto pacotes são coleções de módulos relacionados.

Importando Módulos

Para usar o código de um módulo, você precisa importá-lo. Aqui está um exemplo de importação do módulo math integrado:

import math
 
print(math.pi)
print(math.sqrt(16))

Saída:

3.141592653589793
4.0

Você também pode importar funções ou variáveis específicas de um módulo:

from math import pi, sqrt
 
print(pi)
print(sqrt(16))

Saída:

3.141592653589793
4.0

Criando Módulos

Para criar seu próprio módulo, basta salvar seu código Python em um arquivo com a extensão .py. Por exemplo, vamos criar um módulo chamado my_module.py com uma função chamada greet():

# my_module.py
def greet(name):
    print(f"Olá, {name}!")

Você pode então importar e usar a função greet() em outro arquivo Python:

# main.py
import my_module
 
my_module.greet("Alice")

Saída:

Olá, Alice!

Pacotes

Pacotes são usados para organizar módulos relacionados em uma estrutura hierárquica. Para criar um pacote, você precisa criar um diretório com um arquivo __init__.py. Aqui está um exemplo:

my_package/
    __init__.py
    math_utils.py
    string_utils.py

O arquivo __init__.py pode estar vazio, mas é necessário para que o Python reconheça o diretório como um pacote.

Você pode então importar funções dos módulos dentro do pacote:

# main.py
from my_package.math_utils import add
from my_package.string_utils import reverse
 
print(add(5, 3))
print(reverse("hello"))

Saída:

8
olleh

Conclusão

Neste tutorial, você aprendeu sobre os conceitos essenciais do Python, como loops, instruções condicionais, funções, módulos e pacotes. Essas ferramentas são fundamentais para a construção de programas robustos e dinâmicos em Python.

Lembre-se de que a melhor maneira de melhorar suas habilidades em Python é praticar, experimentar e continuar aprendendo. Explore o vasto ecossistema de bibliotecas e módulos Python e não hesite em mergulhar na documentação oficial do Python para obter informações mais aprofundadas.

Bom código!

MoeNagy Dev.