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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

df.sample(frac=0.01)

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

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

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

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

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 هم چنین قابلیتی دارد.

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

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

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