جدید آموزش پردازش داده با pandas در پایتون قسمت 2
در قسمت اول دیدیم که چطور با اتفاده از کتابخانه pandas در پایتون می توانیم به محتویات یک فایل اکسل دسترسی پیدا کنیم و آن را نمایش دهیم. حالا قصد داریم این اطلاعات را برش بزنیم و فیلتر کنیم. اگر فایلهای اکسل و csv را دانلود نکرده اید از لینک های انتهای همین نوشته دانلود کنید و در فولدری که برنامه پایتون را ذخیره کرده اید قرار دهید.
در ابتدا دیتافریم را آماده می کنیم:
import pandas as pd myfile = 'Salaries.xlsx' mydata=pd.read_excel(myfile)
برش زدن داده ها در pandas
برای اینکه با تعدادی از ستونهای دلخواه موجود در دیتا فریم کار کنیم می توانیم مثل زیر عمل نماییم:
print(mydata[['Name','Level']].head(2))
خروجی دستور فوق به این صورت نمایش داده خواهد شد:
Name Level 0 Ayda 5 1 Peyman 3
برای اینکه بتوانیم تعدادی از سطرهای پشت سر هم را هم انتخاب کنیم از الگوی دستور زیر پیروی می کنیم:
print(mydata[['Name','Level']][3:5])
در اینجا فقط ردیف های 3 و 4 نمایش داده می شوند:
Name Level 3 Behrooz 4 4 Simin 3
فیلتر کردن داده ها در pandas
فرض کنید که می خواهیم ببینیم چند نفر مالیات 10 درصدی و چند نفر مالیات 5 درصدی می پردازند. برای این کار از دستور زیر استفاده می کنیم:
print(mydata['Tax %'].value_counts())
با اجرای این دستور خواهیم دید که 7 نفر مالیات 5 درصدی و 3 نفر مالیات 10 درصدی می پردازند:
5 7 10 3 Name: Tax %, dtype: int64
برای پیدا کردن ردیف هایی که حقوق ماهانه کمتر از 5 دارند کافی است از دستور زیر استفاده کنیم:
lowincome=mydata['Salary']<5 print(lowincome)
که نتیجه را به شکل زیر نمایش خواهد داد:
0 False 1 False 2 True 3 False 4 False 5 False 6 True 7 False 8 True 9 True Name: Salary, dtype: bool
در صورتی که از دستور loc به شکل زیر استفاده کنیم:
lowincome=mydata['Salary']<5 print(mydata.loc[lowincome,:])
نتیجه به شکل دیگری ظاهر خواهد شد:
Name Salary Tax % Experience Level 2 Farzad 4 5 2 2 6 Kaveh 3 5 5 2 8 Ehsan 2 5 1 1 9 Shiva 3 5 5 2
ترکیب فیلترها در pandas
فرض کنید که می خواهیم کارمندانی را که سابقه آنها بیشتر از 2 سال است ولی همچنان حقوقشان کمتر از 5 است را پیدا کنیم. به این منظور باید فیلترهایمان را با کمک & ترکیب کنیم:
lowincome=mydata['Salary']<5 highexperience=mydata['Experience']>2 print(mydata.loc[lowincome & highexperience,:])
نتیجه ترکیب فیلتر به این صورت خواهد بود:
Name Salary Tax % Experience Level 6 Kaveh 3 5 5 2 9 Shiva 3 5 5 2
سایر عملوندهای منطقی که روی فیلترها کار می کنند عبارتند از | و ^ و ~ که به ترتیب معادل یا، یای انحصاری و نقیض هستند.