Buscar
  • Esteban Madrigal

LEFT JOIN o Buscar V en Python

Actualizado: 26 oct

¿Necesitas encontrar un dato específico en toda la base de datos en Python?

Al realizar una combinación entre tablas necesitamos como mínimo dos bases de datos. Por ejemplo, si lo contextualizamos a Excel, podemos tener una tabla principal (tabla de hechos), donde se almacena la gran mayoría de información, Luego tendríamos una tabla complementaria, de la cual vamos a extraer ciertas características o columnas que complementen la tabla principal.

Imagen recopilada de: https://ingenieriadesoftware.es/tipos-sql-join-guia-referencia/


En la tabla A se muestra la información que esta tiene almacenada y se extraen los datos que existen en la tabla B. Esta relación se efectúa por medio de una llave de columna tanto en la tabla A como B.


En Python podemos realizar un LEFT JOIN o BUSCAR V con funciones de la librería de pandas. Veámoslo con un ejemplo.


Utilizando un set de datos de CO2 que tiene información sobre vehículos, tenemos una tabla de hechos que contiene la información principal para analizar. Para complementar el nivel de detalle, necesitamos conocer cual es la descripción de la transmisión, ya que en nuestra base principal solo contamos con el ID, por lo cual debemos extraer esa información de otra tabla que si la tiene almacenada.


Importando la librería y la base de datos
import pandas as pd 

CO2 = pd.ExcelFile('CO2.xlsx').parse(sheet_name='CO2',header = 0,names=None,index_col=None, encoding = 'latin-1')

CO2.head()

Importamos la primera tabla de datos y exploramos un poco su estructura, para luego proceder a realizar la carga de la tabla dimensional que contiene la información especifica de las transmisiones del vehículo.

transmision = pd.ExcelFile('CO2.xlsx').parse(sheet_name='Transmision',header = 0,names=None,index_col=None, encoding = 'latin-1')

transmision .head(6)

Realizamos la carga de la tabla complementaria de combustible que contiene la descripción del tipo de transmisión.


En muchas ocasiones cuando realizamos una combinación entre tablas, no se extrae la información, esto porque las columnas de referencia no coinciden en sus datos. Por lo tanto, vamos a realizar algunas buenas prácticas para evitar este tipo de errores.


Quitando espacios en blanco o vacíos con strip:
transmision['ID_Transmision'] = transmision['ID_Transmision'].str.strip()

transmision.head()

Visualmente puede que no parezca que existan cambios, sin embargo la función str.strip() en su valor predeterminado elimina los espacios en blanco al principio y al final de una cadena de texto.


Otra buena práctica es revisar los valores únicos de las llaves en ambas tablas. Esto con el fin de validar si en la combinación quedarán valores vacíos al momento de la combinación.


Extrayendo los valores únicos de una tabla específica:
df_transmision['ID_Transmision'].unique()

CO2['ID_Transmision'].unique()



Combinar tablas cuando la llave tiene el mismo nombre:
datos = CO2.merge(transmision,how = 'left',on='ID_Transmision')

datos.head()

Ahora realizaremos la carga de otra tabla que nos extrae la información de la descripción del tipo de combustible y que complementará a la base anterior.


Combinaciones con Datos Duplicados
Columnas con nombres distintos

Cargando una nueva base de datos:

import pandas as pd

combustible = pd.ExcelFile('CO2.xlsx').parse(sheet_name='Combustible',header = 0,names=None,index_col=None, encoding = 'latin-1')

En este escenario al realizar la exploración del dataset notamos que existen valores duplicados, por lo cual al combinar tablas donde las llaves son valores múltiples, el resultado nos mostraría que por cada posible coincidencia devuelve sus posibles combinaciones (para este escenario se duplicarían las líneas de gas natural en cada coincidencia).


Por lo cual debemos de aplicar una pequeña depuración al momento de realizar la combinación utilizando la función drop_duplicates() y aplicamos una validación de combinación ‘many_to_one’.


En este escenario de combinación también podemos observar que las columnas que son la llave de la combinación también tienen nombres distintos, es por esto que debemos especificar los nombres de las columnas en la tabla izquierda como derecha por medio de los parámetros left_on y right_on.


Combinar Tablas Cuando la llave no tiene el mismo nombre
Utilizando “drop_duplicates” para eliminar valores duplicados

datos = datos.merge(combustible.drop_duplicates(), how = 'left',left_on='Tipo de combustible',right_on='ID',validate='many_to_one')

Y como ves, hemos realizado la combinación de las tablas de forma satisfactoria. Coméntanos si te ha sido de utilidad.

120 visualizaciones0 comentarios

Entradas Recientes

Ver todo