فیلتر کردن داده ها در پانداها

ساخت وبلاگ

فیلتر کردن داده ها از یک قاب داده یکی از رایج ترین عملیات هنگام تمیز کردن داده ها است. Pandas طیف گسترده ای از روش ها را برای انتخاب داده ها با توجه به موقعیت و برچسب سطرها و ستون ها ارائه می دهد. علاوه بر این، Pandas همچنین به شما اجازه می دهد تا زیر مجموعه ای از داده ها را بر اساس انواع ستون ها به دست آورید و ردیف ها را با نمایه سازی بولی فیلتر کنید.

در این مقاله، رایج ترین عملیات برای انتخاب زیرمجموعه ای از داده ها از فریم داده پانداها را پوشش می دهیم: (1) انتخاب یک ستون به برچسب، (2) انتخاب چندین ستون بر اساس برچسب، (3) انتخاب ستون ها بر اساس نوع داده.، (4) انتخاب یک سطر با برچسب، (5) انتخاب چند سطر بر اساس برچسب، (6) انتخاب یک سطر بر اساس موقعیت، (7) انتخاب چند سطر بر اساس موقعیت، (8) انتخاب سطر و ستون به طور همزمان، (9)) انتخاب یک مقدار اسکالر، و (10) انتخاب سطرها با استفاده از انتخاب بولی.

علاوه بر این، ما چندین نمونه کدنویسی را ارائه خواهیم کرد! حالا بیایید شروع کنیم :) ❤️

مجموعه داده ها

در این مقاله از مجموعه داده های کوچکی برای اهداف یادگیری استفاده می کنیم. در دنیای واقعی، مجموعه داده های به کار گرفته شده بسیار بزرگتر خواهد بود. با این حال، روش های مورد استفاده برای فیلتر کردن داده ها یکسان باقی می مانند.

چارچوب داده حاوی اطلاعاتی درباره 10 کارمند یک شرکت است: (1) شناسه، (2) نام، (3) نام خانوادگی، (4) بخش، (5) تلفن، (6) حقوق، و (7) نوع قرارداد.

1. انتخاب یک ستون واحد توسط برچسب

برای انتخاب یک ستون واحد در پانداها، می توانیم از هر دو استفاده کنیم. عملگر و عملگر [].

انتخاب یک ستون بر اساس برچسب

→ df[رشته]

کد زیر با استفاده از هر دو روش (نقطه نویسی و پرانتز مربع) به ستون حقوق دسترسی دارد.

همانطور که در بالا نشان داده شده است، هنگامی که یک ستون بازیابی می شود، نتیجه یک شی سری است. برای به دست آوردن یک شی DataFrame هنگام انتخاب تنها یک ستون، باید به جای فقط یک رشته، یک لیست را با یک آیتم ارسال کنیم.

علاوه بر این، مهم است که در نظر داشته باشیم که وقتی نام ستون حاوی فاصله است، نمی توانیم از نماد نقطه برای دسترسی به ستون خاصی از یک قاب داده استفاده کنیم. اگر این کار را انجام دهیم، یک SyntaxError مطرح می شود.

2. انتخاب چندین ستون بر اساس برچسب

می توانیم چندین ستون از یک قاب داده را با قرار دادن در لیستی با نام ستون ها به صورت زیر انتخاب کنیم.

انتخاب چندین ستون بر اساس برچسب

→ df[list_of_strings]

همانطور که در بالا نشان داده شد، نتیجه یک شی DataFrame است که فقط شامل ستون های ارائه شده در لیست است.

3. انتخاب ستون ها بر اساس نوع داده

ما می توانیم از روش pandas. dataframe. select_dtypes استفاده کنیم (شامل = هیچ کدام ، حذف = هیچ) برای انتخاب ستون ها بر اساس انواع داده های آنها. این روش لیست یا یک نوع داده واحد را در پارامترها می پذیرد و شامل و حذف می شود. این مهم است که در نظر داشته باشید که حداقل یکی از این پارامترها (شامل یا حذف) باید تهیه شود و آنها نباید حاوی عناصر همپوشانی باشند.

انتخاب ستون ها بر اساس نوع داده

→ df. Select_Dtypes (شامل = هیچ ، حذف = هیچ)

در مثال زیر ، ستون های عددی (اعم از عدد صحیح و شناور) قاب داده را با عبور در شیء np. number به پارامتر شامل انتخاب می کنیم. از طرف دیگر ، ما می توانیم با ارائه شماره "شماره" به عنوان ورودی ، نتایج مشابهی را بدست آوریم.

همانطور که مشاهده می کنید ، روش select_dtypes () یک شیء dataframe از جمله dtypes را در پارامتر شامل و به استثنای dtypes در پارامتر Exclude برمی گرداند.

