«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > FireDucks: получите производительность, превосходящую возможности панд, без затрат на обучение!

FireDucks: получите производительность, превосходящую возможности панд, без затрат на обучение!

Опубликовано 6 ноября 2024 г.
Просматривать:482

Pandas — одна из самых популярных библиотек. Когда я искал более простой способ ускорить ее работу, я обнаружил FireDucks и заинтересовался ею!

Сравнение с пандами: Почему FireDucks?

Программа Pandas может столкнуться с серьезной проблемой производительности в зависимости от того, как она была написана. Однако, будучи специалистом по данным, я хочу тратить все больше и больше времени на анализ данных, а не на повышение производительности своего кода. Итак, было бы здорово, если бы он мог делать что-то вроде изменения порядка процессов и автоматического ускорения работы программы. Например, Процесс A =>Процесс B будет медленнее, поэтому мы заменим его на Процесс B =>Процесс A. (Разумеется, результат гарантированно будет тот же.) Говорят, что ученые, работающие с данными, тратят около 45% потратили время на подготовку данных, и когда я подумывал сделать что-нибудь для ускорения процесса, я наткнулся на модуль под названием FireDucks.

Из документации FireDucks видно, что он поддерживается только для платформ Linux. Поскольку я использую Windows на своей основной машине, я хотел бы попробовать ее из WSL2 (подсистема Windows для Linux), среды, в которой можно запускать Linux в Windows.

Я пробовал следующую среду.

  • ОС Microsoft Windows 11 Pro
  • Версия 10.0.22631 Сборка 22631
  • Модель системы Z690 Pro RS
  • Тип системы на базе x64
  • Процессор для ПК Intel(R) Core(TM) i3–12100 12-го поколения, 3300 МГц, 4 ядра, 8 логических процессоров
  • Базовая плата Z690 Pro RS
  • Рабочий стол платформы
  • Установленная физическая память (ОЗУ)64,0 ГБ

Установка и настройка FireDucks

Установить WSL

WSL был установлен с помощью следующей документации Microsoft; дистрибутив Linux — Ubuntu 22.04.1 LTS.

Установить FireDucks

Затем установите FireDucks. Однако его очень легко установить.
pip install fireducks

Установка FireDucks (вместе с pyarrow, pandas и другими библиотеками) займет несколько минут.

Я попробовал выполнить приведенный ниже код, скорость загрузки была очень высокой: pandas потребовалось 4 секунды, а fireDucks — всего 74,5 нс.

# 1. analysis based on time period and creative duration
# convert timestamp to date/time object
df['timestamp_converted'] = pd.to_datetime(df['timestamp'], unit='s ')

# define time period 
def get_part_of_day(hour): 
  if 5 



Вся предварительная обработка и анализ данных в Pandas заняла около 8 секунд, тогда как при использовании FireDucks их можно было завершить за 4 секунды. Можно добиться ускорения почти в 2 раза.

Улучшенная производительность

Одна из самых напряженных вещей при использовании pandas — это ожидание при загрузке больших наборов данных, а затем мне приходится ждать сложной операции, такой как groupby. С другой стороны, поскольку FireDucks выполняет отложенную оценку, сама загрузка вообще не занимает времени, поэтому обработка выполняется там, где это необходимо, и я считаю, что это очень важно, поскольку общее время ожидания значительно сокращается.

Что касается другой производительности, то, как официально заявлено организацией, кажется, что она была достигнута в 16 раз быстрее по сравнению с пандами. (В следующий раз я сравню производительность с различными конкурирующими библиотеками.)

FireDucks: Get performance beyond pandas with zero learning cost!

нулевая стоимость обучения

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

Например, если вы хотите добавить столбцы с полярами, вам нужно написать что-то вроде этого.

# pandas df["new_col"] = df["A"]   1
# polars 
df = df.with_columns((pl.col("A")   1).alias("new_col"))

Практически нет необходимости изменять существующий код

У меня есть несколько ETL и других проектов, использующих pandas, и было бы неплохо увидеть улучшение производительности, просто установив и заменив оператор импорта на FireDucks.

Если вы хотите добавить его дальше, оставьте комментарий ниже.

Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/codewithved/fireducks-get- Performance-beyond-pandas-with-zero-learning-cost-9do?1. Если есть какие-либо нарушения, пожалуйста, свяжитесь с [email protected] удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3