اکثر دانشمندان/تحلیلگران داده که از پایتون استفاده می کنند با pandas آشنا هستند. و اگر در زمینه علم داده فعالیت می کنید، احتمالاً زمان زیادی را صرف یادگیری نحوه استفاده از آنها برای دستکاری داده های خود کرده اید. با این حال، یکی از مشکلات اصلی pandas سرعت و ناکارآمدی آن در هنگام برخورد با مجموعه داده های بزرگ است. خوشبختانه، یک کتابخانه دیتافریم جدید وجود دارد که سعی دارد به این شکایت اصلی در مورد پانداها رسیدگی کند polars.
ماژول Polars کتابخانه دیتافریم است که به طور کامل با Rust برای پایتون و Rust نوشته شده است. در این پست، من شما را با اصول اولیه Polars و نحوه استفاده از آن به جای pandas آشنا می کنم. در پستهای بعدی، به سراغ زبان Rust میریم و با هم با استفاده از burn یک مدل شبکه عصبی از صفر راه اندازی میکنیم.
بهترین راه برای درک Polars این است که کتابخانه دیتافریم بهتری نسبت به pandas است. در اینجا برخی از مزایای Polars نسبت به pandas اشاره شده است:
در این پست صرفا به polars در پایتون میپردازیم. برای نصب به سادگی میتوانید از دستور pip استفاده کنید:
pip install polars
یا میتوانید از conda استفاده کنید:
conda install polars
در ادامه بعد از نصب برای آشنایی بیشتر یک دیتافریم میسازیم و با چند تایع ابتدایی آن کار میکنیم.
بهترین راه برای یادگیری یک کتابخانه جدید این است که دستان خود را کثیف کنید. بنابراین بیایید با وارد کردن ماژول Polars و ایجاد یک Polars Dataframe شروع کنیم:
خروجی Polars هم مانند pandas زمانی که دیتافریم در Jupyter Notebook نمایش داده می شود، به زیبایی چاپ می کند:
یک نکته مهم این است که polars نام ستونها را به صورت رشته (string) قبول میکند. کد زیر را برای نمونه نگاه کنید:
کد بالا این خطا را به همراه دارد:
ValueError: Series name must be a string.
همانطور که دید قطعه کد بالا کار کرد زیرا کلیدهای دیکشنری از نوع عدد صحیح (0 و 1) هستند. برای اینکه کار کند، باید مطمئن شوید که کلیدها از نوع رشته ای هستند ("0" و "1"):
در Polars علاوه بر نمایش نام سرصفحه برای هر ستون، نوع داده هر ستون را نیز نمایش می دهد. اگر می خواهید نوع داده هر ستون را به صراحت نمایش دهید، از ویژگی های dtypes استفاده کنید:
برای دریافت نام ستون ها، از ویژگی columns
استفاده کنید:
برای دریافت محتوای دیتافریم به عنوان لیستی از تاپل ها، از متد ()rows استفاده کنید:
در polars برخلاف pandas مفهوم index وجود ندارد. فلسفه طراحی Polars به صراحت بیان می کند که index در دیتافریم مفید نیست.
انتخاب ستون(ها) در Polars سر راست است - به سادگی نام ستون را با استفاده از روش ()select مشخص کنید:
و خروجی آن به صورت زیر میباشد:
لازم به ذکر است polars از روش براکت مربع نیز پشتیبانی می کند، روشی که اکثر توسعه دهندگان pandas با آن آشنا هستند. با این حال، مستندات برای Polars به طور خاص ذکر کرده است که روش براکت مربع یک ضد الگو برای Polars است. در حالی که میتوانید با استفاده از df[:,[0]] کارهای بالا را انجام دهید، این احتمال وجود دارد که روش نمایهسازی براکت مربع در نسخههای بعدی Polars حذف شود. برای مثال میتوانید با استفاده از کد پایین هم ستونها را انتخاب کنید.
df['Model']
اگر میخواهید تمام ستونهای عدد صحیح (مخصوصاً Int64) را در دیتافریم بازیابی کنید، میتوانید از یک عبارت در متد ()select استفاده کنید:
عبارت pl.col(pl.Int64) به عنوان یک اصطلاح در Polars شناخته می شود. این اصطلاح به این صورت تعبیر میشود: تمام ستونهایی که نوع دادهشان Int64 است را دریافت کنید. قطعه کد بالا خروجی زیر را تولید می کند:
اصطلاحات در polars بسیار قدرتمند هستند. به عنوان مثال، می توانید اصطلاحات را با هم ترکیب کنید، مانند این:
اصطلاحات بالا ستون های Model و Sales را انتخاب می کند و سپس ردیف ها را بر اساس مقادیر موجود در ستون Sales مرتب می کند:
برای انتخاب یک سطر در یک دیتافریم، شماره ردیف را با استفاده از متد ()row ارسال کنید. خروجی به صورت یک tuple میباشد:
اگر نیاز به دریافت چندین ردیف بر اساس شماره ردیف دارید، باید از روش نمایه سازی براکت مربع استفاده کنید، اگرچه این روش توصیه شده در Polars نیست. در اینجا چند نمونه آورده شده است:
برای انتخاب چند ردیف، Polars استفاده از تابع ()filter را توصیه می کند. به عنوان مثال، اگر می خواهید تمام محصولات اپل را بازیابی کنید، می توانید از عبارت زیر استفاده کنید:
همچنین می توانید با استفاده از عملگر منطقی چندین شرط را مشخص کنید:
می توانید از عملگرهای منطقی زیر در Polars استفاده کنید:
| - OR
& - AND
~ - NOT
اغلب اوقات، شما باید ردیف ها و ستون ها را همزمان انتخاب کنید. شما می توانید این کار را با زنجیر کردن متدهای ()filter و ()select مانند این انجام دهید:
اگر می خواهید ستون Sales را نیز نمایش دهید، یک لیست را به متد ()select ارسال کنید:
در این پست، من اصول اولیه Polars DataFrame را به شما نشان دادم. شما اصول استخراج سطرها و ستون ها و استفاده از متدهای ()select و ()filter را یاد گرفته اید. این پست ترجمه مقاله زیر میباشد.
https://towardsdatascience.com/getting-started-with-the-polars-dataframe-library-6f9e1c014c5c