در قسمت اول دیدیم که چطور با اتفاده از کتابخانه 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

سایر عملوندهای منطقی که روی فیلترها کار می کنند عبارتند از | و ^ و ~ که به ترتیب معادل یا، یای انحصاری و نقیض هستند.