Exploraremos os usos da função merge, função concat e diferentes tipos de operações joins no Pandas python neste artigo. Todos os exemplos serão executados através do editor de pycharm. Vamos começar com os detalhes!
Uso da função Merge
A sintaxe básica comumente usada da função merge () é fornecida abaixo:
pd.mesclar (df_obj1, df_obj2, how = 'interno', on = None, left_on = None, right_on = None)Vamos explicar os detalhes dos parâmetros:
Os dois primeiros df_obj1 e df_obj2 argumentos são os nomes dos objetos DataFrame ou tabelas.
O "Como as"Parâmetro é usado para diferentes tipos de operações de junção, como" esquerda, direita, externa e interna ". A função de mesclagem usa a operação de junção "interna" por padrão.
O argumento "sobre" contém o nome da coluna na qual a operação de junção é realizada. Esta coluna deve estar presente em ambos os objetos DataFrame.
Nos argumentos “left_on” e “right_on”, “left_on” é o nome do nome da coluna como a chave no DataFrame esquerdo. O “right_on” é o nome da coluna usada como uma chave do DataFrame certo.
Para elaborar o conceito de junção de DataFrames, pegamos dois objetos DataFrame - produto e cliente. Os seguintes detalhes estão presentes no DataFrame do produto:
product = pd.Quadro de dados('Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
O DataFrame do cliente contém os seguintes detalhes:
cliente = pd.Quadro de dados('ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Junte DataFrames em uma chave
Podemos encontrar facilmente produtos vendidos online e os clientes que os compraram. Portanto, com base em uma chave “Product_ID”, realizamos a operação de junção interna em ambos os DataFrames da seguinte maneira:
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Cidade': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, em = 'Product_ID'))
A seguinte saída é exibida na janela após a execução do código acima:
Se as colunas forem diferentes em ambos os DataFrames, escreva explicitamente o nome de cada coluna pelos argumentos left_on e right_on da seguinte maneira:
importar pandas como pdproduct = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Cidade': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, left_on = 'Product_Name', right_on = 'Product_Purchased'))
A seguinte saída será exibida na tela:
Una DataFrames usando o argumento How
Nos exemplos a seguir, explicaremos quatro tipos de operações de Joins nos DataFrames do Pandas:
- Junção interna
- Junção Externa
- Associação à esquerda
- Junção certa
Junção interna nos pandas
Podemos realizar uma junção interna em várias chaves. Para exibir mais detalhes sobre as vendas do produto, pegue Product_ID, Seller_City do DataFrame do produto e Product_ID, e “Customer_City” do DataFrame do cliente para descobrir que o vendedor ou o cliente pertence à mesma cidade. Implemente as seguintes linhas de código:
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, como = 'interno', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
O seguinte resultado é mostrado na janela após a execução do código acima:
Junção completa / externa em Pandas
As junções externas retornam os valores de DataFrames direito e esquerdo, que possuem correspondências. Então, para implementar a junção externa, defina o argumento “como” como externo. Vamos modificar o exemplo acima usando o conceito de junção externa. No código a seguir, ele retornará todos os valores de DataFrames esquerdo e direito.
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, em = 'Product_ID', how = 'externo'))
Defina o argumento do indicador como “True” s. Você notará que a nova coluna “_merge” é adicionada no final.
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, em = 'Product_ID', how = 'externo', indicador = Verdadeiro))
Como você pode ver na captura de tela abaixo, os valores da coluna de mesclagem explicam qual linha pertence a qual DataFrame.
Junte-se à esquerda nos Pandas
A junção à esquerda exibe apenas as linhas do DataFrame esquerdo. É semelhante à junção externa. Portanto, altere o valor do argumento 'como' com “esquerda”. Experimente o seguinte código para implementar a ideia de junção à esquerda:
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, em = 'Product_ID', how = 'left'))
Junte-se à direita nos Pandas
A junção à direita mantém todas as linhas do DataFrame à direita junto com as linhas que também são comuns no DataFrame da esquerda. Neste caso, o argumento “como” é definido como o valor “certo”. Execute o seguinte código para implementar o conceito de junção certa:
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.mesclar (produto, cliente, em = 'Product_ID', como = 'certo'))
Na captura de tela a seguir, você pode ver o resultado após executar o código acima:
Junção de DataFrames usando a função Concat ()
Dois DataFrames podem ser unidos usando a função concat. A sintaxe básica da função de concatenação é fornecida abaixo:
pd.concat ([df_obj1, df_obj_2]))Dois objetos DataFrames passarão como argumentos.
Vamos juntar o produto DataFrames e o cliente por meio da função concat. Execute as seguintes linhas de código para unir dois DataFrames:
# import Pandas libraryimportar pandas como pd
product = pd.Quadro de dados(
'Product_ID': [101,102,103,104,105,106,107],
'Nome_do_produto': ['fones de ouvido', 'Bolsa', 'Sapatos', 'Smartphone', 'Escova de dentes', 'relógio de pulso', 'Laptop'],
'Categoria': ['Eletrônicos', 'Moda', 'Moda', 'Eletrônicos', 'Mercearia', 'Moda', 'Eletrônicos'],
'Preço': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
cliente = pd.Quadro de dados(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Idade': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['fones de ouvido', 'NA', 'relógio de pulso', 'NA', 'Sapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.concat ([produto, cliente]))
Conclusão:
Neste artigo, discutimos a implementação da função merge (), funções concat () e operação joins no Pandas python. Usando os métodos acima, você pode facilmente juntar dois DataFrames e aprender. como implementar as operações Join "interno, externo, esquerdo e direito" no Pandas. Esperançosamente, este tutorial irá guiá-lo na implementação das operações de junção em diferentes tipos de DataFrames. Informe-nos sobre suas dificuldades em caso de algum erro.