Fusionner des DataFrames

Transformation de données avec Polars

Liam Brannigan

Data Scientist & Polars Contributor

Données des avis

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    |
Transformation de données avec Polars

Le jeu de données des 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              |
Transformation de données avec Polars

Qu’est-ce qu’une jointure ?

Schéma montrant un seul DataFrame.

Transformation de données avec Polars

Qu’est-ce qu’une jointure ?

Schéma montrant deux DataFrames.

Transformation de données avec Polars

Qu’est-ce qu’une jointure ?

Schéma montrant deux DataFrames avec une clé correspondante surlignée.

Transformation de données avec Polars

Qu’est-ce qu’une jointure ?

Schéma montrant deux DataFrames combinés en faisant correspondre les lignes sur des colonnes communes.

Transformation de données avec Polars

Qu’est-ce qu’une jointure ?

Schéma montrant deux DataFrames combinés en faisant correspondre les lignes sur des colonnes communes avec une clé correspondante surlignée.

Transformation de données avec Polars

Jointure sur une seule colonne

reviews.join(                                       )
Transformation de données avec Polars

Jointure sur une seule colonne

reviews.join(inspections,                           )
Transformation de données avec Polars

Jointure sur une seule colonne

reviews.join(inspections, on="business"             )
Transformation de données avec Polars

Jointure sur une seule colonne

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              |
Transformation de données avec Polars

Jointure sur plusieurs colonnes

reviews.join(inspections, on=["business", "location"])
Transformation de données avec Polars

Jointure sur plusieurs colonnes

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              |
Transformation de données avec Polars

Jointure gauche

reviews.join(inspections, on=["business", "location"],           )
Transformation de données avec Polars

Jointure gauche

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              |
Transformation de données avec Polars

Jointure complète

reviews.join(inspections, on=["business", "location"],                          )
Transformation de données avec Polars

Jointure complète

reviews.join(inspections, on=["business", "location"], how="full"               )
Transformation de données avec Polars

Jointure complète

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           |
Transformation de données avec Polars

Choisir une stratégie de jointure

2 tables

Transformation de données avec Polars

Jointure interne

Représentation d’une jointure interne

Transformation de données avec Polars

Jointure gauche

Représentation d’une jointure gauche

Transformation de données avec Polars

Jointure complète

Représentation d’une jointure complète

Transformation de données avec Polars

Passons à la pratique !

Transformation de données avec Polars

Preparing Video For Download...