Kategorik ve Enum veri tiplerini kullanma

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Liam Brannigan

Data Scientist & Polars Contributor

Tekrarlayan dizgileri kodlama

Tekrarlayan dizgiler bulunan etkinlik başlığı ve bölge sütunlu bir tablo diyagramı.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Tekrarlayan dizgileri kodlama

Sayılarla kodlanmış dizgiler içeren, etkinlik başlığı ve bölge sütunlu bir tablo diyagramı.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Tekrarlayan etiketlere sahip bir veri seti

events = pl.read_parquet("chicago_events.parquet")
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Tekrarlayan etiketlere sahip bir veri seti

events["area"].value_counts(sort=True).head(5)
shape: (5, 2)
| area          | count |
| ---           | ---   |
| str           | u32   |
|-------------  |-------|
| Loop          | 35982 |
| West Loop     | 27432 |
| Andersonville | 24660 |
| Downtown      | 24320 |
| Pullman       | 21985 |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik bir sütun oluşturma

events_cat = events.with_columns(
    pl.col("area").cast(pl.Categorical)
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik bir sütun oluşturma

events_cat.select("event_title","area").head()
shape: (5, 2)
| event_title        | area          |
| ---                | ---           |
| str                | cat           |
|--------------------|---------------|
| Folk Festival      | Andersonville |
| Fireworks Night    | Downtown      |
| Greektown Market   | West Side     |
| Rail History Day   | Pullman       |
| Grant Park Concert | Loop          |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik bir sütun oluşturma

events_cat.select("event_title","area").with_columns(
    pl.col("area").to_physical().alias("physical")
).head(3)
shape: (3, 3)
| event_title        | area          | physical |
| ---                | ---           | ---      |
| str                | cat           | u32      |
|--------------------|---------------|----------|
| Folk Festival      | Andersonville | 0        |
| Fireworks Night    | Downtown      | 1        |
| Greektown Market   | West Side     | 2        |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik bir ifade kullanma

events_cat.select("event_title","area",
    pl.col("area").cat.starts_with("West").alias("westside"),
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik bir ifade kullanma

events_cat.select("event_title","area",
    pl.col("area").cat.starts_with("West").alias("westside"),
).filter(pl.col("westside")).head(2)
shape: (2, 3)
| event_title             | area      | westside |
| ---                     | ---       | ---      |
| str                     | cat       | bool     |
|-------------------------|-----------|----------|
| Greektown Market        | West Side | true     |
| West Loop Chef Showcase | West Loop | true     |
  • Diğer string işlemleri → tekrar String'e çevirin
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Kategorik ve Enum

Sayılarla kodlanmış dizgiler içeren, etkinlik başlığı ve bölge sütunlu bir tablo diyagramı.

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bir Enum sütunu oluşturma

area_enum = pl.Enum([
    "Albany Park",
    "Andersonville",
    ...
    "West Loop",
    "West Side",
    "Wicker Park",
])
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bir Enum sütunu oluşturma

events_enum = events.with_columns(
    pl.col("area").cast(area_enum)
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bir Enum sütunu oluşturma

events_enum.select("event_title", "area").head()
shape: (5, 2)
| event_title                  | area           |
| ---                          | ---            |
| str                          | enum           |
|------------------------------|----------------|
| Greektown Market             | West Side      |
| Folk Festival                | Andersonville  |
| West Loop Chef Showcase      | West Loop      |
| Rail History Day             | Pullman        |
| Fireworks Night              | Downtown       |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Enum veri tipini inceleme

events_enum.schema["area"]
Enum(categories=['Albany Park', 'Andersonville', 'Chinatown', 'Downtown', ...])
  • Sabit sözlük için Enum
  • Değişken sözlük için Kategorik
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Enum bellek verimliliği

events_enum.select("event_title","area").with_columns(
    pl.col("area").to_physical().alias("physical")
).head(3)
shape: (3, 3)
| event_title        | area          | physical |
| ---                | ---           | ---      |
| str                | enum          | u8       |
|--------------------|---------------|----------|
| Folk Festival      | Andersonville | 1        |
| Fireworks Night    | Downtown      | 3        |
| Greektown Market   | West Side     | 16       |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Hadi pratik yapalım!

Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Preparing Video For Download...