همانطور که قبلاً ذکر شد ، روش select_dtypes () می تواند هر دو رشته و اشیاء numpy را به عنوان ورودی در نظر بگیرد. جدول زیر رایج ترین روشهای مراجعه به انواع داده ها در پاندا را نشان می دهد.

به عنوان یک یادآوری ، می توانیم انواع داده ستون ها را با استفاده از روش pandas. dataframe. info یا با ویژگی pandas. dataframe. dtypes بررسی کنیم. سابق خلاصه ای از قاب داده ، از جمله نام ستون و انواع داده های آنها را چاپ می کند ، در حالی که دومی یک سری را با نوع داده هر ستون برمی گرداند.

4- انتخاب یک ردیف با برچسب

DataFrames و سری لزوماً شاخص های عددی ندارند. به طور پیش فرض ، شاخص یک عدد صحیح است که موقعیت ردیف را نشان می دهد. با این حال ، همچنین می تواند یک رشته الفبایی باشد. در مثال فعلی ما ، فهرست شماره شناسه کارمند است.

برای انتخاب یک ردیف واحد بر اساس شماره شناسه ، می توانیم از indexer . loc [] استفاده کنیم که به عنوان یک رشته واحد (نام فهرست) ارائه می شود.

انتخاب یک ردیف توسط برچسب

→ df. loc [رشته]

کد زیر نحوه انتخاب کارمند را با شماره شماره 478 نشان می دهد.

همانطور که در بالا نشان داده شده است ، هنگامی که یک ردیف واحد انتخاب می شود ، . loc [] Indexer یک شی سری را برمی گرداند. با این حال ، ما همچنین می توانیم با انتقال یک لیست تک عنصر به روش . loc [] به شرح زیر ، یک DataFrame تک ردیف را بدست آوریم.

5. انتخاب چندین ردیف با برچسب

ما می توانیم چندین ردیف را با شاخص . loc [] انتخاب کنیم. علاوه بر یک برچسب واحد ، ایندکسر همچنین به عنوان یک لیست ورودی یا یک قطعه از برچسب ها می پذیرد.

انتخاب چندین ردیف توسط برچسب

→ df. loc [list_of_strings]

→ df. loc [slice_of_strings]

در مرحله بعد ، ما زیر مجموعه ای از قاب داده های خود را که شامل کارمندان با شماره 478 و 222 به شرح زیر است ، به دست می آوریم.

توجه کنید که ، شاخص نهایی روش . loc [] همیشه گنجانده شده است ، به این معنی که انتخاب شامل آخرین برچسب است.

6. انتخاب یک ردیف به صورت موقعیت

ایندکسر . ILOC [] برای نمایه کردن یک قاب داده بر اساس موقعیت استفاده می شود. برای انتخاب یک ردیف واحد با ویژگی . ILOC [] ، در موقعیت ردیف (یک عدد صحیح) به ایندکسر منتقل می شویم.

انتخاب یک ردیف به صورت موقعیت

→ df. iloc [Integer]

در بلوک زیر کد ، ردیف را با فهرست 0 انتخاب می کنیم. در این حالت ، ردیف اول DataFrame بازگردانده می شود زیرا در نمایه سازی پاندا از 0 شروع می شود.

علاوه بر این ، ایندکسر . ILOC [] همچنین از اعداد صحیح منفی (شروع ا ز-1) به عنوان موقعیت های نسبی تا انتهای قاب داده پشتیبانی می کند.

همانطور که در بالا نشان داده شده است ، هنگامی که یک ردیف واحد انتخاب می شود ، indexer . iloc [] یک شیء سری را برمی گرداند که دارای نام ستون به عنوان فهرست است. با این حال ، همانطور که با شاخص . loc [] انجام دادیم ، می توانیم با انتقال یک لیست تک مشخصه به روش زیر ، یک DataFrame را نیز بدست آوریم.

سرانجام ، به خاطر داشته باشید که هنگام تلاش برای دسترسی به شاخصی که خارج از مرز است ، یک indexerror مطرح می شود.

7. انتخاب چندین ردیف بر اساس موقعیت

برای استخراج چندین ردیف بر اساس موقعیت ، ما یک لیست یا یک شیء برش را به شاخص . iloc [] منتقل می کنیم.

انتخاب چندین ردیف بر اساس موقعیت

→ df. iloc [list_of_integers]

→ df. iloc [slice_of_integers]

بلوک کد زیر نحوه انتخاب پنج ردیف اول قاب داده را با استفاده از لیست اعداد صحیح نشان می دهد.

از طرف دیگر ، ما می توانیم با استفاده از نماد برش ، نتایج مشابهی را بدست آوریم.

همانطور که در بالا نشان داده شده است ، قوانین برش پایتون (فاصله نیمه باز) برای ویژگی . ILOC [] اعمال می شود ، به این معنی که شاخص اول گنجانده شده است ، اما شاخص نهایی نیست.

