Calcularea rangurilor și corelațiilor

Transformarea datelor cu Polars

Liam Brannigan

Data Scientist & Polars Contributor

Ranguri

Tabel cu numărul de victorii la Cupa Mondială.

Transformarea datelor cu Polars

Ranguri

Tabel cu numărul de victorii la Cupa Mondială și o coloană de rang.

Transformarea datelor cu Polars

Ranguri

Tabel cu numărul de victorii la Cupa Mondială și două coloane de rang obținute prin metode diferite.

Transformarea datelor cu Polars

Datele noastre despre localuri

venues
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              |
| The Queens Head | Denman St.  | 4.7    | 25    | bar        | 5              |
| Costa Coffee    | Waterloo    | 4.1    | 8     | café       | 3              |
Transformarea datelor cu Polars

Clasează localurile după preț

venues.with_columns(

)
Transformarea datelor cu Polars

Clasează localurile după preț

venues.with_columns(
    pl.col("price").rank()
)
Transformarea datelor cu Polars

Clasează localurile după preț

venues.with_columns(
    pl.col("price").rank(descending=False)
)
Transformarea datelor cu Polars

Clasează localurile după preț

venues.with_columns(
    pl.col("price").rank(descending=False).alias("rank_default")
)
Transformarea datelor cu Polars

Localuri clasate

shape: (4, 7)
| business        | location    | review | price | ...   | rank_default |
| ---             | ---         | ---    | ---   | ---   | ---          |
| str             | str         | f64    | i64   | ...   | f64          |
|-----------------|-------------|--------|-------|-------|--------------|
| 7burgers        | Wakey Wakey | 4.2    | 15    | ...   | 3.0          |
| Costa Coffee    | City Point  | 4.5    | 8     | ...   | 1.5          |
| The Queens Head | Denman St.  | 4.7    | 25    | ...   | 4.0          |
| Costa Coffee    | Waterloo    | 4.1    | 8     | ...   | 1.5          |
Transformarea datelor cu Polars

Clasarea localurilor: adaugă rangul minim

venues.with_columns(
    pl.col("price").rank(descending=False).alias("rank_default"),
    pl.col("price").rank(method="min", descending=False).alias("rank_min")
)
shape: (4, 8)
| business        | ... | price | rank_default | rank_min |
| ---             | --- | ---   | ---          | ---      |
| str             | ... | i64   | f64          | i64      |
|-----------------|-----|-------|--------------|----------|
| 7burgers        | ... | 15    | 3.0          | 3        |
| Costa Coffee    | ... | 8     | 1.5          | 1        |
| The Queens Head | ... | 25    | 4.0          | 4        |
| Costa Coffee    | ... | 8     | 1.5          | 1        |
Transformarea datelor cu Polars

Ce metodă de clasare să folosim?

$$

Rang implicit
  • Rezultat în virgulă mobilă
  • Potrivit pentru analiză

$$

Rang minim
  • Rezultat de tip întreg
  • Potrivit pentru afișări top-N
Transformarea datelor cu Polars

Corelarea recenziilor utilizatorilor

user_reviews = pl.read_csv("user_reviews.csv")
shape: (4, 4)
| business        | Alice | Bob  | Charlie |
| ---             | ---   | ---  | ---     |
| str             | i64   | i64  | i64     |
|-----------------|-------|------|---------|
| 7burgers        | 9     | 6    | 8       |
| Costa Coffee    | 3     | 9    | 5       |
| The Queens Head | 9     | 7    | 9       |
| Nando's         | 7     | 8    | 8       |
Transformarea datelor cu Polars

Calcularea corelațiilor

correlations = user_reviews.select(                    )

Transformarea datelor cu Polars

Calcularea corelațiilor

correlations = user_reviews.select(pl.selectors.integer())

Transformarea datelor cu Polars

Calcularea corelațiilor

correlations = user_reviews.select(pl.selectors.integer()).corr()
correlations
shape: (3, 3)
| Alice   | Bob     | Charlie |
| ---     | ---     | ---     |
| f64     | f64     | f64     |
|---------|---------|---------|
| 1.0     | -0.913  | 0.953   |
| -0.913  | 1.0     | -0.745  |
| 0.953   | -0.745  | 1.0     |
Transformarea datelor cu Polars

Adăugarea unei coloane de utilizatori

correlations.with_columns(pl.Series("user", correlations.columns))
shape: (3, 4)
| user    | Alice   | Bob     | Charlie |
| ---     | ---     | ---     | ---     |
| str     | f64     | f64     | f64     |
|---------|---------|---------|---------|
| Alice   | 1.00    | -0.91   | 0.95    |
| Bob     | -0.91   | 1.00    | -0.74   |
| Charlie | 0.95    | -0.74   | 1.00    |
Transformarea datelor cu Polars

Sumar rapid cu .describe()

venues.select("review", "price").describe(                   )
Transformarea datelor cu Polars

Sumar rapid cu .describe()

venues.select("review", "price").describe(percentiles=[0.33, 0.67])
Transformarea datelor cu Polars

Sumar rapid cu .describe()

shape: (8, 3)
| statistic  | review   | price    |
| ---        | ---      | ---      |
| str        | f64      | f64      |
|------------|----------|----------|
| count      | 4.0      | 4.0      |
| null_count | 0.0      | 0.0      |
| mean       | 4.3      | 15.0     |
| std        | 0.391578 | 7.25718  |
| min        | 3.8      | 8.0      |
| 33%        | 4.2      | 12.0     |
| 67%        | 4.5      | 15.0     |
| max        | 4.7      | 25.0     |
Transformarea datelor cu Polars

Hai să exersăm!

Transformarea datelor cu Polars

Preparing Video For Download...