Smart-World Surf

יחידה 10: עבודה עם מקורות נתונים חיצוניים

קריאת נתונים מקבצים שונים וממשקי API.
קריאת CSV/Excel/JSONממשקי API (requests library)בסיסי נתונים (SQL basics)

ברוכים הבאים ליחידה "עבודה עם מקורות נתונים חיצוניים" בקורס "תכנות וניתוח נתונים בשפת פייתון". בעולם הנתונים המודרני, היכולת לאסוף, לקרוא ולעבד מידע ממגוון מקורות חיצוניים היא מיומנות חיונית. יחידה זו תצייד אתכם בכלים הדרושים כדי להתמודד עם אתגר זה, החל מקריאת קבצים נפוצים כמו CSV, Excel ו-JSON, דרך אינטראקציה עם ממשקי API, ועד ליסודות העבודה עם בסיסי נתונים. הבנה מעמיקה של נושאים אלו תאפשר לכם לבנות יישומים חזקים ויעילים לניתוח נתונים, ותכין אתכם היטב לשאלות מעשיות ותיאורטיות במבחן.

מבוא לעבודה עם נתונים חיצוניים בפייתון

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

מקור נתונים חיצוני: כל מקור מידע שאינו חלק מזיכרון התוכנית הפעילה, כגון קבצים במערכת הקבצים, שרת אינטרנט המציע API, או בסיס נתונים מרוחק.

קריאת קבצים נפוצים: CSV, Excel ו-JSON

שלושה מפורמטי הקבצים הנפוצים ביותר לעבודה עם נתונים הם CSV, Excel ו-JSON. לכל אחד מהם מבנה ושימושים אופייניים, ופייתון מציעה דרכים יעילות לקרוא ולנתח אותם. במבחן, צפו לשאלות שידרשו מכם לבחור את הפורמט המתאים לתרחיש נתון, או לכתוב קוד לקריאת נתונים מפורמט ספציפי.

קריאת קבצי CSV

קובצי CSV (Comma Separated Values) הם פורמט טקסט פשוט לאחסון נתונים טבלאיים, כאשר כל שורה מייצגת רשומה, והערכים בכל שורה מופרדים באמצעות פסיקים (או מפריד אחר).

  • ניתן לקרוא באמצעות מודול csv המובנה בפייתון.
  • לרוב, עדיף להשתמש בספריית pandas ובפונקציה pd.read_csv() לקריאה מהירה ויעילה יותר, המאפשרת גם טיפול קל בנתונים חסרים וסוגי נתונים.
CSV (Comma Separated Values): פורמט קובץ טקסט פשוט לאחסון נתונים טבלאיים, שבו כל שורה היא רשומה וערכים מופרדים באמצעות תו מפריד (לרוב פסיק).

קריאת קבצי Excel

קובצי Excel (בפורמטים .xls או .xlsx) הם פורמט נפוץ לאחסון נתונים טבלאיים מורכבים, הכוללים גיליונות מרובים, עיצוב, נוסחאות ועוד.

  • ספריית pandas מציעה את הפונקציה pd.read_excel(), שהיא הדרך המומלצת לקרוא קבצי Excel בפייתון. היא דורשת התקנת ספריות עזר כמו openpyxl או xlrd.
  • מאפשרת בחירת גיליון ספציפי לקריאה, דילוג על שורות ועוד.

קריאת קבצי JSON

JSON (JavaScript Object Notation) הוא פורמט קל משקל להחלפת נתונים, קריא לאדם וקל לניתוח על ידי מכונות. הוא מבוסס על מבנה של זוגות מפתח-ערך ואוספים (מערכים).

  • מודול json המובנה בפייתון מאפשר לטעון מחרוזות או קבצי JSON לאובייקטי פייתון (מילונים ורשימות) באמצעות json.load() ו-json.loads().
  • pd.read_json() מ-pandas יכולה גם היא לקרוא קבצי JSON, במיוחד כאשר הנתונים מובנים בצורה טבלאית.
JSON (JavaScript Object Notation): פורמט טקסט פתוח וסטנדרטי להעברת נתונים המבוסס על זוגות מפתח-ערך ומערכים, קל לקריאה וכתיבה על ידי בני אדם וקל לניתוח על ידי מכונות.

CSV

פורמט טקסט פשוט, קל לקריאה וכתיבה. אידיאלי לנתונים טבלאיים בסיסיים ללא מבנה היררכי מורכב. חסרונות: אין תמיכה בסוגי נתונים מובנים, קשה לטפל בנתונים מורכבים.

Excel

