Att joina DataFrames

Datatransformation med Polars

Liam Brannigan

Data Scientist & Polars Contributor

Recensionsdata

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    |
Datatransformation med Polars

Datamängden inspections

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              |
Datatransformation med Polars

Vad är en join?

Diagram som visar en enskild DataFrame.

Datatransformation med Polars

Vad är en join?

Diagram som visar två DataFrames.

Datatransformation med Polars

Vad är en join?

Diagram som visar två DataFrames med en matchande nyckel markerad.

Datatransformation med Polars

Vad är en join?

Diagram som visar hur två DataFrames kombineras genom att matcha rader på gemensamma kolumner.

Datatransformation med Polars

Vad är en join?

Diagram som visar hur två DataFrames kombineras genom att matcha rader på gemensamma kolumner med en matchande nyckel markerad.

Datatransformation med Polars

Join på en enda kolumn

reviews.join(                                       )
Datatransformation med Polars

Join på en enda kolumn

reviews.join(inspections,                           )
Datatransformation med Polars

Join på en enda kolumn

reviews.join(inspections, on="business"             )
Datatransformation med Polars

Join på en enda kolumn

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              |
Datatransformation med Polars

Join på flera kolumner

reviews.join(inspections, on=["business", "location"])
Datatransformation med Polars

Join på flera kolumner

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              |
Datatransformation med Polars

Left join

reviews.join(inspections, on=["business", "location"],           )
Datatransformation med 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              |
Datatransformation med Polars

Full join

reviews.join(inspections, on=["business", "location"],                          )
Datatransformation med Polars

Full join

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

Välja join-strategi

2 tabeller

Datatransformation med Polars

Inner join

Illustration av inner join

Datatransformation med Polars

Left join

Illustration av left join

Datatransformation med Polars

Full join

Illustration av full join

Datatransformation med Polars

Nu kör vi en övning!

Datatransformation med Polars

Preparing Video For Download...