جستجو
Generic filters
Filter by دسته‌ها
آموزش هوش مصنوعی و انواع آن
آموزش‌های پایه‌ای هوش مصنوعی
اصول هوش مصنوعی
پایتون و ابزارهای یادگیری عمیق
کتابخانه‌ های یادگیری عمیق
یادگیری با نظارت
یادگیری بدون نظارت
یادگیری تقویتی
یادگیری عمیق
یادگیری نیمه نظارتی
آموزش‌های پیشرفته هوش مصنوعی
بینایی ماشین
پردازش زبان طبیعی
پردازش گفتار
چالش‌های عملیاتی
داده کاوی و بیگ دیتا
رایانش ابری و HPC
سیستم‌‌های امبدد
علوم شناختی
دیتاست
اخبار
رسانه‌ها
آموزش پردازش زبان طبیعی
آموزش علوم داده
اینفوگرافیک
پادکست
ویدیو
رویدادها
کاربردهای هوش مصنوعی
کسب‌و‌کار
تحلیل بازارهای هوش مصنوعی
کارآفرینی
هوش مصنوعی در ایران
هوش مصنوعی در جهان
 ۵ مثال کاربردی از متدهای loc و iloc در کتابخانه Pandas

۵ مثال کاربردی از متدهای loc و iloc در کتابخانه Pandas

Pandas یکی از انعطاف‌پذیرترین و قدرتمندترین کتابخانه‌های مورد استفاده در حوزه تحلیل و دستکاری داده‌هاست. این کتابخانه حاوی شمار کثیری تابع و متد است که به شما در بهینه‌سازی مراحل مختلف فرایند تحلیل کمک می‌کنند. متدهای loc و iloc دو مورد از مهم‌ترین متدهای موجود در کتابخانه Pandas هستند که از آن‌ها به منظور فیلتر کردن، انتخاب نمودن و دستکاری و اصلاح داده‌ها استفاده می‌شود. این متدها ما را قادر می‌سازند تا به یک یا چندین خانه مشخص از دیتاست دسترسی پیدا کنیم.

|| مسابقه هوش مصنوعی (مهلت ثبتنام تا ۱۶ آذر ۱۴۰۱)

در این مقاله، به ۵ مثال کاربردی در خصوص دو متد  loc و iloc خواهیم پرداخت که از نقطه‌نظر من طی فرایند تحلیل داده‌ها بسیار مفید می‌باشند.

در این مثال از دیتاست Melbourne housing استفاده خواهم کرد که بر روی وب‌سایت Kaggle قابل دسترس است. پیش از هر چیز باید با استفاده از تابع read_csv فایل csv حاوی داده‌ها را بخوانیم.

import numpy as np
import pandas as pd 

df = pd.read_csv("/content/melb_data.csv")

print(df.shape)
(۱۳۵۸۰, ۲۱)

df.columns

