Menu
CoddyTech

ערכים חסרים

חלק מהיחידה נתונים ותרשימים במסלול ה-Machine Learning של Coddy. שיעור 45 מתוך 60.

בנתונים אמיתיים יש פערים: חיישן מתקלקל, ומפספסים את quiz. pandas מסמנת כל תא ריק בתור NaN, „לא מספר”:

טבלה של ארבעה תלמידים ושני מבחנים, ובה שלושה תאים ריקים המסומנים NaN: בן פספס את quiz1, וסיי ודי פספסו את quiz2. למטה, מספר הפערים בכל עמודה: 0, 1 ו־2

רוב המודלים אינם מקבלים NaN, לכן ספרו תחילה את החוסרים. .isna() מסמן כל אחד מהם כ-True, ו-.sum() סופר אותם:

scores = pd.DataFrame({
    "name": ["Ana", "Ben", "Cy", "Dee"],
    "quiz1": [8, np.nan, 7, 9],  # np.nan הוא ערך חסר
    "quiz2": [6, 5, np.nan, np.nan],
})
print(scores.isna().sum())

הדבר מדפיס:

name     0
quiz1    1
quiz2    2
dtype: int64

לאחר מכן בחר: dropna() מסירה כל שורה שיש בה ערך חסר; fillna(0) כותבת 0 בכל אחת מהן. שתיהן מחזירות טבלה חדשה, לכן שמור אותה.

הסטטיסטיקה מדלגת על NaN: הממוצע של quiz1 הוא 8.0, על סמך שלושת הציונים הידועים שלו.

challenge icon

אתגר

בינוני

מעקב הכושר החמיץ כמה קריאות בקובץ tracker.csv. לפני האימון, ראו כיצד כל דרך לטיפול בפערים משנה את הממוצע של sleep. קוד הפתיחה קורא את hours, ערך למילוי.

  1. הדפיסו את מספר הפערים בכל עמודה.
  2. הדפיסו את ממוצע השינה, מעוגל ל־2 ספרות אחרי הנקודה העשרונית, בשלוש דרכים: תוך דילוג על פערים, עבור ימים שאין בהם פער באף עמודה, ועם מילוי הפערים בערך hours.

עבור מעקב אחר ו־8:

day      0
steps    1
sleep    2
water    0
dtype: int64
Skipping gaps: 6.9
Complete days only: 7.0
Gaps filled with 8.0: 7.21

נסו בעצמכם

import pandas as pd

tracker = pd.read_csv("tracker.csv")
hours = float(input())

# כתבו את הקוד שלכם למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה נתונים ותרשימים

תרגלו בעצמכם: קומפיילר Python אונליין