DEV Community

Francisco Júnior
Francisco Júnior

Posted on • Edited on

1

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.

Sentry image

Hands-on debugging session: instrument, monitor, and fix

Join Lazar for a hands-on session where you’ll build it, break it, debug it, and fix it. You’ll set up Sentry, track errors, use Session Replay and Tracing, and leverage some good ol’ AI to find and fix issues fast.

RSVP here →

Top comments (0)

A Workflow Copilot. Tailored to You.

Pieces.app image

Our desktop app, with its intelligent copilot, streamlines coding by generating snippets, extracting code from screenshots, and accelerating problem-solving.

Read the docs