On this page
מערך שיעור: סינון ומיון ב-Pandas
משך: 1.5 שעות אקדמיות (68 דקות).
מטרת השיעור: הסטודנטים ישלטו ב-Boolean Indexing ו-sort_values, כולל המלכודת של &/| מול and/or.
בסוף השיעור הסטודנטים צריכים: לסנן DataFrame עם תנאי בודד ומשולב, למיין לפי כמה עמודות, ולהסביר למה &/| נדרשים במקום and/or.
דגש קריטי: הדגימו את שגיאת and/or בפועל — זו השגיאה הכי נפוצה בנושא הזה, וחשוב שסטודנטים “יתקלו” בה בסביבה מבוקרת.
מהלך השיעור
| חלק בשיעור | משך | הערות ודגשים |
|---|---|---|
| פתיחה וחיבור | 5 דקות | הזכירו Where ב-LINQ — “אותו רעיון, תחביר שונה” |
| הרעיון: Boolean Indexing | 20 דקות | df[condition], הדגישו Series של True/False |
| הבעיה: and/or נכשל | 10 דקות | הדגימו שגיאה בפועל |
| &/ | נכון | 15 דקות |
| sort_values | 13 דקות | עמודה בודדת ואז רב-שכבתי |
| תרגול מודרך | 5 דקות | תרגיל 1+2 |
דגשים להעברת השיעור
- הדגמת שגיאת
and/orהיא ליבת השיעור — אל תסתפקו בהסבר “צריך & ולא and”, תנו לסטודנטים לראות את הודעת השגיאה עצמה (“truth value of a Series is ambiguous”) ולהבין למה היא קורית. - קישרו במפורש ל-
Whereמיחידת LINQ (C#) — “זה אותו רעיון בדיוק שכבר תרגלתם, רק תחביר אחר לגמרי”. - מיון רב-שכבתי (
sort_values(["A","B"])) שווה דוגמה משלו עם נתונים שממחישים את זה בבירור (למשל שתי שורות עם אותו ClassName, ציונים שונים).
מושגים
Boolean Indexing — סינון עם מסכת True/False.
&/| — “וגם”/“או” ל-Series, לא and/or.
sort_values — מיון, עם ascending לכיוון.
תרגיל חשיבה
שאלת פתיחה: “אם תכתבו df[df['Age'] >= 18 and df['Score'] > 80] (עם and רגיל) — מה אתם חושבים יקרה?”
מהלך: תנו לסטודנטים לנחש — רובם יצפו שזה “פשוט יעבוד”. הפתיעו אותם עם השגיאה בפועל, והסבירו: and בפייתון בודק אמת/שקר על ערך בודד, לא Series שלמה — פייתון לא יודע “להחליט” אם Series שלמה היא אמת או שקר (כי יש בה גם True וגם False בו-זמנית), ולכן זורק שגיאה.
מה המרצה מראה בסוף: הריצו את שתי הגרסאות זו אחרי זו — עם and (שגיאה) ואז עם & בסוגריים נכונים (עובד) — על אותם תנאים בדיוק. ההבדל הישיר בין כישלון להצלחה מבסס את הכלל הרבה יותר מהסבר תיאורטי.