Guia Avançado do Método `merge` no Pandas com Exemplos

franciscojdsjr

Francisco Júnior

Posted on August 17, 2023

Guia Avançado do Método `merge` no Pandas com Exemplos

O Pandas é uma biblioteca popular em Python utilizada para manipulação e análise de dados. Entre suas funcionalidades mais poderosas está o método merge, que permite combinar dados de diferentes DataFrames com base em critérios específicos. Neste guia avançado, vamos explorar em detalhes o método merge e fornecer exemplos práticos de seu uso.

Conteúdo

  1. Introdução ao Método merge
  2. Tipos de Junções
    • Inner Join
    • Outer Join
    • Left Join
    • Right Join
  3. Especificando as Colunas de Junção
  4. Lidando com Conflitos de Nomes de Colunas
  5. Tratando Duplicatas
  6. Parâmetros Adicionais do Método merge
  7. Exemplos Práticos
    • Combinação de Dados de Clientes e Compras
    • Fusão de Dados Temporais
    • Junção de Dados de Funcionários e Departamentos

1. Introdução ao Método merge

O método merge do Pandas é usado para combinar dois ou mais DataFrames com base em colunas comuns (colunas de junção). O resultado é um novo DataFrame que contém os dados combinados das tabelas originais. Essa operação é semelhante ao conceito de junção em SQL.

2. Tipos de Junções e Exemplos

Vamos explorar agora exemplos práticos de cada tipo de junção usando o método merge.

- Inner Join

O inner join retorna apenas as linhas que possuem valores correspondentes nas duas tabelas.

import pandas as pd

df1 = pd.DataFrame({'chave': ['A', 'B', 'C'], 'valor_df1': [1, 2, 3]})
df2 = pd.DataFrame({'chave': ['B', 'C', 'D'], 'valor_df2': [4, 5, 6]})

resultado_inner = pd.merge(df1, df2, on='chave', how='inner')
print(resultado_inner)
Enter fullscreen mode Exit fullscreen mode

- Outer Join

O outer join retorna todas as linhas das duas tabelas, preenchendo com valores nulos onde não houver correspondência.

resultado_outer = pd.merge(df1, df2, on='chave', how='outer')
print(resultado_outer)
Enter fullscreen mode Exit fullscreen mode

- Left Join

O left join retorna todas as linhas da tabela da esquerda e as correspondentes da tabela da direita. As linhas da tabela da esquerda sem correspondência na tabela da direita terão valores nulos.

resultado_left = pd.merge(df1, df2, on='chave', how='left')
print(resultado_left)
Enter fullscreen mode Exit fullscreen mode

- Right Join

O right join é o oposto do left join. Ele retorna todas as linhas da tabela da direita e as correspondentes da tabela da esquerda. Linhas da tabela da direita sem correspondência terão valores nulos.

resultado_right = pd.merge(df1, df2, on='chave', how='right')
print(resultado_right)
Enter fullscreen mode Exit fullscreen mode

3. Especificando as Colunas de Junção

Você pode especificar as colunas de junção usando o parâmetro on do método merge. Se as colunas tiverem nomes diferentes nas tabelas, você pode usar os parâmetros left_on e right_on para especificar as colunas de junção de cada tabela.

Exemplo:

resultado_especifico = pd.merge(df1, df2, left_on='chave_df1', right_on='chave_df2', how='inner')
print(resultado_especifico)
Enter fullscreen mode Exit fullscreen mode

4. Lidando com Conflitos de Nomes de Colunas

Quando você combina DataFrames que têm colunas com o mesmo nome, o Pandas adiciona sufixos _x e _y às colunas duplicadas. Você pode usar o parâmetro suffixes para personalizar esses sufixos.

Exemplo:

resultado_sufixos = pd.merge(df1, df2, on='chave', how='inner', suffixes=('_esquerda', '_direita'))
print(resultado_sufixos)
Enter fullscreen mode Exit fullscreen mode

5. Tratando Duplicatas

Se suas tabelas contiverem duplicatas nas colunas de junção, você pode usar o parâmetro validate para verificar se as junções são válidas.

Exemplo:

resultado_com_duplicatas = pd.merge(df1, df2, on='chave', how='inner', validate='one_to_many')
print(resultado_com_duplicatas)
Enter fullscreen mode Exit fullscreen mode

6. Parâmetros Adicionais do Método merge

Existem outros parâmetros que permitem maior controle sobre a junção, como how (para especificar o tipo de junção), sort (para ordenar o resultado) e indicator (para criar uma coluna indicadora da origem dos dados).

Exemplo:

resultado_com_ordenacao = pd.merge(df1, df2, on='chave', how='inner', sort=True)
print(resultado_com_ordenacao)
Enter fullscreen mode Exit fullscreen mode

7. Exemplos Práticos

- Combinação de Dados de Clientes e Compras

Imagine que você tem dois DataFrames: um contendo informações sobre clientes e outro contendo informações sobre compras. Você pode usar o método merge para combinar esses dados com base no ID do cliente.

import pandas as pd

clientes = pd.DataFrame({
    'ID_cliente': [1, 2, 3, 4],
    'nome': ['Alice', 'Bob', 'Carol', 'David']
})

compras = pd.DataFrame({
    'ID_cliente': [2, 3, 1, 4],
    'valor': [100, 150, 200, 50]
})

resultado = pd.merge(clientes, compras, on='ID_cliente', how='inner')
print(resultado)
Enter fullscreen mode Exit fullscreen mode

- Fusão de Dados Temporais

Você pode combinar dados temporais usando o método merge, por exemplo, para rastrear alterações em uma entidade ao longo do tempo.

import pandas as pd

dados_antigos = pd.DataFrame({
    'ID': [1, 2, 3],
    'valor': [10, 20, 30],
    'data': ['2023-01-01', '2023-02-01', '2023-03-01']
})

dados_novos = pd.DataFrame({
    'ID': [1, 2, 3],
    'valor': [15, 25, 35],
    'data': ['2023-01-15', '2023-02-15', '2023-03-15']
})

resultado = pd.merge(dados_antigos, dados_novos, on='ID', suffixes=('_antigo', '_novo'))
print(resultado)
Enter fullscreen mode Exit fullscreen mode

- Junção de Dados de Funcionários e Departamentos

Vamos supor que você tenha informações sobre funcionários e departamentos, e você deseja realizar uma junção para obter os detalhes de cada funcionário juntamente com o nome de seu departamento.

import pandas as pd

funcionarios = pd.DataFrame({
    'ID_funcionario': [1, 2, 3, 4],
    'nome': ['Alice', 'Bob', 'Carol', 'David'],
    'ID_departamento': [101, 102, 101, 103]
})

departamentos = pd.DataFrame({
    'ID_departamento': [101, 102, 103],
    'nome_departamento': ['RH', 'Finanças', 'TI']
})

resultado = pd.merge(funcionarios, departamentos, on='ID_departamento', how='left')
print(resultado)
Enter fullscreen mode Exit fullscreen mode

Conclusão

O método merge do Pandas é uma ferramenta poderosa para combinar e enriquecer conjuntos de dados de diferentes fontes. Com a compreensão adequada dos tipos de junções e dos parâmetros disponíveis, você pode realizar operações complexas de combinação de dados de maneira eficaz e eficiente. Este guia forneceu uma visão abrangente do método merge com exemplos práticos para ajudá-lo a dominar essa funcionalidade essencial do Pandas.

💖 💪 🙅 🚩
franciscojdsjr
Francisco Júnior

Posted on August 17, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related