DuckDB против Pandas против Polars для разработчиков Python
Автор: MotherDuck
Загружено: 2023-06-01
Просмотров: 37072
В этом видео @mehdio проведёт пошаговый разбор DuckDB, Polars и Pandas. Мы обсудим основные функции и разберём практичный пример кода.
☁️🦆 Начните использовать DuckDB в облаке БЕСПЛАТНО с MotherDuck: https://hubs.la/Q02QnFR40
📓 Ресурсы
Репозиторий руководства на Github: https://github.com/mehd-io/duckdb-pan...
Видео о начале работы с DuckDB: • DuckDB Tutorial For Beginners In 12 min
➡️ Подпишитесь на нас
LinkedIn: / 8192. .
Twitter: / motherduck
Блог: https://motherduck.com/blog/
0:00 Введение
Зачем использовать DuckDB в Python с такими мощными библиотеками, как Pandas и Polars? В этом видео мы рассмотрим, когда следует использовать DuckDB вместе с этими основными инструментами, сравнивая их основные функции для конвейеров анализа данных. Мы проведём прямой бенчмарк производительности на большой задаче по обработке данных, чтобы выяснить, кто из них быстрее. Конкуренты или партнёры?
0:34 Что такое DuckDB
Как DuckDB вписывается в экосистему Python? Это быстрая внутрипроцессная OLAP-база данных, работающая непосредственно в вашем приложении — сервер не требуется. Мы рассмотрим её столбцовый движок, систему расширений для S3/JSON без дополнительных пакетов Python и встроенную поддержку Apache Arrow. Эта лёгкая однофайловая база данных упрощает работу с данными, обеспечивая при этом невероятную производительность.
2:46 Что такое Pandas
Pandas — стандарт анализа данных в Python. Мы ещё раз рассмотрим эту важнейшую библиотеку, рассмотрим её функции и эволюцию до Pandas 2.0, которая использует бэкенд Apache Arrow для значительного повышения производительности. Мы также рассмотрим её мощную поддержку таких форматов, как CSV и Parquet, и её глубокую интеграцию с библиотеками визуализации, что делает её незаменимым инструментом для работы с данными.
3:45 Что такое Polars
Polars — это новая библиотека DataFrame, написанная на Rust для высокой производительности. Она использует многопоточную архитектуру для повышения скорости, а её эффективность при работе с наборами данных, размер которых превышает объём оперативной памяти, достигается благодаря мощному механизму ленивых вычислений. Мы объясним, как ленивые вычисления оптимизируют планы запросов и сокращают потребление памяти, делая Polars одним из лучших инструментов для высокопроизводительной обработки данных.
5:12 Проект с кодом
Мы тестируем эти инструменты на реальном проекте по обработке данных: анализируем набор данных Parquet объёмом 33 миллиона строк (5 ГБ) с публикациями Hacker News. Мы рассмотрим простой конвейер ETL, который будут выполнять DuckDB, Pandas и Polars. Этот практический пример послужит основой для сравнения производительности и синтаксиса анализа больших наборов данных в Python.
6:14 Установка и зависимости
Зависимости проекта влияют на размер контейнера и удобство его поддержки. Мы сравниваем объём занимаемой памяти при установке DuckDB, Pandas и Polars. DuckDB выделяется минимальным количеством зависимостей от Python, используя автономную систему расширений для таких функций, как доступ к S3. Такая архитектура делает его лёгким дополнением для создания эффективных приложений для работы с данными.
7:18 Универсальность
Насколько гибки эти инструменты вне Python? Мы исследуем универсальность DuckDB, Pandas и Polars. DuckDB блистает благодаря клиентским API для Java и Rust. Мы также обсудим, как Apache Arrow обеспечивает обмен данными без копирования между всеми тремя. Благодаря Arrow вы можете преобразовать результат DuckDB в Polars или Pandas DataFrame с незначительным снижением производительности.
8:18 Синтаксис
Мы сравниваем опыт разработки: SQL и API DataFrame, используя фрагменты кода для тех же преобразований. DuckDB ориентирована в первую очередь на SQL, но также предлагает реляционный API на Python. Pandas и Polars в первую очередь ориентированы на DataFrame и обладают интуитивно понятными API. Мы также показываем, как DuckDB может выполнять SQL-запросы непосредственно в Pandas DataFrames, сочетая обе парадигмы.
9:26 Производительность
Результаты тестов производительности уже доступны. Мы запустили наш ETL-конвейер Hacker News на наборе данных объёмом 5 ГБ, используя DuckDB, Polars и Pandas. DuckDB оказался самым быстрым. Мы разбираем, почему Pandas выдал ошибку нехватки памяти, и как Polars добился успеха, используя свой ленивый DataFrame API. Это подчёркивает важность выбора правильного инструмента и функций для больших наборов данных.
10:43 Выводы
Каков окончательный вердикт в противостоянии DuckDB, Pandas и Polars? В нашем случае DuckDB оказался самым универсальным и производительным инструментом. Главный вывод заключается в том, что эти инструменты — партнёры, а не противники. Благодаря интеграции с Apache Arrow вы можете легко объединить их в единый конвейер обработки данных. Добавление DuckDB в ваш рабочий процесс Python — это простая установка через pip, которая предоставит вам мощный аналитический движок с минимальными накладными расходами.
#duckdbvspanda...
Доступные форматы для скачивания:
Скачать видео mp4
-
Информация по загрузке: