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

با 7 روش فیلتر کردن دیتافریم های Pandas آشنا شویم

زمان مطالعه: 2 دقیقه

Pandas یک کتابخانه پایتون همه منظوره و قدرتمند است و عمدتاٌ در تحلیل داده‌ کاربرد دارد و فرایند تحلیل و کشف داده‌ها را تسریع می‌بخشد. یکی از مزایای Pandas در این است که برای انجام یک مسئله چندین روش مختلف ارائه می‌دهد. در طول فرایند تحلیل داده همیشه مجبور می‌شویم بسته به موقعیت یا با انتخاب زیرمجموعه‌ای از دیتافریم عملیات فیلتر کردن را انجام دهیم. در این نوشتار، به معرفی 7 روش فیلتر کردن دیتافریم های Pandas می‌پردازیم.

من برای انجام این پروژه از دیتاست مسکن کالیفرنیا California housing dataset استفاده می‌کنم که در پوشه نمونه‌داده در google colab قرار داده شده است.

import numpy as np
import pandas as pd
df = 
pd.read_csv("/content/sample_data/california_housing_train.csv"
,
usecols =['total_rooms','total_bedrooms','population', 'median_income','median_house_value'])
df.head()
Pandas دیتافریم های

متداول‌ترین روش برای فیلتر کردن یک دیتافریم

متداول‌ترین روش برای فیلتر کردن یک دیتافریم این است که حالت مورد نظر، برای مثال انتخاب ستون، را در کروشه قید کنیم.

#1
df[df['population'] > 10][:5]
دیتافریم های Pandas2

با اِعمال این روش فقط ستون‌هایی که جمعیت در آن‌ها بیش از 1000 است به ما نشان داده می‌شود.
با اجرای تابع nlargest می‌توانیم سطرهایی را که مقدارشان در یک ستون خاص بیشتر است فیلتر کنیم.

#2
df.nlargest(5, 'population')
دیتافریم های Pandas3

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

#3
df.nsmallest(5, 'population')
دیتافریم های Pandas4

روش دیگر برای انتخاب بزرگ‌ترین یا کوچک‌ترین مقدار یک ستون این است که سطرها را مرتب (sort) کنیم و بخشی از آن را انتخاب کنیم.

#4
df.sort_values(by='median_income', ascending=False)[:5]
دیتافریم های Pandas5

در نتیجه استفاده از این متد، دیتافریم به صورت نزولی و با توجه به ستون median_income مرتب شد و 5 سطر اول انتخاب شدند.

تابع query یکی دیگر از متدهای فیلتر کردن است که انعطاف‌پذیری بالایی دارد. query این امکان را برای شما فراهم می‌کند تا یک حالت را در قالب یک رشته (string) تعیین کنید.

#5
df.query('5000 < total_rooms < 5500')[:5]
دیتافریم های Pandas6

گاهی اوقات ممکن است بخواهیم به صورت تصادفی یک نمونه از دیتافریم های Pandas انتخاب کنیم. این عمل بیشتر به انتخاب کردن شباهت دارد تا فیلتر کردن اما ارزش آن را دارد که معرفی‌اش کنیم. تابع sample یک نمونه تصادفی با اندازه مشخص را باز می‌گرداند.

#6
df.sample(n=5)
دیتافریم های Pandas7

این نمونه شامل 5 سطر است. علاوه بر این می‌توانیم یک شی کسری (fraction) هم مشخص کنیم. برای مثال، کد زیر نمونه‌ای با اندازه 1% از دیتافریم اصلی به ما باز می‌گرداند.

df.sample(frac=0.01)

علاوه بر مواردی که گفته شد می‌توانیم طیف مشخصی از اندیس‌ها را انتخاب کنیم. این متد نیز همانند تابع sample بیشتر شبیه انتخاب کردن است تا فیلتر کردن بر مبنای یک حالت. اما در مواردی که با داده‌های ترتیبی (برای مثال داده‌های سری زمانی) سر و کار داریم می‌توان آن را روشی برای فیلتر کردن در نظر بگیریم.

این متد iloc نامیده می‌شود و سطرها و ستون‌هایی را که در طیف مشخصی از شاخص قرار دارند به ما باز می‌گرداند.

#7
df.iloc[50:55, :]
دیتافریم های Pandas8

سطرهایی با اندیس‌هایی در بازه (50:55) بازگردانده شده‌اند. در ضمن می‌توانیم فقط برخی از ستون‌ها را انتخاب کنیم.

df.iloc[50:55, :3]
دیتافریم های Pandas9

اگر توجه کردید باشید می‌بینید که اندیس سطرهایی که بازگردانده شده‌اند، تغییر نکرده است. اندیس این سطرها مشابه دیتافریم اصلی است. اگر می‌خواهید پس از فیلتر کردن یک دیتافریم جدید ایجاد کنید، ممکن است لازم باشد اندیس‌ها را reset کنید. برای انجام این کار می‌توانید از تابع reset_index کمک بگیرید.

#without reset_index
df_new = df.query('total_rooms > 5500')
df_new.head()
دیتافریم های Pandas10
#with reset_index
df_new = df.query('total_rooms > 5500').reset_index()
df_new.head()
دیتافریم های Pandas11

در این نوشتار متدهای مختلف فیلتر کردن یک دیتافریم و یا انتخاب بخشی از آن را با یکدیگر بررسی کردیم. هرچند با بسیاری از آن‌ها می‌توانید یک عملیات مشخص را انجام دهید، اما ممکن است به خاطر نحو (Syntax) یا به دلایل دیگر یکی را بر دیگری ترجیح دهید.

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

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

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

اشتراک در
اطلاع از
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها
[wpforms id="48325"]