משך: 2 שעות אקדמיות (90 דקות).

מטרת השיעור: הסטודנטים יתחילו לעבוד עם DataFrame/Series, ויבינו את ההבדל בין iloc ל-loc.

בסוף השיעור הסטודנטים צריכים: לטעון נתונים עם read_csv, לגשת לנתונים עם iloc/loc נכון, ולהשתמש ב-head/info/describe לסקירה ראשונית.

דגש קריטי: זו הפעם הראשונה שסטודנטים כותבים פייתון “אמיתי” (מעבר לConsumer הבסיסי מיחידת NoSQL) — אל תניחו רקע syntax כלל.


מהלך השיעור

חלק בשיעורמשךהערות ודגשים
פתיחה וחיבור5 דקותהזכירו את הConsumer בפייתון מיחידת Kafka — “היום נעמיק בפייתון”
syntax בסיסי (אם נדרש)15 דקותdict, list comprehension בקצרה אם הכיתה זקוקה
הרעיון: DataFrame20 דקותטבלה בזיכרון, קישרו ל-DbSet מיחידת EF Core
read_csv/json15 דקותטעינה ממקורות שונים
iloc מול loc25 דקותהדגישו הבדל אחרי סינון/מיון
head/info/describe10 דקותשגרת בדיקה ראשונית
תרגול מודרך10 דקותתרגיל 1+2

דגשים להעברת השיעור

  • אם הכיתה חסרת רקע Python כלל, שקלו 10-15 דקות syntax-primer לפני DataFrame עצמו — לא להניח שכולם מכירים dict/list comprehension.
  • ההבדל .iloc/.loc הוא מלכודת קלאסית — הדגימו אותה אחרי סינון (לא לפני), כי לפני סינון הם לרוב זהים ומטשטשים את ההבדל.
  • קישרו DataFrame ל-DbSet<T> מיחידת EF Core בקצרה — “טבלה בזיכרון, בלי DB אמיתי מאחוריה” — אנלוגיה מהירה שכבר מוכרת.

מושגים

DataFrame — טבלה דו-ממדית בזיכרון. Series — עמודה בודדת. .iloc — גישה לפי מיקום מספרי. .loc — גישה לפי תווית.


תרגיל חשיבה

שאלת פתיחה: “יש לכם DataFrame עם 10 שורות, סיננתם אותו לרק 3 שורות שנשארו (עם אינדקסים מקוריים 2, 5, 8). מה .iloc[0] יחזיר? ומה .loc[0]?”

מהלך: תנו לסטודנטים לחשוב לפני שעונים. התשובה: .iloc[0] מחזיר את השורה הראשונה בתוצאה המסוננת (זו עם אינדקס מקורי 2) — כי iloc הוא תמיד לפי מיקום נוכחי. .loc[0] ינסה למצוא שורה עם תווית 0 בדיוק — וזו לא קיימת יותר בתוצאה המסוננת (האינדקסים 2,5,8 בלבד) — שגיאה!

מה המרצה מראה בסוף: הריצו את התרחיש בדיוק כמו בשאלה — סננו DataFrame, ואז הריצו .iloc[0] (עובד, מחזיר שורה) ו-.loc[0] (שגיאת KeyError אם אינדקס 0 לא בתוצאה) בשידור חי. השגיאה בפועל מבססת את ההבדל טוב יותר מכל הסבר.