Комментарии 12
У Polars есть один большой плюс, важный в больщих системах. У неё НЕТ ЗАВИСИМОСТЕЙ!
Сложных системах, где используется много разных инструментов для датасаенса, начинается цирк с коням, так как очень многие зависять от numpy определённых версий.
Другими словами, если вы хотите использовать новыю версию библиотеки, может понадобиться апгрейдить практически все зависимости в системе.
Алексей, расскажите, пожалуйста, что вы имеете в виду, когда пишите "Архитектура базируется на NumPy — это ограничивает обработку больших массивов данных, помещающихся в память одного потока."
Rust позволяет эффективно управлять памятью и гарантирует отсутствие состояния гонки. - это просто общие слова, которые не имеют отношения к делу.
Если вы противопостовляете pandas + Dask и polars, надо говорить не про "Polars же написан на Rust — языке программирования, который славится своей безопасностью и высокой производительностью." - а про наличие streaming API из коробки (которое появилось не само по себе).
А вот чтобы было более честное сравнение - "Данные хранятся в колонках, так что чтение и обработка становятся более эффективными." - вы не пробовали те же тесты запустить в pandas если выбрано PyArrow в качестве сравнения? Сюда же и про mmap - оно ведь тоже не на равном месте появляется. Попробуйте так же работать с CSV или XLSX форматами :)
Что касается API, то у Polars свой собственный DataFrame API (иммутабельный, в отличие от Pandas), а еще есть поддержка SQL. У DuckDB — только SQL. А DuckDB то каким образом к pandas относится?
А в абзаце про слияние и join у вас написано про фильтрацию.
В целом вы могли бы и лучше, но явно халтурите.
Спасибо, перед проф деформация, пропустил не ту мысль. Убрал лишнее
Попробуйте так же работать с CSV или XLSX форматами :)
А что не так с .csv в Polars? Читает .csv файлы он в 3 раза быстрее.
Ещё у Поларса есть очень удобная фича, что не нужно загружать весь файл в память - можно с помощью метода scan отфильтровать тот кусок, который нужен для работы, что сильно экономит память в случае каких-то больших датасетов.
Получается что polars луче сравнивать со spark, а не pandas?
Удалено
Я не знаю как вам, но, если техлид делает бенчмаркинг и сравнивает результаты по 1 запуску, то для меня это показатель полного непрофессионализма.
Насколько я знаю, в Polars медленнее работает изменение существующего дотасета (скажем, новую строчку добавить).
Polars в десятки раз быстрее.
Датасет ~17.5 млн строк. Pandas:
df_1.iloc[-1] = ...
# 557 μs ± 2.4 μs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)
pd.concat([df, pd.Dataframe({})])
# 331 ms ± 7.77 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Polars:
pl.concat([df, pl.Dataframe({})])
# 44.2 μs ± 497 ns per loop (mean ± std. dev. of 7 runs, 10,000 loops each)
df.vstack(pl.Dataframe({}))
# 10.6 μs ± 177 ns per loop (mean ± std. dev. of 7 runs, 100,000 loops each)
Polars vs Pandas: битва титанов. Кто кого?