Pular para o conteúdo

Como usar a função join do pandas?

[

Combinando Dados no pandas com merge(), .join() e concat()

por Kyle Stratis

Introdução

O pandas é uma biblioteca poderosa para explorar e analisar dados no Python. Uma das suas funcionalidades mais importantes é a capacidade de combinar datasets separados. Com as ferramentas merge(), join() e concat(), você pode unificar e compreender melhor os seus dados enquanto analisa-os.

Neste tutorial, você aprenderá como e quando combinar os seus dados no pandas usando as seguintes técnicas:

  • merge() para combinar dados em colunas ou índices comuns
  • join() para combinar dados em uma coluna ou índice-chave
  • concat() para combinar DataFrames em linhas ou colunas

pandas merge(): Combinando Dados em Colunas ou Índices Comuns

A primeira técnica que você aprenderá é a merge(). Ela é útil quando você deseja combinar colunas ou índices comuns de dois ou mais DataFrames. A função merge() é similar às operações de junção (join) em bancos de dados relacionais.

Para usar a merge(), você precisa especificar as colunas ou índices comuns em que você deseja combinar os dados. As combinações podem ser do tipo um-para-um, muitos-para-um ou muitos-para-muitos, dependendo de quais dados você está combinando e da estrutura dos seus DataFrames.

A função merge() oferece muitas opções de personalização para que você possa controlar exatamente como os dados serão combinados.

Como usar merge()

A função merge() é chamada a partir de um DataFrame e recebe outro DataFrame como argumento. Veja um exemplo básico:

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [40, 50, 60]})
result = pd.merge(df1, df2, on='A')
print(result)

Neste exemplo, df1 e df2 são DataFrames com colunas ‘A’ e ‘B’. A função merge() é chamada a partir de df1 e recebe df2 como argumento. A chave de junção é especificada pela opção on=‘A’, ou seja, os dados serão combinados com base nos valores da coluna ‘A’.

Exemplos

Vamos ver agora alguns exemplos práticos para entender melhor como usar a função merge().

Exemplo 1 - Merge de DataFrames com uma chave de junção

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'A': [2, 3, 4], 'C': [100, 200, 300]})
result = pd.merge(df1, df2, on='A')
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. Ambos têm a coluna ‘A’, que será usada como chave de junção. Portanto, os dados serão combinados com base nos valores da coluna ‘A’. O resultado será:

A B C
0 2 20 100
1 3 30 200

Observe que somente as linhas onde os valores da coluna ‘A’ são iguais em df1 e df2 são mantidas no resultado.

Exemplo 2 - Merge de DataFrames com várias chaves de junção

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30], 'C': ['a', 'b', 'c']})
df2 = pd.DataFrame({'A': [2, 3, 4], 'B': [40, 50, 60], 'C': ['d', 'e', 'f']})
result = pd.merge(df1, df2, on=['A', 'B'])
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. Ambos têm as colunas ‘A’, ‘B’ e ‘C’, e as colunas ‘A’ e ‘B’ serão usadas como chave de junção. O resultado será:

A B C_x C_y
0 2 20 b d
1 3 30 c e

Observe que somente as linhas onde os valores das colunas ‘A’ e ‘B’ são iguais em df1 e df2 são mantidas no resultado. As colunas ‘C’ de cada DataFrame são renomeadas no resultado para evitar ambiguidade.

pandas join(): Combinando Dados em uma Coluna ou Índice

A segunda técnica que você aprenderá é a join(). Ela é útil quando você deseja combinar DataFrames com base em uma coluna ou índice-chave. A join() é uma abordagem simplificada em relação ao merge(), que é mais flexível, permitindo combinações mais complexas.

Como usar join()

A função join() é chamada a partir de um DataFrame e recebe outro DataFrame como argumento. A coluna ou índice-chave para a junção é especificada usando a opção on=‘key_column’. Veja um exemplo básico:

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'C': [4, 5, 6]}, index=[2, 3, 4])
result = df1.join(df2, on='A')
print(result)

Neste exemplo, df1 é o DataFrame inicial e df2 é o DataFrame que será combinado com df1. A opção on=‘A’ especifica que a coluna de junção é a coluna ‘A’. O resultado será:

A B C
0 1 10 NaN
1 2 20 4.0
2 3 30 5.0

Observe que a combinação é feita com base nos valores da coluna ‘A’ em df1 e nos índices em df2. As linhas onde os valores de ‘A’ e os índices coincidem são combinadas.

Exemplos

Vamos ver agora alguns exemplos práticos para entender melhor como usar a função join().

