panda

מבוא לניתוח נתונים בPython ולספריית Pandas

איך ניגשים לניתוח נתונים בשפת הסקריפטים הפופולארית ביותר בעולם 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' החדשה שנוצרה לאחר שאיפסנו את האינקס בחזרה. 

 

  1.  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)


				
			

כעת, שאנחנו יודעים כבר את הבסיס,

מוזמנים לקרוא בנושא פונקציות שאתם חייבים להכיר.

במידה ותרצו לתרגל תרגיל מלא בדרגות קושי שונות בנושא טיטאניק, מוזמנים להכנס לאתר

 

אהבת את המאמר?

שיתוף ב facebook
שתף בפייסבוק
שיתוף ב twitter
שתף ב - Twitter
שיתוף ב linkedin
שתף ב- Linkdin
שיתוף ב whatsapp
שתף ב - Whatsapp

השאר תגובה

4.5 8 הצבעות
Article Rating
Subscribe
Notify of
guest
4 Comments
Oldest
Newest Most Voted
Inline Feedbacks
הצג את כל התגובות
Tomer

הסברים מעולים

[…] ל pandas, לפני המעבר על הפונקציות מטה, מוזמנים לקרוא את המאמר […]

[…] ל pandas, לפני המעבר על הפונקציות מטה, מוזמנים לקרוא את המאמר […]

[…] מנת להבין טיפה יותר אודות pandas מוזמנים לקרוא את המאמר מבוא ל pandas .בנוסף, מוזמנים לקרוא בנושא פונקציות שאתם חייבים […]

אולי יעניין אותך גם