Unir DataFrames

Transformación de datos con Polars

Liam Brannigan

Data Scientist & Polars Contributor

Datos de reseñas

shape: (5, 4)
| business         | location    | review | price |
| ---              | ---         | ---    | ---   |
| str              | str         | f64    | i64   |
|------------------|-------------|--------|-------|
| 7burgers         | Wakey Wakey | 4.2    | 15    |
| Bang Bang Burger | Forest Rd.  | 3.8    | 12    |
| Costa Coffee     | City Point  | 4.5    | 8     |
| Costa Coffee     | Waterloo    | 4.1    | 8     |
| The Queens Head  | Denman St.  | 4.7    | 25    |
Transformación de datos con Polars

El dataset de inspecciones

inspections = pl.read_csv("restaurant_inspections.csv")
shape: (5, 4)
| business        | location    | type       | hygiene_rating |
| ---             | ---         | ---        | ---            |
| str             | str         | str        | i64            |
|-----------------|-------------|------------|----------------|
| 7burgers        | Wakey Wakey | restaurant | 4              |
| Costa Coffee    | City Point  | café       | 5              |
| Costa Coffee    | Waterloo    | café       | 3              |
| The Queens Head | Denman St.  | bar        | 5              |
| Wagamama        | Soho        | restaurant | 4              |
Transformación de datos con Polars

¿Qué es un join?

Diagrama que muestra un solo DataFrame.

Transformación de datos con Polars

¿Qué es un join?

Diagrama que muestra dos DataFrames.

Transformación de datos con Polars

¿Qué es un join?

Diagrama que muestra dos DataFrames con una clave coincidente resaltada.

Transformación de datos con Polars

¿Qué es un join?

Diagrama que muestra dos DataFrames combinados al emparejar filas por columnas compartidas.

Transformación de datos con Polars

¿Qué es un join?

Diagrama que muestra dos DataFrames combinados al emparejar filas por columnas compartidas con una clave resaltada.

Transformación de datos con Polars

Unir por una columna

reviews.join(                                       )
Transformación de datos con Polars

Unir por una columna

reviews.join(inspections,                           )
Transformación de datos con Polars

Unir por una columna

reviews.join(inspections, on="business"             )
Transformación de datos con Polars

Unir por una columna

reviews.join(inspections, on="business", how="inner")
shape: (6, 7)
| business      | location    | ... | location_right | hygiene_rating |
| ---           | ---         | ... | ---            | ---            |
| str           | str         | ... | str            | i64            |
|---------------|-------------|-----|----------------|----------------|
| 7burgers      | Wakey Wakey | ... | Wakey Wakey    | 4              |
| Costa Coffee  | City Point  | ... | City Point     | 5              |
| Costa Coffee  | Waterloo    | ... | City Point     | 5              |
| Costa Coffee  | City Point  | ... | Waterloo       | 3              |
| Costa Coffee  | Waterloo    | ... | Waterloo       | 3              |
| The Queens Hd | Denman St.  | ... | Denman St.     | 5              |
Transformación de datos con Polars

Unir por varias columnas

reviews.join(inspections, on=["business", "location"])
Transformación de datos con Polars

Unir por varias columnas

reviews.join(inspections, on=["business", "location"])
shape: (4, 6)
| business        | location    | review | price | type       | hygiene_rating |
| ---             | ---         | ---    | ---   | ---        | ---            |
| str             | str         | f64    | i64   | str        | i64            |
|-----------------|-------------|--------|-------|------------|----------------|
| 7burgers        | Wakey Wakey | 4.2    | 15    | restaurant | 4              |
| Costa Coffee    | City Point  | 4.5    | 8     | café       | 5              |
| Costa Coffee    | Waterloo    | 4.1    | 8     | café       | 3              |
| The Queens Head | Denman St.  | 4.7    | 25    | bar        | 5              |
Transformación de datos con Polars

Left join

reviews.join(inspections, on=["business", "location"],           )
Transformación de datos con Polars

Left join

reviews.join(inspections, on=["business", "location"], how="left")
shape: (5, 6)
| business         | location    | review | price | type       | hygiene_rating |
| ---              | ---         | ---    | ---   | ---        | ---            |
| str              | str         | f64    | i64   | str        | i64            |
|------------------|-------------|--------|-------|------------|----------------|
| 7burgers         | Wakey Wakey | 4.2    | 15    | restaurant | 4              |
| Bang Bang Burger | Forest Rd.  | 3.8    | 12    | null       | null           |
| Costa Coffee     | City Point  | 4.5    | 8     | café       | 5              |
| Costa Coffee     | Waterloo    | 4.1    | 8     | café       | 3              |
| The Queens Head  | Denman St.  | 4.7    | 25    | bar        | 5              |
Transformación de datos con Polars

Full join

reviews.join(inspections, on=["business", "location"],                          )
Transformación de datos con Polars

Full join

reviews.join(inspections, on=["business", "location"], how="full"               )
Transformación de datos con Polars

Full join

reviews.join(inspections, on=["business", "location"], how="full", coalesce=True)
shape: (6, 6)
| business         | location    | review | price | type       | hygiene_rating |
| ---              | ---         | ---    | ---   | ---        | ---            |
| str              | str         | f64    | i64   | str        | i64            |
|------------------|-------------|--------|-------|------------|----------------|
| 7burgers         | Wakey Wakey | 4.2    | 15    | restaurant | 4              |
| Costa Coffee     | City Point  | 4.5    | 8     | café       | 5              |
| Costa Coffee     | Waterloo    | 4.1    | 8     | café       | 3              |
| The Queens Head  | Denman St.  | 4.7    | 25    | bar        | 5              |
| Wagamama         | Soho        | null   | null  | restaurant | 4              |
| Bang Bang Burger | Forest Rd.  | 3.8    | 12    | null       | null           |
Transformación de datos con Polars

Elegir una estrategia de join

2 tablas

Transformación de datos con Polars

Inner join

Representación de inner join

Transformación de datos con Polars

Left join

Representación de left join

Transformación de datos con Polars

Full join

Representación de full join

Transformación de datos con Polars

¡Vamos a practicar!

Transformación de datos con Polars

Preparing Video For Download...