8. انتخاب ردیف ها و ستون ها به طور همزمان

تا کنون ، ما یاد گرفته ایم که چگونه می توان ردیف ها را در یک قاب داده با استفاده از برچسب یا موقعیت با استفاده از شاخص های . loc [] و . Iloc [] انتخاب کرد. با این حال ، هر دو شاخص نه تنها قادر به انتخاب ردیف ها هستند ، بلکه به طور همزمان ردیف ها و ستون ها نیز هستند.

برای انجام این کار ، ما باید برچسب ها و موقعیت های ردیف و ستون را به شرح زیر ارائه دهیم:

انتخاب ردیف ها و ستون ها به طور همزمان

→ df. loc [row_labels ، column_labels]

→ df. iloc [row_positions ، column_positions]

جایی که row_labels و column_labels می توانند یک رشته واحد ، لیستی از رشته ها یا یک تکه رشته باشند. به همین ترتیب ، row_positions و column_positions می توانند یک عدد صحیح ، لیست اعداد صحیح یا یک قطعه عدد صحیح باشند.

مثالهای زیر نحوه استخراج ردیف ها و ستون ها را به یکباره با استفاده از شاخص های . loc [] و . Iloc [] نشان می دهد.

حقوق کارمند با شماره شناسه 478 را بر اساس موقعیت و برچسب به روش زیر انتخاب می کنیم.

در این حالت خروجی هر دو نمایه ساز یک عدد صحیح است.

  • انتخاب یک سطر و چندین ستون

نام، نام خانوادگی و حقوق کارمند با شماره شناسه 478 را با پاس دادن یک مقدار به عنوان آرگومان اول و فهرستی از مقادیر به عنوان آرگومان دوم انتخاب می کنیم و در نتیجه یک شیء Series به دست می آوریم.

  • انتخاب سطرها و ستون های ناهمگون

برای انتخاب چندین سطر و ستون، باید دو لیست از مقادیر را به هر دو ایندکسر ارسال کنیم. کد زیر نحوه استخراج نام و نام خانوادگی و حقوق کارمندان با شماره شناسه 478 و 222 را نشان می دهد.

برخلاف قبل، خروجی هر دو نمایه ساز یک شی DataFrame است.

  • انتخاب سطرها و ستون های پیوسته

ما می توانیم ردیف ها و ستون های پیوسته قاب داده را با استفاده از نماد slice استخراج کنیم. قطعه کد زیر نحوه انتخاب نام، نام خانوادگی و حقوق کارمندان با شماره شناسه 128، 478، 257 و 299 را نشان می دهد.

همانطور که در بالا نشان داده شده است، ما فقط از نماد slice برای استخراج ردیف های قاب داده استفاده می کنیم زیرا اعداد شناسه ای که می خواهیم انتخاب کنیم پیوسته هستند (شاخص های 0 تا 3).

مهم است که به یاد داشته باشید که نمایه ساز . loc[] از یک بازه بسته استفاده می کند و هم برچسب شروع و هم برچسب توقف را استخراج می کند. برعکس، نمایه گر . iloc[] از یک بازه نیمه باز استفاده می کند، بنابراین مقدار در شاخص توقف لحاظ نمی شود.

9. انتخاب یک مقدار اسکالر با استفاده از اندیس کننده های . at[] و . iat[]

همانطور که در بالا ذکر شد، می توانیم یک مقدار اسکالر را با ارسال دو رشته/عدد صحیح که با کاما از هم جدا شده اند به فهرست کننده های . loc[] و . iloc[] انتخاب کنیم. علاوه بر این، Pandas دو تابع بهینه را برای استخراج یک مقدار اسکالر از یک شی قاب داده ارائه می کند: عملگرهای . at[] و . iat[]. اولی یک مقدار واحد را با برچسب استخراج می کند، در حالی که دومی به یک مقدار واحد بر اساس موقعیت دسترسی پیدا می کند.

انتخاب یک مقدار اسکالر بر اساس برچسب و موقعیت

→ df. at[رشته، رشته]

→ df. iat[عدد صحیح، عدد صحیح]

کد زیر نحوه انتخاب حقوق کارمند با شماره شناسه 478 را بر اساس برچسب و موقعیت با نمایه گرهای . at[] و . iat[] نشان می دهد.

ما می توانیم از تابع جادویی %timeit برای محاسبه زمان اجرای هر دو دستور پایتون استفاده کنیم. همانطور که در زیر نشان داده شده است، عملگرهای . at[] و . iat[] بسیار سریعتر از نمایه سازهای . loc[] و . iloc[] هستند.

مقالات آموزش فارکس...
ما را در سایت مقالات آموزش فارکس دنبال می کنید

برچسب : نویسنده : بهزاد فراهانی بازدید : <-PostHit-> تاريخ : دوشنبه 25 ارديبهشت 1402 ساعت: 12:37