Como Mesclar, Juntar e Concatenar DataFrames do Pandas em Python
Updated on
Mesclar, juntar e concatenar DataFrames são técnicas importantes no pandas que permitem combinar vários conjuntos de dados em um só. Essas técnicas são essenciais para limpar, transformar e analisar dados. Mesclar, juntar e concatenar são frequentemente utilizados indistintamente, mas se referem a métodos diferentes de combinar dados. Neste post, discutiremos essas três técnicas importantes em detalhes e forneceremos exemplos de como usá-las em Python.
Mesclando DataFrames no Pandas
Mesclar é o processo de combinar dois ou mais DataFrames em um único DataFrame, vinculando linhas com base em uma ou mais chaves comuns. As chaves comuns podem ser uma ou mais colunas que possuem valores correspondentes nos DataFrames que estão sendo mesclados.
Diferentes Tipos de Mesclagens
Existem quatro tipos de mesclagens no pandas: interna, externa, esquerda e direita.
- Mesclagem Interna: Retorna apenas as linhas que possuem valores correspondentes em ambos os DataFrames.
- Mesclagem Externa: Retorna todas as linhas de ambos os DataFrames e preenche os valores ausentes com NaN onde não há correspondência.
- Mesclagem à Esquerda: Retorna todas as linhas do DataFrame à esquerda e as linhas correspondentes do DataFrame à direita. Preenche os valores ausentes com NaN onde não há correspondência.
- Mesclagem à Direita: Retorna todas as linhas do DataFrame à direita e as linhas correspondentes do DataFrame à esquerda. Preenche os valores ausentes com NaN onde não há correspondência.
Exemplos de Como Realizar Diferentes Tipos de Mesclagens
Vamos dar uma olhada em alguns exemplos de como realizar diferentes tipos de mesclagens usando o Pandas.
Exemplo 1: Mesclagem Interna
import pandas as pd
# Criando dois DataFrames
df1 = pd.DataFrame({'chave': ['A', 'B', 'C', 'D'],
'valor': [1, 2, 3, 4]})
df2 = pd.DataFrame({'chave': ['B', 'D', 'E', 'F'],
'valor': [5, 6, 7, 8]})
# Mesclagem interna
mesclagem_interna = pd.merge(df1, df2, on='chave')
print(mesclagem_interna)
Saída:
chave valor_x valor_y
0 B 2 5
1 D 4 6
Exemplo 2: Mesclagem Externa
import pandas as pd
# Criando dois DataFrames
df1 = pd.DataFrame({'chave': ['A', 'B', 'C', 'D'],
'valor': [1, 2, 3, 4]})
df2 = pd.DataFrame({'chave': ['B', 'D', 'E', 'F'],
'valor': [5, 6, 7, 8]})
# Mesclagem externa
mesclagem_externa = pd.merge(df1, df2, on='chave', how='outer')
print(mesclagem_externa)
Saída:
chave valor_x valor_y
0 A 1.0 NaN
1 B 2.0 5.0
2 C 3.0 NaN
3 D 4.0 6.0
4 E NaN 7.0
5 F NaN 8.0
Exemplo 3: Mesclagem à Esquerda
Uma mesclagem à esquerda retorna todas as linhas do DataFrame à esquerda e as linhas correspondentes do DataFrame à direita. Quaisquer linhas do DataFrame à esquerda que não tenham uma correspondência no DataFrame à direita terão valores NaN nas colunas do DataFrame à direita.
import pandas as pd
# Criando dois DataFrames
df1 = pd.DataFrame({'chave': ['A', 'B', 'C', 'D'], 'valor': [1, 2, 3, 4]})
df2 = pd.DataFrame({'chave': ['B', 'D', 'E'], 'valor': [5, 6, 7]})
# Realizar uma mesclagem à esquerda
df_mesclado_esquerda = pd.merge(df1, df2, on='chave', how='left')
# Imprimir o DataFrame mesclado
print(df_mesclado_esquerda)
Saída:
chave valor_x valor_y
0 A 1 NaN
1 B 2 5.0
2 C 3 NaN
3 D 4 6.0
Exemplo 4: Mesclagem à Direita
Uma mesclagem à direita retorna todas as linhas do DataFrame à direita e as linhas correspondentes do DataFrame à esquerda. Quaisquer linhas do DataFrame à direita que não tenham uma correspondência no DataFrame à esquerda terão valores NaN nas colunas do DataFrame à esquerda.
import pandas as pd
# Criando dois DataFrames
df1 = pd.DataFrame({'chave': ['A', 'B', 'C'], 'valor': [1, 2, 3]})
df2 = pd.DataFrame({'chave': ['B', 'D', 'E'], 'valor': [5, 6, 7]})
# Realizar uma mesclagem à direita
df_mesclado_direita = pd.merge(df1, df2, on='chave', how='right')
# Imprimir o DataFrame mesclado
print(df_mesclado_direita)
Saída:
chave valor_x valor_y
0 B 2.0 5
1 D NaN 6
2 E NaN 7
Juntando DataFrames no pandas
Juntar é um método de combinar dois DataFrames em um com base em seus valores de índice ou coluna.
Existem quatro tipos de junções no pandas: interna, externa, esquerda e direita.
- Junção Interna: Retorna apenas as linhas que possuem valores de índice ou coluna correspondentes em ambos os DataFrames.
- Junção Externa: Retorna todas as linhas de ambos os DataFrames e preenche os valores ausentes com NaN onde não há correspondência.
- Junção à Esquerda: Retorna todas as linhas do DataFrame à esquerda e as linhas correspondentes do DataFrame à direita. Preenche os valores ausentes com NaN onde não há correspondência.
- Junção à Direita: Retorna todas as linhas do DataFrame à direita e as linhas correspondentes do DataFrame à esquerda. Preenche os valores ausentes com NaN onde não há correspondência.
Concatenando DataFrames no pandas
Concatenar é o processo de juntar dois ou mais DataFrames verticalmente ou horizontalmente. No pandas, isso pode ser feito usando a função concat(). A função concat() permite combinar dois ou mais DataFrames em um único DataFrame empilhando-os verticalmente ou horizontalmente.
Exemplos de como concatenar dois ou mais DataFrames usando o pandas
Para concatenar dois ou mais DataFrames verticalmente, você pode usar o seguinte código:
import pandas as pd
# Crie dois DataFrames de exemplo
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
'B': ['B4', 'B5', 'B6', 'B7'],
'C': ['C4', 'C5', 'C6', 'C7'],
'D': ['D4', 'D5', 'D6', 'D7']})
# Concatene os DataFrames verticalmente
result = pd.concat([df1, df2])
print(result)
Saída:
A B C D
0 A0 B0 C0 D0
1 A1 B1 C1 D1
2 A2 B2 C2 D2
3 A3 B3 C3 D3
0 A4 B4 C4 D4
1 A5 B5 C5 D5
2 A6 B6 C6 D6
3 A7 B7 C7 D7
Para concatenar dois ou mais DataFrames horizontalmente, você pode usar o seguinte código:
import pandas as pd
# Crie dois DataFrames de exemplo
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
'B': ['B0', 'B1', 'B2', 'B3'],
'C': ['C0', 'C1', 'C2', 'C3'],
'D': ['D0', 'D1', 'D2', 'D3']})
df2 = pd.DataFrame({'E': ['E0', 'E1', 'E2', 'E3'],
'F': ['F0', 'F1', 'F2', 'F3'],
'G': ['G0', 'G1', 'G2', 'G3'],
'H': ['H0', 'H1', 'H2', 'H3']})
# Concatene os DataFrames horizontalmente
result = pd.concat([df1, df2], axis=1)
print(result)
Saída:
A B C D E F G H
0 A0 B0 C0 D0 E0 F0 G0 H0
1 A1 B1 C1 D1 E1 F1 G1 H1
2 A2 B2 C2 D2 E2 F2 G2 H2
Criar Visualização Concat para DataFrames do Panda
Para criar Visualizações de Concat dentro do Python, há um pacote de Análise de Dados e Visualização de Dados de Código Aberto que pode te ajudar: PyGWalker.
PyGWalker pode simplificar o seu fluxo de trabalho de análise de dados e visualização de dados no Jupyter Notebook. Ao trazer uma interface leve e fácil de usar ao invés de analisar dados usando Python. Os passos são simples:
Importe pygwalker e pandas para o seu Jupyter Notebook para começar.
import pandas as pd
import pygwalker as pyg
Você pode usar o pygwalker sem alterar seu fluxo de trabalho existente. Por exemplo, você pode chamar o Graphic Walker com o dataframe carregado desta forma:
df = pd.read_csv('./bike_sharing_dc.csv', parse_dates=['date'])
gwalker = pyg.walk(df)
Agora você pode visualizar seu Dataframe do Pandas com uma interface amigável ao usuário!
Você pode simplesmente criar uma Visualização de Concat arrastando e soltando variáveis:
Para testar o PyGWalker agora mesmo, você pode executar o PyGWalker no Google Colab (opens in a new tab), Binder (opens in a new tab) ou Kaggle (opens in a new tab).
PyGWalker é de Código Aberto. Você pode conferir a página do GitHub do PyGWalker (opens in a new tab) e ler o Artigo Towards Data Science (opens in a new tab) sobre ele.
Não se esqueça de conferir uma ferramenta de Análise de Dados Automatizada mais avançada, com IA: RATH (opens in a new tab). O RATH também é de Código Aberto e hospedou seu código-fonte no GitHub (opens in a new tab).
FAQ
Como posso unir dois DataFrames usando o PySpark?
PySpark é um framework de processamento de grandes volumes de dados de código aberto que permite escrever aplicativos de processamento de dados em Python, Java, Scala ou R. Para unir dois DataFrames usando o PySpark, você pode usar o método join(), que recebe dois objetos DataFrame e uma expressão de junção opcional. Você pode especificar o tipo de junção usando o parâmetro how.
Como posso mesclar dois DataFrames usando R?
Para mesclar dois DataFrames usando o R, você pode usar a função merge(), que recebe dois data frames e um conjunto opcional de argumentos que especificam como os dados devem ser mesclados.
Como posso anexar dois ou mais DataFrames no pandas?
Para anexar dois ou mais DataFrames no pandas, você pode usar a função concat(), que recebe uma lista de DataFrames e um parâmetro opcional axis que especifica o eixo ao longo do qual os DataFrames devem ser concatenados.
Como posso unir dois DataFrames com base em uma coluna comum usando o pandas?
Para unir dois DataFrames com base em uma coluna comum usando o pandas, você pode usar a função merge(), que recebe dois DataFrames e um conjunto opcional de argumentos que especificam como os dados devem ser mesclados. Você pode especificar a coluna para unir usando o parâmetro on.
Conclusão
Em conclusão, mesclar, unir e concatenar DataFrames são operações essenciais na análise de dados. Com a ajuda de ferramentas poderosas como pandas, PySpark e R, essas operações podem ser realizadas de maneira fácil e eficiente. Independentemente de estar lidando com conjuntos de dados grandes ou pequenos, essas ferramentas oferecem maneiras flexíveis e intuitivas de manipular seus dados.