Index(['Suburb', 'Address', 'Rooms', 'Type', 'Price', 'Method', 'SellerG','Date', 'Distance', 'Postcode', 'Bedroom2', 'Bathroom', 'Car','Landsize', 'BuildingArea', 'YearBuilt', 'CouncilArea', 'Lattitude','Longtitude', 'Regionname', 'Propertycount'],

همان‌طور که مشاهده می‌کنید این دیتاست حاوی اطلاعات ۱۳۵۸۰ خانه در شهر ملبورن است که برای هر یک از آن‌ها ۲۱ ویژگی در نظر گرفته شده است.

مثال اول

یکی از تفاوت‌های loc و iloc در نحوه دسترسی پیدا کردن آن‌ها به سطرها و ستون‌های دیتاست است:

  • متد loc از لیبل یا برچسب سطر و ستون برای دسترسی به آن استفاده می‌کند.
  • متد iloc از اندیس سطر و ستون برای دسترسی به آن استفاده می‌کند.

حال بیایید از هر دو متد برای مشاهده چند سطر ابتدایی ستون Address در دیتاست استفاده کنیم و این تفاوت را در عمل ببینیم.

df.loc[:5, 'Address']  # df.loc[0:5, 'Address'] 

۰ ۸۵ Turner St 
۱ ۲۵ Bloomburg St 
۲ ۵ Charles St 
۳ ۴۰ Federation La 
۴ ۵۵a Park St 
۵ ۱۲۹ Charles St


df.iloc[:5, 1]
۰ ۸۵ Turner St 
۱ ۲۵ Bloomburg St 
۲ ۵ Charles St 
۳ ۴۰ Federation La 
۴ ۵۵a Park St

شما هم احتمالاً متوجه شده‌اید که نحوه گزینش سطر در هر دو متد مشابه است. دلیل آن این است که کتابخانه Pandas برچسب سطرها را به طور پیشفرض یک عدد صحیح درنظر می‌گیرد. بنابراین، چه از برچسب سطر استفاده کنیم و چه از اندیس آن، تفاوتی وجود نخواهد داشت. تنها تفاوت در این است که در متد loc حد بالا نیز ذکر می‌شود. شایان ذکر است که اندیس ستون‌ها نیز از صفر شروع می‌شود، بنابراین اندیس ستون Address عدد ۱ می‌باشد.

مثال دوم

برای دسترسی پیدا کردن به چندین سطر و ستون نیازی نیست که حتماً یک بازه تعریف کنیم، بلکه می‌توانیم اندیس یا برچسب سطرها و ستون‌های مدنظر را در قالب یک لیست به متدها بدهیم.

df.loc[[5,7,9], ['Address', 'Type']]

df.iloc[[5,7,9], [1,2]]

در این مثال سطرهای ۵، ۷ و ۹ از ستون‌های Address و Type را فراخوانی کردیم.

loc و iloc

مثال سوم

می‌توانیم با استفاده از متد loc یک ستون جدید در دیتاست ایجاد کنیم. در این مثال می‌خواهم ستونی به دیتاست اضافه کنم که در آن به خانه‌هایی که قیمت‌شان بالاتر از یک میلیون یورو است، عدد ۱ تعلق ‌گیرد. از آن‌جا که هر نقطه‌داده (یا هر سطر) نماد یک خانه است، بنابراین کافی است شرط مربوطه را روی ستون price اعمال کنیم.

df.loc[df.Price > 1000000, 'IsExpensive'] = 1

در این ستون که نام آن را IsExpensive گذاشته‌ام، سطرهایی که شرط مذکور را داشته باشند، حاوی عدد ۱ خواهند بود و مقدار NaN برای سایر سطرها درنظر گرفته خواهد شد.

df.loc[:4, ['Price','IsExpensive']]
loc و iloc

مثال چهارم

در متد loc می‌توان چندین شرط مختلف وارد کرد. بیایید یک ستون جدید به نام category ایجاد کنیم که از نوع h است و برای خانه‌هایی که قیمت‌شان بالاتر از ۴/۱ میلیون یورو است، مقدار Expensive House را قرار می‌دهد.

df.loc[(df.Price > 1400000) & (df.Type == 'h'), 'Category'] = 'Expensive House'

df.loc[:4, ['Price','Category']]
loc و iloc

بعداً می‌توان به مقادیر NaN را رسیدگی کرد تا مشکل‌زا نشوند. برای مثال، می‌توانید با استفاده از تابع fillna از کتابخانه Pandas خانه‌های خالی یا مقادیر گمشده را مدیریت کنید. با افزودن شروط دیگر به متد loc نیز می‌توانید مقادیر گمشده را با مقدار دلخواه جایگزین نمایید.

مثال پنجم

علاوه بر موارد قبلی، می‌توانیم با قرار دادن یک شرط در متد loc مقادیر موجود در یک ستون را به‌روزرسانی و اصلاح کنیم. برای مثال، قطعه کد زیر ۵% تخفیف روی خانه‌هایی که قیمت‌شان بالاتر از ۴/۱ میلیون یورو است، اعمال می‌کند.

df.loc[df.Price > 1400000, 'Price'] = df.Price * 0.95

df.loc[:4, ['Price','IsExpensive']]
loc و iloc

برای انجام این کار از متد iloc نیز می‌توان استفاده کرد، اما به جای نام ستون باید اندیس ستون price را به متد بدهیم. از آن‌جا که استفاده از نام یا برچسب ستون راحت‌تر از اندیس آن است، متد loc برای حل چنین مسائلی ترجیح داده می‌شود.

سخن آخر

پاکسازی و دستکاری داده‌ها یکی از مهم‌ترین وظایف هر دانشمند یا تحلیل‌گر داده‌ای است، چرا که داده‌ها در واقعیت نابسامان هستند و معمولاً فرمت مناسبی ندارند. به همین دلیل نیز استفاده از یک متد منعطف برای دسترسی یافتن به سطرها و ستون‌های دیتاست، برای به انجام رساندن پروژه‌ها در این حوزه از اهمیت فراوانی برخوردار است. متدهای loc و iloc  همان چیزی هستند که در چنین شرایطی به آن‌ها نیاز داریم.

مقاله ما چطور بود؟

میانگین امتیاز / ۵. تعداد ارا :

مطالب پیشنهادی مرتبط

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
Please enable JavaScript in your browser to complete this form.