זוכרים מה יש לנו משלב הקלט? משתנה המכיל את כל נתוני טבלת השירים.
דורון
וזוכרים מה רצינו? שתכתבו קוד שיענה על שאלות דומות לאלה שהיו בשלב הידני.
אסף
כי נרצה להציג עבור אמן או אמנית מסויימים, את השירים הנצפים ביותר שלהם.
נור
בשביל למצוא אמן או אמנית מסויימים בטבלה, אנחנו צריכים משהו שנקרא "פילטר".
דורון
מהו פילטר?
אם מעניינת אותנו אמנית ספציפית, אנחנו צריכים להשתמש במשהו שאתם אולי מכירים מאקסל, או מהחיים: פילטר (מסנן בעברית).
למשל בחלק הידני רצינו לסנן מתוך הטבלה את האמנית נועה קירל. בשביל זה כנראה פשוט חיפשתם עם העיניים את Noa Kirl (מסגרות סגולות בטבלה כאן למטה) וכך התמקדתם רק בשירים שלה:
למעשה הפעלתם פילטר על הטבלה!
עשיתם זאת באופן ידני, ובדיוק את אותו התהליך נרצה לעשות באופן ממוחשב.
באופן ממוחשב, נכיר פקודה שנקראת filter_data. היא מקבלת 3 ערכים בסוגריים:
-
הטבלה (שם המשתנה) שעליה רוצים להפעיל פילטר
-
שם הטור (במרכאות) עליו רוצים להפעיל את הפילטר
-
את הערך שלפיו רוצים לפלטר (=לסנן). גם הערך יהיה במרכאות
למשל עבור נועה קירל (בטבלת 20 השורות) זה יראה כך:
songs = read_table("https://data.cyber.org.il/OnTop/YouTube/Data/YouTube_sample.csv")
songs_noa = filter_data(songs, "artist", "Noa Kirl")
print_top(songs_noa, 5)
הדוגמה כאן למעלה חשובה אז בואו נבין אותה לעומק
-
שלחנו לפקודה filter_data משתנה-טבלה בשם songs, וקיבלנו בחזרה משתנה-טבלה בשם songs_noa
-
הטבלה songs_noa שחזרה מהפקודה filter_data היא טבלה קצרה/מצומצמת יותר מהטבלה המקורית של השירים - כי היא מכילה רק את השירים של נועה קירל
-
היא אמנם מצומצמת, אבל היא עדיין טבלה, ועם אותם טורים בדיוק. רק פחות שורות. איך אנחנו יודעים את זה? כי בסוף הדוגמה אנחנו עושים לה print_top ...
-
אפשר לראות מההדפסה שהפילטור הצליח, כי הודפס בדיוק מה שרצינו: טבלה שמכילה את כל הטורים, אבל מבחינת שורות היא מכילה רק את השירים של נועה קירל
אתם יכולים לשים לב שזו בדיוק הטבלה שקיבלנו גם כאשר עשינו פילטר ידני עם העיניים!
דורון
אגב אפשר להפעיל פילטר כזה על כל אחד מהטורים של הטבלה! לא רק על השם של האמנים.
נור
נכון, למשל אם הייתי רוצה להפעיל פילטר על טור הצפיות, כי מעניינים אותי כרגע שירים עם מספר צפיות מסוים, זה היה נראה ככה (עבור 21 מיליון צפיות):
אסף
songs_21 = filter_data(songs, "views", "21")
print_top(songs_21, 5)
אוקי נראה שאפשר להתקדם! מוכנים כבר להפעיל פילטר באופן ממוחשב?
דורון