Pandas — одна из самых популярных библиотек. Когда я искал более простой способ ускорить ее работу, я обнаружил FireDucks и заинтересовался ею!
Программа Pandas может столкнуться с серьезной проблемой производительности в зависимости от того, как она была написана. Однако, будучи специалистом по данным, я хочу тратить все больше и больше времени на анализ данных, а не на повышение производительности своего кода. Итак, было бы здорово, если бы он мог делать что-то вроде изменения порядка процессов и автоматического ускорения работы программы. Например, Процесс A =>Процесс B будет медленнее, поэтому мы заменим его на Процесс B =>Процесс A. (Разумеется, результат гарантированно будет тот же.) Говорят, что ученые, работающие с данными, тратят около 45% потратили время на подготовку данных, и когда я подумывал сделать что-нибудь для ускорения процесса, я наткнулся на модуль под названием FireDucks.
Из документации FireDucks видно, что он поддерживается только для платформ Linux. Поскольку я использую Windows на своей основной машине, я хотел бы попробовать ее из WSL2 (подсистема Windows для Linux), среды, в которой можно запускать Linux в Windows.
Я пробовал следующую среду.
WSL был установлен с помощью следующей документации Microsoft; дистрибутив Linux — Ubuntu 22.04.1 LTS.
Затем установите 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 раз быстрее по сравнению с пандами. (В следующий раз я сравню производительность с различными конкурирующими библиотеками.)
нулевая стоимость обучения
Возможность следовать точным обозначениям pandas, не задумываясь ни о чем, является огромным преимуществом. Помимо FireDucks, существуют и другие библиотеки ускорения фреймов данных, но их слишком дорого изучать и слишком легко забыть.
Например, если вы хотите добавить столбцы с полярами, вам нужно написать что-то вроде этого.
# pandas df["new_col"] = df["A"] 1 # polars df = df.with_columns((pl.col("A") 1).alias("new_col"))Практически нет необходимости изменять существующий код
У меня есть несколько ETL и других проектов, использующих pandas, и было бы неплохо увидеть улучшение производительности, просто установив и заменив оператор импорта на FireDucks.
Если вы хотите добавить его дальше, оставьте комментарий ниже.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3