فیلتر و مرتب‌سازی داده

انتخاب داده با شرط‌ها در pandas، استفاده از loc و iloc، ترکیب شرط‌ها و مرتب‌سازی با sort_values

چرا فیلتر و مرتب‌سازی؟

همیشه با کل داده کار نمی‌کنیم؛ گاهی فقط مشتریان تهران را می‌خواهیم، یا ۱۰ محصول پرفروش را. فیلتر یعنی انتخاب سطرهایی که شرطی دارند و مرتب‌سازی یعنی چیدن سطرها بر اساس یک ستون.

فیلتر با شرط ساده

در pandas، شرط روی ستون، یک Series از True/False می‌سازد و با آن سطرها را انتخاب می‌کنیم:

# مشتریان بالای ۳۰ سال
mask = df["age"] > 30
adults = df[mask]

# خلاصه در یک خط:
adults = df[df["age"] > 30]

عملگرهای شرطی

عملگرمعنامثال
> و >=بزرگ‌تر / بزرگ‌تر مساویdf["age"] >= 18
< و <=کوچک‌تر / کوچک‌تر مساویdf["price"] < 1000
==مساویdf["city"] == "تهران"
!=نامساویdf["status"] != "لغو"
isinعضو لیستdf["city"].isin(["تهران", "شیراز"])
betweenدر بازهdf["age"].between(20, 40)
str.containsشامل متنdf["name"].str.contains("علی")

ترکیب شرط‌ها

در پایتون معمولی از and/or استفاده می‌کنیم، اما در pandas (به‌خاطر عملکرد برداری) از عملگرهای بیتی استفاده می‌شود:

# مشتریان تهران که بالای ۳۰ سال دارند
df[(df["city"] == "تهران") & (df["age"] > 30)]

# مشتریان تهران یا شیراز
df[df["city"].isin(["تهران", "شیراز"])]
هشدار: در pandas حتماً هر شرط را داخل پرانتز بگذارید و از & و | استفاده کنید؛ and و or روی Series خطا می‌دهند!

انتخاب سطر و ستون هم‌زمان: loc و iloc

df.loc[df["age"] > 30, "name"]        # سطرهای شرط + فقط ستون name
df.loc[0:2, ["name", "age"]]          # برچسب‌محور
df.iloc[0:3, 0:2]                     # موقعیت‌محور (مثل برش لیست)

مرتب‌سازی با sort_values

# بر اساس یک ستون (نزولی)
df.sort_values("sales", ascending=False)

# بر اساس چند ستون
df.sort_values(["city", "sales"], ascending=[True, False])

# سه سطر برتر پس از مرتب‌سازی
df.nlargest(3, "sales")

بهترین شیوه‌ها

جمع‌بندی

این مبحث بخشی از دوره آموزش کامل علم داده است.

ابزارهای مرتبط