Unire i DataFrame

Trasformazione dei dati con Polars

Liam Brannigan

Data Scientist & Polars Contributor

Dati delle recensioni

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    |
Trasformazione dei dati con Polars

Il dataset delle ispezioni

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              |
Trasformazione dei dati con Polars

Cos’è una join?

Diagramma che mostra un singolo DataFrame.

Trasformazione dei dati con Polars

Cos’è una join?

Diagramma che mostra due DataFrame.

Trasformazione dei dati con Polars

Cos’è una join?

Diagramma che mostra due DataFrame con una chiave corrispondente evidenziata.

Trasformazione dei dati con Polars

Cos’è una join?

Diagramma che mostra due DataFrame uniti abbinando le righe su colonne condivise.

Trasformazione dei dati con Polars

Cos’è una join?

Diagramma che mostra due DataFrame uniti abbinando le righe su colonne condivise, con una chiave evidenziata.

Trasformazione dei dati con Polars

Join su una singola colonna

reviews.join(                                       )
Trasformazione dei dati con Polars

Join su una singola colonna

reviews.join(inspections,                           )
Trasformazione dei dati con Polars

Join su una singola colonna

reviews.join(inspections, on="business"             )
Trasformazione dei dati con Polars

Join su una singola colonna

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              |
Trasformazione dei dati con Polars

Join su più colonne

reviews.join(inspections, on=["business", "location"])
Trasformazione dei dati con Polars

Join su più colonne

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              |
Trasformazione dei dati con Polars

Left join

reviews.join(inspections, on=["business", "location"],           )
Trasformazione dei dati 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              |
Trasformazione dei dati con Polars

Full join

reviews.join(inspections, on=["business", "location"],                          )
Trasformazione dei dati con Polars

Full join

reviews.join(inspections, on=["business", "location"], how="full"               )
Trasformazione dei dati 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           |
Trasformazione dei dati con Polars

Scegliere la strategia di join

2 tabelle

Trasformazione dei dati con Polars

Inner join

Rappresentazione di una inner join

Trasformazione dei dati con Polars

Left join

Rappresentazione di una left join

Trasformazione dei dati con Polars

Full join

Rappresentazione di una full join

Trasformazione dei dati con Polars

¡Vamos a practicar!

Trasformazione dei dati con Polars

Preparing Video For Download...