ניתוח נתונים באמצעות ספרית pandas#
לאחר שהכרנו את הספרייה NumPy, שלימדה אותנו לעבוד עם נתונים על-ידי מערכים וחישובים וקטוריים, הגיע הזמן להכיר ספרייה נוספת וחזקה במיוחד - pandas.
בעוד ש-numpy מצטיינת בעיבוד נתונים מובנים היטב ובעלי טיפוס אחיד (למשל, מטריצות של מספרים), pandas נועדה להתמודד עם נתונים טבלאיים ומגוונים – כמו גיליונות נתונים, טבלאות Excel או קבצי CSV – שבהם כל עמודה יכולה להכיל סוג מידע שונה.
סרטון הבא נסביר יותר לעומק מהי הספריה ולשם מה נועדה.
טקסט המופיע למטה בסגול מציין קטעים המופיעים בסרטון
ניתן להיעזר בו כדי לחזור על התכנים או לעיין בהם שוב.
מהי ספרית pandas?#
פנדס (pandas) היא ספרייה בפייתון שעוזרת לנו לעבוד עם נתונים טבלאיים בצורה נוחה.
אפשר לחשוב עליה כמו אקסל בתוך פייתון – היא מאפשרת לשמור, לקרוא ולערוך נתונים שמסודרים בטבלה של שורות ועמודות.
למשל, אם יש לנו קובץ עם ציונים של סטודנטים או נתונים על מחירים של מוצרים, אפשר בעזרת פנדס לנתח אותם בקלות.
ברמה הטכנית, פנדס מאפשרת לעשות הרבה דברים חשובים במעט מאוד שורות קוד: למיין נתונים, לסנן את המידע שמעניין אותנו, לחשב ממוצעים, לשלב בין כמה טבלאות ולנקות נתונים בעייתיים. זהו למעשה כלי בסיסי לאנליזות הנמצא בשימוש רחב במדעי נתונים.
המחלקה DataFrame#
ב-pandas המבנה המרכזי לעבודה עם נתונים נקרא DataFrame. מדובר מחלקה המייצגת טבלה דו־ממדית שמורכבת משורות ועמודות, בדומה לגיליון אקסל.
כל עמודה או שורה בודדת מיוצגת באמצעות אובייקט מטיפוס Series - מחלקה המייצגת סדרה חד-מימדית של נתונים.
בהרבה מובנים, ניתן לחשוב על Series כמערך חד-מימדי, ועלDataFrame כמערך דו-מימדי, כאשר המימד/הציר הראשון (axis=0) הוא השורות והציר השני (axis=1) הוא העמודות.
בניגוד לבסיסי נתונים אחרים המייצגים מטריצות, בpandas קיים הבדל מהותי בין כל עמודה וכל שורה: כיחידת נתונים, כל שורה וכל עמודה יכולה להתקיים באופן יותר טבעי בזכות עצמה.
לכן, רוב הפעולות שנבצע על טבלה יהיו, כברירת מחדל לאורך אחד מהצירים האלה - השורות או העמודות, כמו חישוב ממוצעים בעמודות או סינון של שורות לפי תנאי מסוים.
היתרונות של DataFrame לייצוג טבלה#
כבר למדנו כיצד לייצג טבלאות באמצעות מבני נתונים בפייתון. מדוע צריך כעת מבנה נתונים חדש?
נחשוב רגע על ההבדל בין מטריצה לטבלה. הערכים במטריצה הם מטיפוס נתונים אחד בלבד (בד”כ מספרים).
לעומת זאת, כל עמודה בטבלה יכולה להכיל סוג נתונים שונה: עמודה אחת יכולה להיות מספרית (לדוגמא, ציון), אחרת טקסטואלית (לדוגמא, שם), וכו’.
בנוסף, במטריצה אין ייחודיות לכל שורה ועמודה – ההתייחסות לערכים נעשית אך ורק לפי המיקום שלהם (אינדקס מספרי).
לעומת זאת, בטבלה יש משמעות נוספת לכל עמודה, מעבר למיקום.
\n”,
לעומת זאת, אם נחליף את סדר עמודות במטריצה נקבל משמעותי מתמטית שונה לחלוטין.
בנוסף, במטריצה אין משמעות מובנית לשורות או לעמודות — ההתייחסות לערכים נעשית רק לפי המיקום המספרי שלהם.
לעומת זאת, בטבלה יש שמות ייחודיים לשורות ולעמודות, המעניקים לכל עמודה משמעות ללא קשר למיקומן.
אפשר לחשוב גם על כך שבטבלת אקסל גם אחרי שנחליף סדר עמודות בטבלת אקסל, המשמעות של על עמודה תשאר בעינה.
המשמעותית הייחודית של כל שורה ועמודה באה לידי ביטוי, בין השאר, בשם ייחודי שיש לכל שורה ועמודה. לשמות השורות קוראים גם אינדקס, והן שמורות בשדה index.
שמות העמודות (או כותרת הטבלה) שמורות בשדה columns.
שימו לב!
עד עכשיו הכרנו את המילה אינדקס כמיקום.
עם זאת, מקובל גם לקרוא לשמות השורות אינדקס, גם אם אינן מספריות או אינן תואמות למיקום.
שני השימושים נפוצים, בעיקר כאשר עובדים עם ספרית pandas
ניתן גם להסתכל על טבלה כמבנה מאוד ייחודי וגמיש, הנוצר מ”הכלאה” בין רשימות למילונים.
מצד אחד היא דומה לרשימה דו־ממדית – יש בה שורות ועמודות, ואף ניתן לגשת לתאים שונים לפי המיקום שלהם (כפי שנראה בהמשך).
מצד שני, לכל שורה ועמודה יש שם - כמו במילון שיש בו מפתח - וזה מאפשר לגשת לאותם הנתונים נתונים לא רק לפי מיקום אלא גם לפי שם זה.
לסיכום:
מאפיין |
מטריצה |
טבלה (DataFrame / טבלה כללית) |
|---|---|---|
שמות לעמודות/שורות |
אין שמות, רק מיקום מספרי |
יש כותרות לעמודות ואינדקסים לשורות |
סוגי נתונים |
אחיד – כל הערכים מאותו סוג נתונים |
מגוון – לכל עמודה יכול להיות סוג נתונים שונה |
שימוש עיקרי |
חישובים מתמטיים ואלגברה ליניארית |
ניתוח וארגון נתונים מהעולם האמיתי |
גמישות |
מוגבלת – כל המטריצה מכילה טיפוס בודד |
גבוהה – אפשר לשלב מספרים, טקסט, תאריכים וכו’ |
גישה לערכים |
לפי מיקום (שורה, עמודה) |
לפי מיקום או לפי שם עמודה/שורה |
כיצד ניתן להשתמש בpandas?#
הספריה היא קוד פתוח, כלומר כל אחד יכול לראות את הקוד שלה ולהשתמש בה בחינם.
אם אתם משתמשים בסביבות כמו Anaconda ודומיה, הספרייה כבר מותקנת מראש. ולכן, על מנת להשתמש בספריה, כל שעלינו לעשות הוא לייבא אותה בתחילת התוכנית באופן הבא:
import pandas as pd
לאחר הרצת שורה זו, נוכל לגשת לכל הפונקציות והיכולות של הספרייה דרך הקיצור pd כפי שנראה ביחידות הבאות.