کتابخانه فایرداکس: کتابخانهای شتابیافته و کاملا سازگار با پانداس

پانداس یک کتابخانه برای دستکاری دادههاست که بسیاری از افرادی که با پایتون کار میکنند از آن استفاده میکنند. این کتابخانه بهعنوان یک استاندارد شناخته میشود که بسیاری از حرفهایها از ابتدای مسیر حرفهای خود در علم داده با آن آشنا شدهاند.
اگرچه پانداس استفاده آسانی دارد، اما گاهی اوقات میتواند کند باشد. هرچه مجموعه داده بزرگتر و تحلیل پیچیدهتر باشد، سرعت اجرای پانداس کاهش مییابد. چارچوبهای متعددی بهعنوان جایگزین پانداس توسعه یافتهاند، اما بیشتر آنها بهجای تکیه بر پانداس، سیستمهای خاص خود را استفاده میکنند.
به همین دلیل، فایرداکس بهعنوان یک بهبود برای پانداس معرفی شد تا بهجای جایگزینی آن، فرآیند را شتاب بخشد.
حالا، فایرداکس چگونه کار میکند؟ بیایید با هم بررسی کنیم.
معرفی فایرداکس
فایرداکس یک کتابخانه پایتون است که بهعنوان شتابدهنده پانداس عمل میکند، نه جایگزین کامل آن. این کتابخانه با استفاده از پانداس بهعنوان پایه طراحی شده و سرعت اجرای APIهای پانداس را بهبود میبخشد.
فایرداکس از دو روش برای شتاب بخشیدن به اجرای پانداس استفاده میکند: بهینهسازی کامپایلر و چندنخی (Multithreading).
کامپایلر بهینهسازی با تبدیل برنامه پایتون به یک زبان میانی قبل از اجرا کار میکند. این تبدیل باعث میشود برنامه بدون تغییر در خروجی، سریعتر اجرا شود. زبان میانی استفادهشده در فایرداکس بهطور خاص برای DataFrameها طراحی شده و این بهینهسازی بهخوبی زمان اجرای پانداس را بهبود میبخشد.
فایرداکس همچنین با استفاده از چندنخی در پسزمینه، فرآیند را شتاب میبخشد. چندنخی به این معناست که فایرداکس میتواند از چندین هسته CPU استفاده کند تا سرعت را افزایش دهد، مشابه کاری که GPU برای افزایش سرعت محاسبات انجام میدهد.
علاوه بر این، فایرداکس از مدل اجرای تنبل (Lazy Execution) استفاده میکند. در این مدل، پردازش بهصورت دستهای انجام میشود و تنها زمانی اجرا میشود که نتایج مورد نیاز باشند. با اجرای تنبل، روشهای اصلی فایرداکس DataFrameها را مستقیماً پردازش نمیکنند، بلکه از زبان میانی که قبلاً توسط کامپایلر تولید شده استفاده میکنند. هنگامی که نتیجه مورد نیاز باشد، تمام زبانهای میانی تولیدشده بهطور همزمان اجرا میشوند.
این یک معرفی ساده به نحوه بهبود سرعت اجرا توسط فایرداکس بود. حالا بیایید آن را با کد واقعی پایتون امتحان کنیم.
پیادهسازی کد
برای شروع، بیایید کتابخانه را با استفاده از pip نصب کنیم. میتوانید این کار را با کد زیر انجام دهید:
pip install fireducks
دو روش برای پیادهسازی فایرداکس در کتابخانه پانداس وجود دارد: هوک (Hook) یا وارد کردن صریح (Explicit Import).
با استفاده از هوک، تنها کافی است فایرداکس را فعال کنیم بدون نیاز به وارد کردن آن. این کار با کد زیر انجام میشود:
%load_ext fireducks.pandas
import pandas as pd
با استفاده از هوک، میتوانیم بهراحتی پانداس را با فایرداکس جایگزین کنیم بدون تغییر در APIهای موجود.
اگر بخواهید پانداس را تغییر دهید، باید کتابخانه را بهصورت صریح وارد کنید. این کار با کد زیر انجام میشود:
import fireducks.pandas as pd
با نصب کتابخانه، بیایید فایرداکس را با کتابخانه پانداس مقایسه کنیم. خواهید دید که فایرداکس بهطور قابلتوجهی سریعتر است اما همچنان از همان APIها استفاده میکند.
برای مثال، میتوانیم دادههای نمونه تولید کنیم و تواناییهای هر دو کتابخانه را در مرتبسازی مقادیر مقایسه کنیم:
import time
import numpy as np
import pandas as pd
import fireducks.pandas as fpd
n = 1_000_000
np.random.seed(42)
data = {
"x": np.random.randint(0, 100, n),
"y": np.random.rand(n)
}
df_pandas = pd.DataFrame(data)
df_fireducks = fpd.DataFrame(data)
start_pd = time.time()
sorted_pd = df_pandas.sort_values("x")
time_pd = time.time() - start_pd
start_fd = time.time()
sorted_fd = df_fireducks.sort_values("x")
time_fd = time.time() - start_fd
print("Pandas sort time: {:.4f} sec".format(time_pd))
print("FireDucks sort time: {:.4f} sec".format(time_fd))
نتیجه بهصورت زیر است:
Pandas sort time: 0.0009 sec
FireDucks sort time: 0.0004 sec
میتوانید ببینید که فایرداکس در مقایسه با کتابخانه پانداس چقدر سریع است. شاید این تفاوت زیاد به نظر نیاید، اما با مجموعه دادههای بزرگتر و اجرای پیچیدهتر، تفاوت سرعت بسیار مشهودتر خواهد بود.
این تمام چیزی است که باید درباره فایرداکس بدانید. وقتی احساس کردید پانداس خیلی کند است، از آن استفاده کنید.
نتیجهگیری
فایرداکس یک کتابخانه پایتون است که برای شتاب بخشیدن به عملیات پانداس طراحی شده، بدون نیاز به تغییر به یک چارچوب جدید. با استفاده از بهینهسازی کامپایلر و چندنخی، فایرداکس میتواند عملکرد اجرا را بهطور قابلتوجهی بهبود بخشد.
این کتابخانه استفاده آسانی دارد زیرا نیازی به تغییر APIهای موجود ندارید. فایرداکس بهویژه برای مجموعه دادههای بزرگتر و اجرای پیچیده که ممکن است زمان زیادی برای پردازش نیاز داشته باشند، بسیار مفید است.
دیدگاهتان را بنویسید