Etkili sorgu yürütme

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

Liam Brannigan

Data Scientist & Polars Contributor

Eğitmeninizi tanıyın

$$

$$

  • Liam Brannigan, Kıdemli Veri Bilimci
  • ML ve Veri Mühendisliği Uzmanı
  • Polars katkıcısı

Bu dersin eğitmeni Liam Brannigan'ın fotoğrafı

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

Dizüstünden buluta

Dizüstünden buluta ölçeklenen Polars ardışık düzeni

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

Bu ders size uygun mu?

Polars ders sayfaları

  • scan_csv ile tembel bir sorgu oluşturma
  • filter, select ve group_by ile ifadeler yazma
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bölüm 1 - optimizasyon

Sorgu optimizasyonu

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

Bölüm 1 - optimizasyon

Sorgu optimizasyonu

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

Bölüm 2 - etkili G/Ç

Polars'ın birden çok dosya türünü içe alması

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

Bölüm 3 - daha zengin veri tipleri

İç içe verinin tabloya dönüştürülmesi diyagramı.

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

Bölüm 4 - ardışık düzenleri ölçekleme

Büyük bir tablonun akışla işlenmesi.

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

Chicago talepleri veri kümesi

Chicago Belediye Başkanı'nın veri analitiği ekibi

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

Veri kümesini inceleme

requests = pl.scan_csv("311_Service_Requests.csv",try_parse_dates=True)

Chicago sakinlerinin tüm hizmet taleplerini içeren dev bir veri kümesi

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

Veri kümesini inceleme

requests.collect()
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Veri kümesini inceleme

requests.collect().head(5)
shape: (5, 39)
| TYPE                          | STATUS    | DEPARTMENT     | CREATED_DATE        | ... |
| ---                           | ---       | ---            | ---                 | --- |
| str                           | str       | str            | str                 | ... |
|-------------------------------|-----------|----------------|---------------------|-----|
| Pothole in Street Complaint   | Completed | Transportation | 2019-12-16T10:09:08 | ... |
| Tree Trim Request             | Cancelled | Sanitation     | 2019-09-18T01:05:08 | ... |
| Garbage Cart Maintenance      | Completed | Sanitation     | 2021-01-24T09:14:58 | ... |
| Pothole in Street Complaint   | Completed | Transportation | 2019-03-21T10:41:01 | ... |
| Recycling Pick Up             | Completed | Sanitation     | 2021-02-16T08:28:59 | ... |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

İşlenen satırları sınırlama

requests.head(5)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

İşlenen satırları sınırlama

requests.head(5).collect()
shape: (5, 39)
| TYPE                            | STATUS    | DEPARTMENT     | CREATED_DATE        | ... |
| ---                             | ---       | ---            | ---                 | --- |
| str                             | str       | str            | str                 | ... |
|---------------------------------|-----------|----------------|---------------------|-----|
| Pothole in Street Complaint     | Completed | Transportation | 2019-12-16T10:09:08 | ... |
| Tree Trim Request | Completed | Sanitation     | 2019-09-18T01:05:08 | ... |
| Garbage Cart Maintenance        | Completed | Sanitation     | 2021-01-24T09:14:58 | ... |
| Pothole in Street Complaint     | Completed | Transportation | 2019-03-21T10:41:01 | ... |
| Recycling Pick Up               | Completed | Sanitation     | 2021-02-16T08:28:59 | ... |
  • collect çağrısını geciktirin
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bölüme göre özet sorgu

completed_by_department


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

Bölüme göre özet sorgu

completed_by_department = requests


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

Bölüme göre özet sorgu

completed_by_department = requests.filter(
    pl.col("STATUS") == "Completed"
)
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bölüme göre özet sorgu

completed_by_department = requests.filter(
    pl.col("STATUS") == "Completed"
).collect()
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bölüme göre özet sorgu

completed_by_department = requests.filter(
    pl.col("STATUS") == "Completed"
).collect().group_by("DEPARTMENT").len()
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Bölüme göre özet sorgu

completed_by_department = requests.filter(
    pl.col("STATUS") == "Completed"
).group_by("DEPARTMENT").len().collect()
shape: (10, 2)
| DEPARTMENT                     | len     |
| ---                            | ---     |
| str                            | u32     |
|-------------------------------|---------|
| 311 City Services              | 4859161 |
| Sanitation                     | 3406631 |
| Aviation                       | 2337842 |
| CDOT - Department of Transport | 1468240 |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Ayrışan sorgu dalları

completed_by_department = requests.filter(
    pl.col("STATUS") == "Completed"
).group_by("DEPARTMENT").len()
completed_by_month = requests.filter(
    pl.col("STATUS") == "Completed"
).group_by("MONTH").len()
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Ekibin bugünkü çalışma şekli

completed_by_department.collect()
completed_by_month.collect()
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Ayrışan sorguları yürütme

results = pl.collect_all(


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

Ayrışan sorguları yürütme

results = pl.collect_all([
    completed_by_department,
    completed_by_month,
])
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

Ayrışan sorguları yürütme

results[0]  # completed_by_department
shape: (10, 2)
| DEPARTMENT           | len     |
| ---                  | ---     |
| str                  | u32     |
|----------------------|---------|
| 311 City Services    | 4859161 |
| Sanitation           | 3406631 |
| Aviation             | 2337842 |
| Transport            | 1468240 |
results[1]  # completed_by_month
shape: (12, 2)
| MONTH | len  |
| ---   | ---  |
| i64   | u32  |
|-------|------|
| 1     | 2506 |
| 2     | 4566 |
| 3     | 2739 |
| 4     | 2922 |
Polars ile Veri Hatlarını Ölçeklendirme ve Optimize Etme

¡Vamos a practicar!

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

Preparing Video For Download...