Polars 2.0: потоковый движок по умолчанию ускоряет запросы в 5 раз

Pre-Release of Polars 2.0

Polars 2.0: потоковый движок по умолчанию ускоряет запросы в 5 раз

Вышел первый релиз-кандидат Polars 2.0. Главное изменение — все запросы LazyFrame теперь по умолчанию выполняются на потоковом движке, что значительно улучшает использование памяти и производительность (ожидается ускорение до 5 раз). Также Polars становится строже: проверки типов и длин при конкатенации теперь вызывают ошибки вместо тихого приведения, а устаревшие методы и параметры удалены с понятными сообщениями об ошибках. Для перехода опубликовано полное руководство по миграции.

Мы надеемся, что этот релиз будет скучным для вас.
  1. benrutter

    Мы не стремимся сделать большое релизное обновление Polars 2.0. На самом деле мы надеемся, что оно будет скучным для вас. Причина, по которой мы повышаем мажорную версию, в том, что мы можем избавиться от дизайнерских решений, принятых в прошлом, которые сейчас нас блокируют, и затем мы хотим изменить значения по умолчанию на более разумные настройки, которые принесут пользу более широкой аудитории.

    Я знаю, что этот взгляд выставляет меня очень скучным человеком, но мне нравится видеть, как проекты серьезно относятся к semver! Повышение версий действительно должно быть об удалении устаревшего хлама, а не о блестящих новых функциях.

    Я пользуюсь polars уже некоторое время, и их фокус на стабильности был большой частью того, что убедило меня совершить этот переход изначально!

  2. perrygeo

    Для меня суперсила polars — это стабильность в продакшене.

    Pandas склонен переносить все проблемы на этап выполнения, со всевозможными скрытыми эвристиками. Особенно в отношении типов столбцов и пропущенных значений. Очень трудно понять, протестировали ли вы все крайние случаи. Единственный способ протестировать свой код — бросить в него все варианты данных. Это нормально, если вы сидите за ноутбуком и у вас есть терпение проверять и «чистить» данные за него. Не очень хорошо, если вас будят в 3 часа ночи, потому что ваш конвейер данных упал, когда ожидал столбец int, а получил float.

    Polars более строг по умолчанию и переносит затраты на этап планирования. Получающиеся приложения заметно более стабильны в продакшене. Вы можете тестировать код с разумной уверенностью, что он будет работать на реальных данных.

    Мне не очень интересны эргономика API или синтаксис — оба нормальны. Все дело в том, как они обрабатывают вариации данных во время выполнения. Можно ли написать общий код, который не ломается на вариантах? Pandas — ни шанса. Polars — абсолютно!

    Бонус: у polars есть также Rust API, и компилятор может эффективно доказать, что ваша программа обрабатывает каждый крайний случай. Обычно пишут Rust-приложения на polars, которые работают без присмотра годами.

  3. trombonechamp

    Есть ли причина, кроме производительности, по которой maintain_order=False по умолчанию? Я спрашиваю, потому что polars используется во многих научных конвейерах анализа данных, а недетерминированное поведение — хорошо задокументированный источник ошибок в научных вычислениях (например, https://pmc.ncbi.nlm.nih.gov/articles/PMC6919963/). Новое значение по умолчанию требует, чтобы пользователи держали в голове детали реализации API, определяя, корректен ли код. Это сложно в научных вычислениях, потому что правильный ответ заранее неизвестен, поэтому ошибки могут проскочить и молча дать неверные результаты.

  4. bbstats

    Меня ужасно раздражает, что «Use instead: .cat.to(dtype) for int → categorical, .cat.physical() for categorical → int.» не содержит необходимого примера кода!

  5. lmeyerov

    Переход к потоковой обработке и в целом к обработке данных, не помещающихся в память, — это здорово.

    Недавно мы добавили бэкенд Polars в GFQL (графовые запросы в стиле Cypher на датафреймах, без БД), как для CPU, так и для GPU, и это супер впечатляет. Заметные улучшения по сравнению с pandas/cudf, и это позволило GFQL обойти популярные системы в большем количестве категорий, таких как низкая задержка, а не только большие наборы данных: https://www.graphistry.com/blog/cypher-on-polars-cpu-gpu-gra...

  6. bobson_dugnutt5

    Я люблю polars. Много занимался евангелизацией на работе, чтобы люди отказались от pandas в пользу него.

  7. Kydlaw

    Рад видеть активность вокруг Polars. Это моя основная библиотека для обработки данных из-за улучшенной эргономики по сравнению с Pandas и SQL.

    Но в последнее время они были довольно тихими, и я начал все больше присматриваться к DuckDB... пока не произошло недавнее приобретение DuckLab компанией AWS.

  8. arn3n

    Решение использовать потоковый движок по умолчанию действительно интересно. Моя интуиция подсказывает, что это будет медленнее, чем другие операции с датафреймами, которые лучше параллелизуются при пакетной обработке, потому что потоковые движки обрабатывают строки последовательно. Моя интуиция неверна, или я переоцениваю степень автоматического параллелизма в polars?

Ещё за этот день

2026-09-03