pandas

Como juntar DataFrames em Pandas Python?

Como juntar DataFrames em Pandas Python?
O Pandas DataFrame é uma estrutura de dados bidimensional (2D) que está alinhada em um formato tabular. Esses DataFrames podem ser combinados usando métodos diferentes, como concat (), merge () e joins. Os pandas têm alto desempenho e operações de junção completas que são semelhantes ao banco de dados relacional SQL. Usando a função merge, as operações de junção podem ser implementadas entre objetos DataFrames.

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 library
importar 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 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, 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 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 library
importar 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 library
importar 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 library
importar 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 library
importar 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 library
importar 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 library
importar 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.

Melhores jogos de linha de comando para Linux
A linha de comando não é apenas sua maior aliada ao usar o Linux - ela também pode ser uma fonte de entretenimento porque você pode usá-la para jogar ...
Melhores aplicativos de mapeamento de gamepad para Linux
Se você gosta de jogar no Linux com um gamepad em vez de um teclado típico e sistema de entrada de mouse, existem alguns aplicativos úteis para você. ...
Ferramentas úteis para jogadores de Linux
Se você gosta de jogar no Linux, é provável que tenha usado aplicativos e utilitários como Wine, Lutris e OBS Studio para melhorar a experiência de jo...