Exploraremos los usos de la función de combinación, la función concat y los diferentes tipos de operaciones de combinación en Pandas Python en este artículo. Todos los ejemplos se ejecutarán a través del editor de pycharm. Empecemos por los detalles!
Uso de la función de combinación
La sintaxis básica comúnmente utilizada de la función merge () se proporciona a continuación:
pd.fusionar (df_obj1, df_obj2, how = 'inner', on = None, left_on = None, right_on = Ninguno)Expliquemos los detalles de los parámetros:
Los primeros dos df_obj1 y df_obj2 los argumentos son los nombres de los objetos o tablas de DataFrame.
La "cómoEl parámetro "se utiliza para diferentes tipos de operaciones de combinación, como" izquierda, derecha, exterior e interior ". La función de combinación utiliza la operación de combinación "interna" de forma predeterminada.
El argumento "en" contiene el nombre de la columna en la que se realiza la operación de unión. Esta columna debe estar presente en ambos objetos DataFrame.
En los argumentos "left_on" y "right_on", "left_on" es el nombre del nombre de la columna como clave en el DataFrame izquierdo. El "right_on" es el nombre de la columna utilizada como clave del DataFrame derecho.
Para desarrollar el concepto de unir DataFrames, hemos tomado dos objetos DataFrame: producto y cliente. Los siguientes detalles están presentes en el DataFrame del producto:
producto = pd.Marco de datos('Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Computadora portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City': ['Islamabad', 'Lahore', 'Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
El DataFrame del cliente contiene los siguientes detalles:
cliente = pd.Marco de datos('ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
Unirse a DataFrames en una clave
Podemos encontrar fácilmente los productos vendidos en línea y los clientes que los compraron. Entonces, según una clave "Product_ID", hemos realizado la operación de unión interna en ambos DataFrames de la siguiente manera:
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Ciudad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, en = 'Product_ID'))
La siguiente salida se muestra en la ventana después de ejecutar el código anterior:
Si las columnas son diferentes en ambos DataFrames, escriba explícitamente el nombre de cada columna con los argumentos left_on y right_on de la siguiente manera:
importar pandas como pdproducto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Ciudad': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, left_on = 'Product_Name', right_on = 'Product_Purchased'))
La siguiente salida se mostrará en la pantalla:
Unirse a DataFrames usando el argumento How
En los siguientes ejemplos, explicaremos cuatro tipos de operaciones de unión en Pandas DataFrames:
- Unir internamente
- Unión externa
- Unión a la izquierda
- Unión derecha
Unión interna en Pandas
Podemos realizar una combinación interna en varias claves. Para mostrar más detalles sobre las ventas de productos, tome Product_ID, Seller_City del producto DataFrame y Product_ID, y "Customer_City" del cliente DataFrame para encontrar que el vendedor o el cliente pertenecen a la misma ciudad. Implemente las siguientes líneas de código:
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, cómo = 'interior', left_on = ['Product_ID', 'Seller_City'], right_on = ['Product_ID', 'Customer_City']))
El siguiente resultado se muestra en la ventana después de ejecutar el código anterior:
Unión completa / externa en Pandas
Las uniones externas devuelven valores de DataFrames derecho e izquierdo, que tienen coincidencias. Entonces, para implementar la combinación externa, establezca el argumento "cómo" como externo. Modifiquemos el ejemplo anterior usando el concepto de unión externa. En el siguiente código, devolverá todos los valores de DataFrames izquierdo y derecho.
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, en = 'Product_ID', cómo = 'exterior'))
Establecer el argumento del indicador como "Verdadero". Notará que la nueva columna "_merge" se agrega al final.
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, en = 'Product_ID', cómo = 'exterior', indicador = Verdadero))
Como puede ver en la siguiente captura de pantalla, los valores de la columna de combinación explican qué fila pertenece a qué DataFrame.
Unión a la izquierda en Pandas
La unión izquierda solo muestra filas del DataFrame izquierdo. Es similar a la combinación externa. Por lo tanto, cambie el valor del argumento "cómo" con "izquierda". Pruebe el siguiente código para implementar la idea de unión izquierda:
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Ordenador portátil'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, en = 'Product_ID', cómo = 'izquierda'))
Únete a la derecha en Pandas
La unión derecha mantiene todas las filas de DataFrame correctas a la derecha junto con las filas que también son comunes en el DataFrame izquierdo. En este caso, el argumento "cómo" se establece como el valor "correcto". Ejecute el siguiente código para implementar el concepto de unión correcto:
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Laptop'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.fusionar (producto, cliente, en = 'Product_ID', cómo = 'correcto'))
En la siguiente captura de pantalla, puede ver el resultado después de ejecutar el código anterior:
Unión de DataFrames usando la función Concat ()
Se pueden unir dos DataFrames usando la función concat. La sintaxis básica de la función de concatenación se da a continuación:
pd.concat ([df_obj1, df_obj_2]))Dos objetos DataFrames pasarán como argumentos.
Unámonos al producto y al cliente de DataFrames a través de la función concat. Ejecute las siguientes líneas de código para unir dos DataFrames:
# importar la biblioteca de Pandasimportar pandas como pd
producto = pd.Marco de datos(
'Product_ID': [101,102,103,104,105,106,107],
'Product_Name': ['auriculares', 'Bolso', 'Zapatos', 'Smartphone', 'Cepillo de dientes', 'Reloj de pulsera', 'Laptop'],
'Categoría': ['Electrónica', 'Moda', 'Moda', 'Electrónica', 'Comestibles', 'Moda', 'Electrónica'],
'Precio': [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.Marco de datos(
'ID': [1,2,3,4,5,6,7,8,9],
'Customer_Name': ['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Edad': [20,21,15,10,31,52,15,18,16],
'Product_ID': [101,0,106,0,103,104,0,0,107],
'Product_Purchased': ['auriculares', 'NA', 'reloj de pulsera', 'NA', 'Zapatos', 'Smartphone', 'NA', 'NA', 'Laptop'],
'Customer_City': ['Lahore', 'Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
imprimir (pd.concat ([producto, cliente]))
Conclusión:
En este artículo, hemos discutido la implementación de la función merge (), las funciones concat () y la operación joins en Pandas Python. Con los métodos anteriores, puede unir fácilmente dos DataFrames y aprender. cómo implementar las operaciones de combinación "interna, externa, izquierda y derecha" en Pandas. Con suerte, este tutorial lo guiará en la implementación de las operaciones de combinación en diferentes tipos de DataFrames. Háganos saber sus dificultades en caso de cualquier error.