| Параметр | SQL | Pandas |
|---|---|---|
| Куда писать | SQL: внутри БД (server-side) | pandas: в Python-приложении (client-side) |
| Скорость на 10M строк | SQL: быстро (БД оптимизирует) | pandas: медленнее (тащит данные в RAM) |
| Скорость на 100K строк | SQL: сопоставимо | pandas: сопоставимо |
| JOIN-ы | SQL: ✅ оптимизирован | pandas: ✅ merge() (всё в RAM) |
| groupby + agg | SQL: ✅ GROUP BY | pandas: ✅ .groupby().agg() |
| Кастомная Python-логика | SQL: ❌ ограниченно (UDF) | pandas: ✅ .apply(lambda) |
| Время разработки | SQL: медленнее (нужны JOIN-нюансы) | pandas: быстрее (Python flexibility) |
| Воспроизводимость отчёта | SQL: ✅ один query | pandas: ⚠️ нужен Python-скрипт |
| Версионирование | SQL: dbt + git | pandas: notebook + git |
SQL — без него на собесе вылетишь сразу. Аналитик данных = тот, кто пишет SELECT. pandas — следующий шаг после освоения базы SQL (3-4 недели практики).
Можно, но не нужно. Тянуть 100М строк из БД в Python — это медленно и memory-expensive. Лучше: SQL фильтрует/агрегирует в БД, pandas финально обрабатывает результат.
На больших данных (>10М) — SQL (БД с индексами обгонит). На маленьких (<1М) — сопоставимо. Главный вопрос — где данные физически: тащить их в RAM Python expensive.
Семантически — то же самое (INNER/LEFT/OUTER через how=). Технически: pandas грузит обе таблицы в память, SQL делает hash/merge join внутри БД. Для 100М строк pandas упадёт с OOM, SQL отработает.
Postgresql vs Clickhouse · Pandas vs Polars · Tableau vs Powerbi Datalens Superset · Dbt vs Airflow