פורמט עשיר עם תמיכה בגיליונות מרובים, עיצוב, נוסחאות. נפוץ מאוד בסביבות עסקיות. חסרונות: קובץ בינארי, דורש ספריות חיצוניות, יכול להיות כבד. לא אידיאלי לאוטומציה בקנה מידה גדול.

JSON

פורמט היררכי, גמיש מאוד, אידיאלי להעברת נתונים בין שירותי אינטרנט (APIs). תומך במבנים מורכבים של מילונים ורשימות. חסרונות: פחות אינטואיטיבי לנתונים טבלאיים פשוטים מאוד.

ממשקי API וספריית requests

ממשקי API (Application Programming Interfaces) מאפשרים לתוכנות שונות לתקשר זו עם זו. ממשקי Web API, ובפרט RESTful APIs, הם הדרך הנפוצה ביותר לגשת לנתונים ושירותים דרך האינטרנט. ספריית requests של פייתון היא הסטנדרט בפועל לביצוע בקשות HTTP. במבחן, צפו לשאלות הדורשות כתיבת קוד לבקשת API, ניתוח תגובה, וטיפול בשגיאות.

API (Application Programming Interface): סט של הגדרות ופרוטוקולים המאפשרים לתוכנות לתקשר זו עם זו.
בקשת HTTP: בקשה הנשלחת מלקוח (לדוגמה, דפדפן או סקריפט פייתון) לשרת אינטרנט, המבקשת לבצע פעולה מסוימת (לדוגמה, לקבל נתונים).

ביצוע בקשות GET

בקשות GET משמשות לאחזור נתונים משרת.

  • requests.get(url): שולחת בקשת GET לכתובת ה-URL הנתונה.
  • התגובה (response) מכילה את הנתונים, קוד סטטוס (לדוגמה, 200 OK), וכותרות.
  • ניתן לגשת לתוכן ה-JSON של התגובה באמצעות response.json().

טיפול בפרמטרים ואימות

  • ניתן להעביר פרמטרים לבקשה באמצעות מילון params ב-requests.get().
  • עבור API הדורשים אימות, ניתן להשתמש בשיטות שונות כמו מפתחות API (API Keys) או אסימוני OAuth, לרוב על ידי העברתם בכותרות (headers) או כפרמטרים.
טיפול בשגיאות ו-Rate Limiting ב-API: כאשר עובדים עם ממשקי API, חיוני לטפל בשגיאות בצורה נכונה (לדוגמה, קודי סטטוס 4xx או 5xx). בנוסף, רוב ממשקי ה-API מפעילים הגבלת קצב (Rate Limiting) כדי למנוע עומס יתר. אי טיפול נכון עלול להוביל לחסימת הגישה שלכם ל-API. במבחן, ייתכן שתתבקשו לכתוב קוד המטפל בתרחישי שגיאה נפוצים. מומלץ לבדוק את קוד הסטטוס של התגובה וליישם לוגיקת ניסיון חוזר (retry logic) עם השהייה (backoff) במקרה של שגיאות או חריגה מהמגבלות.

יסודות עבודה עם בסיסי נתונים (SQL)

בסיסי נתונים הם עמוד השדרה של יישומים רבים, ומספקים דרך מאורגנת ויעילה לאחסון, ניהול ושליפה של כמויות גדולות של נתונים. SQL (Structured Query Language) היא השפה הסטנדרטית לתקשורת עם בסיסי נתונים יחסיים. הבנה בסיסית של SQL היא הכרחית לכל מדען נתונים או מתכנת. במבחן, צפו לשאלות הדורשות כתיבת שאילתות SQL בסיסיות.

בסיס נתונים: אוסף מאורגן של מידע מובנה, או נתונים, המאוחסן בדרך כלל באופן אלקטרוני במערכת מחשב.
SQL (Structured Query Language): שפת תכנות סטנדרטית המשמשת לניהול וטיפול בנתונים בבסיסי נתונים יחסיים.

חיבור לבסיס נתונים וביצוע שאילתות

  • פייתון יכולה להתחבר למגוון רחב של בסיסי נתונים באמצעות מודולים ייעודיים (לדוגמה, sqlite3 עבור SQLite, psycopg2 עבור PostgreSQL).
  • התהליך כולל יצירת חיבור, יצירת אובייקט "סמן" (cursor), ביצוע שאילתות SQL באמצעות cursor.execute(), ושליפת התוצאות באמצעות cursor.fetchone() או cursor.fetchall().

פקודות SQL בסיסיות

  • SELECT: משמשת לשליפת נתונים מטבלה אחת או יותר.
    SELECT column1, column2 FROM table_name WHERE condition;
  • FROM: מציינת מאיזו טבלה לשלוף נתונים.
  • WHERE: מסננת רשומות על בסיס תנאי מסוים.
  • מצאתם טעות או שחסר משהו?