Menu
CoddyTech

מיון ערכים

חלק מהיחידה נתונים ותרשימים במסלול ה-Machine Learning של Coddy. שיעור 39 מתוך 60.

מי צבר הכי הרבה נקודות? מיון התשובות במבט חטוף. .sort_values("col") מסדר את השורות לפי עמודה, מהקטן לגדול; ascending=False מציב את הגדולים ביותר ראשונים:

טבלת השחקנים בסדר המקורי משמאל, ולאחר חץ, ממוינת לפי נקודות מ־31 עד 8 מימין; כל שורה שומרת על התווית שלה, ושני הראשונים, Ben ו־Dee, מסומנים באמצעות head(2)

players = pd.DataFrame({
    "player": ["Ada", "Ben", "Cy", "Dee", "Eli"],
    "points": [14, 31, 8, 22, 17],
})
top = players.sort_values("points", ascending=False)
print(top.head(2))

כך יודפסו 2 הראשונים:

  player  points
1    Ben      31
3    Dee      22

השורות לקחו איתן את התוויות שלהן: Ben שומר על התווית 1. לכן השורה הראשונה של top היא top.iloc[0], בעוד ש-top.loc[0] היא עדיין Ada.

sort_values מחזירה טבלה חדשה ומשאירה את players כפי שהיה, לכן יש לשמור את התוצאה במשתנה.

challenge icon

אתגר

בינוני

חנות אפליקציות מציגה אפליקציות בקובץ apps.csv, עם העמודות app, downloads_k (אלפים) ו-rating. התוכנית קוראת שם של עמודה ומספר n, ואז אמורה להדפיס:

  1. את n השורות עם הערכים הגדולים ביותר בעמודה הזאת, מהגדול לקטן.
  2. את Lowest: ואת האפליקציה עם הערך הקטן ביותר.

בקוד ההתחלתי יש שתי טעויות במיון. תקן את שתיהן. עבור חנות אחרת, כאשר rating ו-n = 2:

       app  downloads_k  rating
2   PetPal           88     4.9
0  Zipline          512     4.5
Lowest: Mosaic

נסו בעצמכם

import pandas as pd

apps = pd.read_csv("apps.csv")
column = input()
n = int(input())

# הקוד הזה מדפיס תשובות שגויות: תקנו אותו
apps.sort_values(column, ascending=False)
print(apps.head(n))
lowest = apps.sort_values(column, ascending=False)
print(f"Lowest: {lowest.iloc[0]['app']}")
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה נתונים ותרשימים

תרגלו בעצמכם: קומפיילר Python אונליין