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

עם השנים השימוש בפיתון למדעי נתונים גדל בצורה מדהימה וממשיך לגדול מדי יום.


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

מהו ניתוח נתונים?

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

ישנם כלים שונים המשמשים לניתוח נתונים, Python, Microsoft Excel, Tableau, SaS וכו ‘, אך במאמר זה, אנו מתמקדים באופן ניתוח הנתונים בפיתון. ליתר דיוק, איך עושים את זה עם ספריית פיתון הנקראת פנדות.

מה זה פנדס?

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

מבני נתונים בפנדות

ישנם 3 מבני נתונים בפנדות, כלומר;

  • סדרה
  • DataFrame
  • לוח

הדרך הטובה ביותר להבדיל בין שלושתם היא לראות אחד מכיל כמה ערימות של השנייה. אז DataFrame הוא ערימה של סדרה ופאנל הוא ערימה של DataFrames.

סדרה היא מערך חד ממדי

ערימה של מספר סדרות מייצרת DataFrame דו ממדי

ערימה של מספר DataFrames מייצרת פאנל תלת ממדי

מבנה הנתונים שאנחנו עובדים איתו הכי הוא DataFrame הדו-ממדי שיכול גם להיות אמצעי הייצוג של ברירת המחדל עבור כמה מערכי נתונים שאנו עשויים להיתקל בהם.

ניתוח נתונים בפנדות

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

עכשיו, המשך אל https://colab.research.google.com/notebooks/intro.ipynb. אתה אמור לראות את הדברים הבאים.

באמצעות הניווט השמאלי למעלה, לחץ על אפשרות הקובץ ולחץ על האפשרות “מחברת חדשה”. היית רואה דף מחברת חדש של Jupyter טעון בדפדפן שלך. הדבר הראשון שאנחנו צריכים לעשות זה לייבא פנדות לסביבת העבודה שלנו. אנו יכולים לעשות זאת על ידי הפעלת הקוד הבא;

יבוא פנדות כ- pd

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

אנו יכולים לעשות זאת באמצעות הקוד הבא בתא חדש;

df = pd.read_csv (‘https://firebasestorage.googleapis.com/v0/b/ai6-portfolio-abeokuta.appspot.com/o/kc_house_data.csv?alt=media &token = 6a5ab32c-3cac-42b3-b534-4dbd0e4bdbc0 ‘, sep =’, ‘)

ה- .read_csv משמש כשאנחנו רוצים לקרוא קובץ CSV והעברנו מאפיין sep כדי להראות שקובץ CSV מופרד בפסיק..

נציין גם שקובץ ה- CSV הטעון שלנו מאוחסן ב- df משתנה .

איננו צריכים להשתמש בפונקציית ההדפסה () במחברת Jupyter Notebook. אנחנו יכולים פשוט להקליד שם משתנה בתא שלנו ו- Jupyter Notebook ידפיס את זה בשבילנו.

אנו יכולים לנסות זאת על ידי הקלדת df בתא חדש והפעלתו, הוא ידפיס את כל הנתונים במערך הנתונים שלנו כ- DataFrame עבורנו.

אבל אנחנו לא תמיד רוצים לראות את כל הנתונים, לפעמים אנחנו רק רוצים לראות את הנתונים הראשונים ואת שמות העמודות שלהם. אנו יכולים להשתמש בפונקציה df.head () כדי להדפיס את חמשת העמודות הראשונות ו- df.tail () כדי להדפיס את חמשת האחרונות. התפוקה של אחד מהשניים תיראה ככזאת;

אנו רוצים לבדוק קשרים בין מספר שורות ועמודות נתונים אלה. הפונקציה .describe () עושה בדיוק את זה בשבילנו.

 הפעלת df.describe () נותנת את הפלט הבא;

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

אנו יכולים גם לבדוק את הצורה של ה- 2D DataFrame שלנו כדי לגלות כמה שורות ועמודות יש לו. אנו יכולים לעשות זאת באמצעות df.shape שמחזירה כותרת בפורמט (שורות, עמודות).

אנו יכולים גם לבדוק את שמות כל העמודות ב DataFrame שלנו באמצעות עמודות df.col.

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

df [‘מחיר’]

הקוד הקודם מחזיר את עמודת המחיר, נוכל להמשיך רחוק על ידי שמירתו במשתנה חדש ככזה

מחיר = df [‘מחיר’]

כעת אנו יכולים לבצע כל פעולה אחרת שניתן לבצע על DataFrame במשתנה המחיר שלנו מכיוון שהיא רק קבוצת משנה של DataFrame בפועל. אנחנו יכולים לעשות דברים כמו df.head (), df.shape וכו ‘..

נוכל גם לבחור מספר עמודות על ידי העברת רשימה של שמות עמודות ל- df ככאלה

data = df [[‘מחיר’, ‘חדרי שינה’]]

האמור לעיל בוחר עמודות עם שמות ‘מחיר’ ו’חדרי שינה ‘, אם אנו מקלידים data.head () לתא חדש, יהיה לנו את הדברים הבאים

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

df.iloc [50:, 3]

המחזיר את העמודה השלישית משורה 50 עד הסוף. זה די מסודר ובדיוק כמו רשימות פרוסות בפיתון.

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

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

df.groupby (‘חדרי שינה’) [‘מחיר’] .mean ()

האמור לעיל מקבץ את DataFrame לפי ערכות הנתונים עם מספר השינה הזהה באמצעות הפונקציה df.groupby (), ואז אנו אומרים לו לתת לנו רק את עמודת השינה ולהשתמש בפונקציה .mean () כדי למצוא את הממוצע של כל בית בנתון הנתונים..

מה אם אנו רוצים לדמיין את האמור לעיל? נרצה שנוכל לבדוק כיצד המחיר הממוצע של כל מספר חדרי שינה שונה נבדל? עלינו רק לשרשר את הקוד הקודם לפונקציה .plot () ככאלה;

df.groupby (‘חדרי שינה’) [‘מחיר’] .mean (). מגרש ()

יהיה לנו פלט שנראה ככזה;

האמור לעיל מראה לנו כמה מגמות בנתונים. בציר האופקי יש לנו מספר שונה של חדרי שינה (שימו לב, יותר מבית אחד יכול להכיל מספר X של חדרי שינה). בציר האנכי יש לנו את הממוצע של המחירים בכל הנוגע למספר החדרים המקביל באופק. ציר. אנו יכולים לשים לב מיד כי בתים שיש להם בין 5 ל -10 חדרי שינה עולים הרבה יותר מאשר בתים עם 3 חדרי שינה. יתברר גם כי בתים שיש בהם כ -7 או 8 חדרי שינה עולים הרבה יותר מאלה עם 15, 20 או אפילו 30 חדרים.

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

מידע חסר

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

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

פנדות מספקות לנו פונקציה למצוא ערכים חסרים ב- DataFrame שנקרא isnull ().

ניתן להשתמש בפונקציה isnull () ככזו;

df.isnull ()

זה מחזיר DataFrame של בוליאניים שמגלה לנו אם הנתונים שהיו במקור שם היו חסרים באמת או חסרים כוזב. התפוקה תיראה ככזאת;


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

כדי למלא את כל הערכים החסרים ב- DataFrame, אנו משתמשים בפונקציה .fillna () המשמשת ככזו;

df.fillna (0)

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

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

ניתן למצוא את כל הדוגמאות במאמר זה כאן.

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

תגיות:

  • פייתון

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map