איך ניגשים לניתוח נתונים בשפת הסקריפטים הפופולארית ביותר בעולם Python? ואיך נעשה שימוש בספריית Pandas לניתוח ועיבוד נתונים במהירות?
שוק כלי ניתוח הנתונים הוא רחב מאוד וכולל מספר רב של פלטפורמות לניתוח של נתונים מסוגים שונים ובסדרי גודל שונים.
החל מטבלאות אקסל המסורתיות ועד לשפות תכנות מקצועיות לעיבוד של Big Data (כדוגמת Scala ו Spark).
Python הפכה בשנים האחרונות לשפה הפופולארית ביותר לניתוח נתונים בזכות מספר אלמנטים:
- הגמישות והקלילות שהשפה מאפשרת למשתמש. לדוגמא המרת טיפוסי נתונים והגדרה פשוטה של פונקציות.
- עקומת למידה מהירה. Python קלילה ללימוד גם עבור אלו שאין להם ניסיון בתכנות או שפות אחרות. לרוב, עבור ניתוח נתונים בסיסי לא נדרש ידע מתקדם בשפה או בהנדסת תוכנה (למשל OOP).
- מספר ספריות חזקות במיוחד המנגישות לנו אובייקטים ופונקציות שימושיות לניתוח נתונים. במאמר זה נתמקד בספרייה הפופולארית והמרכזית: Pandas
מהי Pandas?
הסבר כללי על פנדס
Pandas היא ספריית Python המספקת יכולות רב עוצמה של מניפולציה וניתוח נתונים. הוא בנוי על גבי ספריית NumPy ונועד לעבוד עם נתונים במגוון פורמטים, כולל CSV, Excel, מסדי נתונים של SQL ועוד.
מעוניינים לקרוא על פונקציות שאתם חייבים להכיר? מוזמנים להכנס לאתר
אקוסיסטם של כלים
אי אפשר לדבר וללמוד את Pandas מבלי להזכיר את Numpy ואת MatplotLib.
מדובר בשתי ספריות נהדרות אשר Pandas עושה שימוש באובייקטים שלהן באופן דיפולטי.
Numpy – היא ספרייה לעיבוד מידע מתמטי. באמצעותה נבצע פעולות חשבוניות בסיסיות ומורכבות על גביי הנתונים.
בנוסף Numpy מממשת עבורנו אוביקטים שימושים לרבות Numpy.Array אשר משמש כמערך פשוט בדומה למערכים הרגילים של השפה וכן ndarray וmatrix המאפשרים להכיל מידע רב-מימדי ולבצע עליהם פעולות מתמטיות.
Pandas משתמש בNumpy על מנת לבצע חישובים ולהחזיק מידע. בהמשך נראה כמה קל להפוך np.array לpandas DataFrame או Series.
np.array([1, 2, 3])
array([1, 2, 3])
Matplotlib – ספריית ויזואליזציה פופולארית. מאפשרת ליצור גרפים של נתונים במספר קטן של שורות קוד.
Pandas עושה שימוש בספרייה באמצעות פקודת plot. בהמשך נראה כיצד לייצר ויזואליזציה של נתונים ישר מתוך pandas.
צעדים ראשונים בPandas
ראשית נדאג לייבא את Pandas ונקפיד לייבא גם את Numpy על פי הקונבנציה הבאה:
Import pandas as pd
Import numpy as np
Series
Series היא מערך חד-מימדי של נתונים.
d = ['I','Love','Python','3']
mySeries = pd.Series(data = d)
print(mySeries)
>>>
0 I
1 Love
2 Python
3 3
מכאן אנו מבינים ש-Series היא מעין מערך שמכיל מידע בIndex בדומה לעמודה המוגדרת בSQL.
Series יכולה להיות עמודה או שורה בתוך טבלה ובעולם של Pandas כחלק מDataFrame:
DataFrame
DataFrame הוא ייצוג של טבלה דו-מימדית המכילה עמודות ושורות בדומה לטבלאות שאנו מכירים ב-SQL:
d = {'col1': ['I','Love','Python','3']
,'col2': ['Pandas','is', 'the', 'best']
,'col3': [11,25,36,98]}
df = pd.DataFrame(data=d)
print(df)
>>>
DataFrame הוא אובייקט גמיש ביותר אשר יכול לקבל כקלט: רשימות, מילונים, מערכים ואף קבצים כמו CSV וJSON.
בנוסף, עלינו להגדיר שמות לעמודות. במקרה זה שמות העמודות נגזרות מתוך הkeys של המילון, וה-values הם הרשומות.
כפי שהוזכר קודם, כל DataFrame בנוי מעמודות המכילות את שם העמודה ואת ערכיה, ובPandas היא מוגדרת כאובייקט Series. כלומר ניתן להפוך מספר Series לDataFrame וכמובן להתייחס לעמודה אחת כ-Series.
Selection של עמודות ספציפיות בDataFrame:
לעיתים רבות נרצה לבחור עמודות ספציפיות מתוך DataFrame בדיוק כפי שהיינו עושים זאת בSQL:
SELECT col1, col3
FROM table
שימו לב כי השימוש בסוגריים מרובעים היא הדרך להגדיר חיתוך של עמודות עבור DataFrame, את את העמודות עצמן יש להחזיר כרשימה, ולכן סוגרים מרובעים נוספים.
df[['col1','col3']]
>>>
אם נבחר רק עמודה אחת ונעטוף בסוגריים מרובעים נקבל Series בדומה לזו שהגדרנו קודם לכן:
כאשר נבחר עמודה אחת ונעטוף את העמודה בתוך רשימה, נקבל DataFrame של עמודה אחת:
שני אלמנטים מרכזיים כאשר עובדים עם DataFrame:
Index – באופן דיפולטיבי האינדקס מוגדר לפי כמות הרשמות (אשר מתחיל לספור מאפס). ניתן להגדיר את אחת העמודות כאינדקס באמצעות המתודה:
()set_index ולאפס אותו באמצעות ()reset_index
הערה: שימו לב לעמודת 'index' החדשה שנוצרה לאחר שאיפסנו את האינקס בחזרה.
- Axis – בדומה לשפת SQL שבה ישנן פעולות אותן נבצע על טבלה באופן אופקי כמו JOIN ואנכי כמו UNION, גם על DataFrame נרצה לבצע שלל פעולות כגון חיבורים, חיתוכים, הפעלת פונקציות ועוד.
לשם כך יש להגדיר על פעולות שכאלה את ציר העבודה:
axis=0 (שהוא הציר הדיפולטיבי) עבור פעולות אופקיות (בדומה לJOIN)
axis=1 עבור פעולות אנכיות (בדומה לUNION)
בPandas ישנן מספר מתודות לחיבור בין טבלאות עליהן נרחיב בפוסט ייעודי: Join, Merge, Concat
לדוגמא: נוכל לחבר שני DataFrames לאורכם ולרוחבם:
d1 = {'col1': ['I','Love','Python','3']
,'col2': ['Pandas','is', 'the', 'best']
,'col3': [11,25,36,98]}
d2 = {'col1': [1,2,3,4]
,'col2': ['a','b','c','d']}
df1 = pd.DataFrame(d1)
df2 = pd.DataFrame(d2)
נשתמש ב- pd.concat על מנת לחבר את שני הDataFrames שיצרנו ע"פ העמודות המשותפות באופן אנכי:
pd.concat([df1,df2],axis=0)
כעת נדגים את אותה פעולה בדיוק לפי ציר אנכי: (שימו לב לכך שהעמודות לא מתלכדות)
pd.concat([df1,df2],axis=1)
כעת, שאנחנו יודעים כבר את הבסיס,
מוזמנים לקרוא בנושא פונקציות שאתם חייבים להכיר.
במידה ותרצו לתרגל תרגיל מלא בדרגות קושי שונות בנושא טיטאניק, מוזמנים להכנס לאתר
הסברים מעולים
[…] ל pandas, לפני המעבר על הפונקציות מטה, מוזמנים לקרוא את המאמר […]
[…] ל pandas, לפני המעבר על הפונקציות מטה, מוזמנים לקרוא את המאמר […]
[…] מנת להבין טיפה יותר אודות pandas מוזמנים לקרוא את המאמר מבוא ל pandas .בנוסף, מוזמנים לקרוא בנושא פונקציות שאתם חייבים […]