Łączenie DataFrames

Transformacje danych z Polars

Liam Brannigan

Data Scientist & Polars Contributor

Dane z recenzjami

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    |
Transformacje danych z Polars

Zbiór danych z kontrolami

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              |
Transformacje danych z Polars

Czym jest złączenie?

Diagram przedstawiający jeden DataFrame.

Transformacje danych z Polars

Czym jest złączenie?

Diagram przedstawiający dwa DataFrames.

Transformacje danych z Polars

Czym jest złączenie?

Diagram przedstawiający dwa DataFrames z wyróżnionym wspólnym kluczem.

Transformacje danych z Polars

Czym jest złączenie?

Diagram przedstawiający łączenie dwóch DataFrames przez dopasowanie wierszy na wspólnych kolumnach.

Transformacje danych z Polars

Czym jest złączenie?

Diagram przedstawiający łączenie dwóch DataFrames przez dopasowanie wierszy na wspólnych kolumnach z wyróżnionym kluczem.

Transformacje danych z Polars

Złączenie po jednej kolumnie

reviews.join(                                       )
Transformacje danych z Polars

Złączenie po jednej kolumnie

reviews.join(inspections,                           )
Transformacje danych z Polars

Złączenie po jednej kolumnie

reviews.join(inspections, on="business"             )
Transformacje danych z Polars

Złączenie po jednej kolumnie

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              |
Transformacje danych z Polars

Złączenie po wielu kolumnach

reviews.join(inspections, on=["business", "location"])
Transformacje danych z Polars

Złączenie po wielu kolumnach

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              |
Transformacje danych z Polars

Left join

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

Full join

reviews.join(inspections, on=["business", "location"],                          )
Transformacje danych z Polars

Full join

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

Jak wybrać rodzaj złączenia?

2 tabele

Transformacje danych z Polars

Inner join

Schemat złączenia inner join

Transformacje danych z Polars

Left join

Schemat złączenia left join

Transformacje danych z Polars

Full join

Schemat złączenia full join

Transformacje danych z Polars

Czas na praktykę!

Transformacje danych z Polars

Preparing Video For Download...