Собесов

Сценарий: когда брать Dask, когда Polars, когда хватит pandas

PythonВекторизация и performanceСредняяMiddle

Условие

Объясни различия pandas / Dask / Polars и матрицу выбора: «если у меня X ГБ данных и Y задача — что брать».

Решение

Сравнение

pandas Dask Polars
Модель в памяти, один поток партиции pandas, ленивый граф, многопоток/кластер Rust, lazy, многопоток на одной машине
Лимит данных ~1/3 RAM до петабайт на кластере до RAM (но эффективнее pandas в 5–10 раз)
API известный почти pandas свой (похож на Spark)
Когда брать <1 ГБ интерактивно >RAM + кластер 1–100 ГБ на одной машине, быстрее всего

Матрица выбора

  • < 1 ГБ, EDA → pandas. Не оптимизируйте.
  • 1–10 ГБ, одна машина → polars (или pandas + чанки). Polars быстрее в 5–10×.
  • 10–500 ГБ, одна большая машина → polars lazy + parquet.
  • >500 ГБ или кластер → Dask / Spark / DuckDB.
  • Single-file аналитика на parquet → DuckDB (duckdb.sql("...").df()).

Polars lazy пример

import polars as pl
 
q = (
    pl.scan_parquet('events.parquet')
      .filter(pl.col('country') == 'RU')
      .group_by('user_id')
      .agg(pl.col('amount').sum())
)
 
df = q.collect()  # план оптимизируется (push-down filter, projection)

Dask пример

import dask.dataframe as dd
 
ddf = dd.read_parquet('s3://bucket/events/*.parquet')
result = ddf.groupby('user_id')['amount'].sum().compute()

Подводные камни

  1. Dask не быстрее pandas на маленьких данных — overhead на граф. Точка перехода — около RAM.
  2. Polars API не совместим с pandas: select, with_columns, group_by — заново учить. Зато гораздо консистентнее.
  3. У Dask есть знаменитое «shuffle expensive»: groupby по высокой кардинальности в кластере = боль. Полезно set_index заранее.
  4. Polars не любит много мелких parquet — компактьте в файлы по 256 МБ–1 ГБ.
  5. Для интерактивного анализа на parquet часто проще всего DuckDB — SQL прямо по файлу, выигрывает по UX.

Эталонный ответ

До 1 ГБ — pandas. 1–100 ГБ на одной машине — polars lazy. Кластер/петабайты — Dask/Spark. SQL по parquet — DuckDB.

Хочешь увидеть разбор?

Зарегистрируйся бесплатно — откроется развёрнутое решение этой задачи и ещё 4 на выбор.

Зарегистрироваться и увидеть разбор
Уже есть аккаунт? Войти