Exemplo 1 - Join de DataFrames com uma coluna de junção

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'C': [4, 5, 6]}, index=[1, 2, 3])
result = df1.join(df2, on='A')
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. O DataFrame df1 tem a coluna ‘A’ e o DataFrame df2 tem a coluna ‘C’. Desejamos combinar os DataFrames com base na coluna ‘A’. O resultado será:

A B C
0 1 10 NaN
1 2 20 4.0
2 3 30 5.0

Observe que a linha com o valor 1 em df1 não tem correspondência em df2, por isso o valor em ‘C’ é NaN. As outras linhas são combinadas com base nos valores em ‘A’.

Exemplo 2 - Join de DataFrames com índices de junção

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]}, index=[1, 2, 3])
df2 = pd.DataFrame({'C': [4, 5, 6]}, index=[2, 3, 4])
result = df1.join(df2, on='A')
print(result)

Neste exemplo, novamente temos dois DataFrames: df1 e df2. No entanto, agora ambos têm um índice numérico em vez de uma coluna de junção. O DataFrame df1 tem o índice [1, 2, 3] e o DataFrame df2 tem o índice [2, 3, 4]. Especificamos que queremos combinar os DataFrames com base no índice ‘A’. O resultado será:

A B C
1 1.0 10 NaN
2 2.0 20 NaN
3 3.0 30 NaN

Observe que, neste caso, nenhuma das linhas é combinada, pois os valores em ‘A’ não correspondem aos índices em df2.

pandas concat(): Combinando DataFrames em Linhas ou Colunas

A terceira técnica que você aprenderá é a concat(). Ela é útil quando você deseja combinar DataFrames em linhas ou colunas. A concat() é mais simples que a merge() e a join(), pois não requer uma chave de junção e realiza a combinação simplesmente empilhando os DataFrames.

Como usar concat()

A função concat() é chamada a partir do pandas e recebe uma lista de DataFrames como argumento. A concatenação pode ser feita em linhas (axis=0) ou colunas (axis=1), dependendo do resultado desejado. Veja um exemplo básico:

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [40, 50, 60]})
result = pd.concat([df1, df2], axis=0)
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. Para combinar os DataFrames em linhas, passamos a lista [df1, df2] para a função concat() e especificamos a opção axis=0. O resultado será:

A B
0 1 10
1 2 20
2 3 30
0 4 40
1 5 50
2 6 60

Observe que o índice é reiniciado ao combinar os dataframes em linhas.

Exemplos

Vamos ver agora alguns exemplos práticos para entender melhor como usar a função concat().

Exemplo 1 - Concatenação de DataFrames em Linhas

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'A': [4, 5, 6], 'B': [40, 50, 60]})
result = pd.concat([df1, df2], axis=0)
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. Ambos têm as colunas ‘A’ e ‘B’. Queremos combinar os DataFrames em linhas. O resultado será:

A B
0 1 10
1 2 20
2 3 30
0 4 40
1 5 50
2 6 60

Observe que o índice é reiniciado ao combinar os DataFrames em linhas.

Exemplo 2 - Concatenação de DataFrames em Colunas

import pandas as pd
df1 = pd.DataFrame({'A': [1, 2, 3], 'B': [10, 20, 30]})
df2 = pd.DataFrame({'C': [4, 5, 6], 'D': [40, 50, 60]})
result = pd.concat([df1, df2], axis=1)
print(result)

Neste exemplo, temos dois DataFrames: df1 e df2. df1 tem as colunas ‘A’ e ‘B’, enquanto df2 tem as colunas ‘C’ e ‘D’. Queremos combinar os DataFrames em colunas. O resultado será:

A B C D
0 1 10 4 40
1 2 20 5 50
2 3 30 6 60

Observe que as colunas de df1 são combinadas com as colunas de df2.

Conclusão

Neste tutorial, você aprendeu como combinar DataFrames usando três técnicas diferentes: merge(), join() e concat(). Cada uma dessas técnicas tem suas próprias peculiaridades e pode ser útil em diferentes situações.

A função merge() é a mais flexível das três, permitindo combinações complexas de dados com base em colunas ou índices comuns.

A função join() é uma abordagem simplificada em relação à merge(), e é útil quando você deseja combinar DataFrames com base em uma única coluna ou índice-chave.

A função concat() é a mais simples das três, realizando a combinação simplesmente empilhando DataFrames em linhas ou colunas.

Agora que você conhece essas técnicas, você está pronto para combinar e analisar seus dados com mais eficiência usando o pandas no Python.