کتابخانه Pandas یکی از محبوبترین ابزارها برای تحلیل دادهها در زبان Python است. قلب این کتابخانه، ساختار DataFrame است که امکان مدیریت و تحلیل دادهها را به شکل انعطافپذیر و کارآمد فراهم میکند. یکی از ویژگیهای کلیدی Pandas، روشهای مختلف و قدرتمند دسترسی به دادههاست که در ادامه بهصورت حرفهای بررسی میکنیم.
۱) دسترسی به ستونها
در DataFrame، ستونها بهعنوان Seriesهایی ذخیره میشوند که بهراحتی میتوانید به آنها دسترسی داشته باشید:
برای دسترسی به یک ستون خاص، کافی است نام آن را بهعنوان کلید استفاده کنید:
دسترسی به یک ستون
df['column_name']
اگر نام ستون با قواعد نامگذاری متغیرهای Python سازگار باشد، میتوانید از این روش نیز استفاده کنید:
df.column_name
دسترسی به چند ستون
برای دسترسی همزمان به چند ستون، از یک لیست استفاده کنید:
df[['column1', 'column2']]
۲) دسترسی به سطرها
الف) دسترسی بر اساس موقعیت عددی با iloc
اگر بخواهید به سطر یا سلول خاصی بر اساس موقعیت عددی (ایندکس) دسترسی پیدا کنید، از iloc
استفاده کنید:
df.iloc[0] # اولین سطر
df.iloc[0:3] # سطرهای ۰ تا ۲
df.iloc[0, 1] # مقدار موجود در سطر اول و ستون دوم
ب) دسترسی بر اساس برچسبها با loc
برای دسترسی به دادهها بر اساس برچسب (Label) سطرها یا ستونها، روش loc
مناسب است:
df.loc['row_label'] # دسترسی به یک سطر خاص
df.loc[:, 'column_name'] # دسترسی به یک ستون خاص
df.loc['row_label', 'column_name'] # دسترسی به مقدار خاص
پ) دسترسی بر اساس برچسبها با loc
یکی از قدرتمندترین قابلیتهای Pandas، فیلترگذاری سطرها با استفاده از شرطهای منطقی است:
df[df['column_name'] > 10] # نمایش سطرهایی که مقدار ستون بیشتر از ۱۰ باشد
ترکیب شرطها نیز امکانپذیر است:
df[(df['col1'] > 10) & (df['col2'] < 20)] #AND شرط
df[(df['col1'] > 10) | (df['col2'] < 20)] #OR شرط
۳) دسترسی به زیردیتافریمها
برای دسترسی به بخشی خاص از DataFrame، میتوانید از روشهای زیر استفاده کنید:
استفاده از iloc
و loc
:
df.iloc[0:5, 1:3] # سطرهای ۰ تا ۴ و ستونهای ۱ و ۲
df.loc['row1':'row3', 'col1':'col3'] # بر اساس برچسبها
استفاده از توابع خاص:
query
برای اعمال فیلترها:
df.query('col1 > 10 and col2 < 20')
filter
برای انتخاب ستونهای خاص:
df.filter(items=['col1', 'col2'])
۴) دسترسی به مقادیر خاص
با استفاده از برچسبها:
df.at['row_label', 'column_name'] # دسترسی سریع بر اساس برچسب
با استفاده از موقعیت عددی:
df.iat[0, 1] # دسترسی سریع بر اساس موقعیت عددی
۵) مدیریت ایندکسها
برای تحلیل بهتر دادهها، گاهی نیاز به تنظیم یا تغییر ایندکسها دارید:
- تنظیم یک ستون بهعنوان ایندکس:
df.set_index('column_name', inplace=True)
- ریست ایندکس به حالت پیشفرض:
df.reset_index(inplace=True)
مقایسه سرعت روشهای مختلف دسترسی به دادهها در Pandas
یکی از فاکتورهای مهم در انتخاب روش دسترسی به دادهها در Pandas، سرعت اجرا است. در ادامه، عملکرد روشهای مختلف را از نظر سرعت بررسی میکنیم:
۱) روشهای iloc
و loc
:
این روشها برای دسترسی به دادهها بر اساس موقعیت عددی (iloc
) و برچسبها (loc
) استفاده میشوند. هرچند این روشها بسیار انعطافپذیر هستند، اما به دلیل سربار پردازشی مرتبط با جستجوی موقعیت یا برچسب، سرعت کمتری نسبت به روشهای مستقیمتر دارند. زمان دسترسی معمولاً بین ۵ تا ۱۵ میلیثانیه برای هر عملیات است.
۲) روشهای iat
و at
:
اگر به دنبال دسترسی سریع به یک مقدار خاص هستید، iat
(برای موقعیت عددی) و at
(برای برچسب) بهترین گزینهها هستند. این روشها به دلیل اجرای مستقیم و کمترین سربار، کمتر از ۱ میلیثانیه برای دسترسی به یک مقدار زمان میبرند، که آنها را به سریعترین روشها تبدیل میکند.
۳) فیلترگذاری با شرطهای منطقی:
برای دسترسی به مجموعهای از سطرها که شرایط خاصی را برآورده میکنند، میتوانید از فیلترهای شرطی استفاده کنید. این روشها معمولاً زمان دسترسی بین ۲۰ تا ۵۰ میلیثانیه دارند، که بسته به اندازه DataFrame و پیچیدگی شرط میتواند متغیر باشد.
۴) استفاده از query
:
روش query
زمانی مفید است که بخواهید شرایط پیچیده را با خوانایی بالا اعمال کنید. با این حال، این روش به دلیل تبدیل عبارات به رشته و پردازش بیشتر، نسبت به فیلترگذاری مستقیم کندتر است و معمولاً بین ۵۰ تا ۱۰۰ میلیثانیه زمان میبرد.
نتیجهگیری
- برای دسترسی به مقادیر خاص، استفاده از
iat
وat
به دلیل سرعت بالا و کارایی بهتر توصیه میشود. - در فیلترگذاری دادهها، روشهای شرطی مستقیم سریعتر عمل میکنند، اما اگر خوانایی کد برای شما مهمتر است،
query
انتخاب بهتری خواهد بود. - انتخاب روش مناسب باید با توجه به اندازه DataFrame و نوع دسترسی مورد نیاز انجام شود.