שיטות להמרת קטגוריות ל-Int
הטכניקות הזמינות ב'פנדות' להמרת ערכי קטגורי ל-int של DataFrame מסופקות כאן:
-
- שיטת DataFrame.replace()
- שיטת DataFrame.apply(factorize()).
אנו נשתמש בשיטות אלו במאמר זה ונסביר בפירוט כיצד להשתמש בשתי השיטות ב'פנדות'.
דוגמה מס' 1: שימוש בשיטת Pandas Replace()
ניתן להמיר ערכים קטגוריים ב-DataFrame ל-int על ידי שימוש בשיטת pandas 'DataFrame.replace()'. נלמד כאן להשתמש בשיטה זו.
השתמשנו בכלי 'Spyder' כדי לבצע בצורה מיטבית את הטכניקה הזו ב- Python. כדי להתחיל בכתיבת הסקריפט, פתח קובץ Python חדש בכלי 'Spyder'. הדרישה המשמעותית ביותר לכתיבת התסריט היא לייבא ספריות מתאימות. מכיוון שעלינו ליישם שיטת 'פנדות', יהיו לנו את 'ייבוא פנדות כ-pd' כדי לגשת לתכונות של 'פנדות'. לאחר מכן אנו מתחילים את קוד הליבה של Python. יצרנו DataFrame בשיטת 'pd.DataFrame()'. אתחול ה-DataFrame מתבצע על ידי שלוש עמודות 'שם', 'תואר' ו'הכנסה'. כל העמודות של DataFrame מאחסנות את אותו אורך של ערכים.
העמודה הראשונה, 'שם', כוללת שמונה ערכים שהם 'בוש', 'אלברט', 'הארי', 'פיטר', 'אמה', 'ניוטון', 'סמית' ו'אלסה'. העמודה השנייה, 'תואר', מאחסנת גם שמונה ערכים קטגוריים, שהם 'BS', 'MS', 'MS', 'BS', 'BS', 'BS', 'MS' ו-'MS'. העמודה האחרונה 'הכנסה' כוללת שמונה ערכים שלמים '60000', '80000', '75000', '45000', '56000', '65000', '55000' ו-'70000'. יצרנו אובייקט DataFrame 'צוות' כדי לאחסן את הפלט של הפעלת הפונקציה 'pd.DataFrame()'. כדי להציג את ה-DataFrame הראשוני שלנו, השתמשנו בשיטת 'print()' עם השם של DataFrame 'staff' כפרמטר שלו בשורה האחרונה של הסקריפט.
כדי להציג את הפלט במסוף, השתמש בלחצן 'הפעל קובץ' בכלי 'Spyder' או לחץ על מקשי 'Shift+Enter'. הפלט המוצג במסוף מציג DataFrame עם שלוש עמודות שנוצרו בהצלחה.
כעת, ה-DataFrame שלנו נבנה, עלינו ליישם עליו את הטכניקה הנדרשת. שיטת הפנדות 'DataFrame.replace()' תשמש כדי להמיר את הערכים הקטגוריים של עמודה שצוינה לערכי מספר שלמים, כך שהמכונות יוכלו להפוך אותם לקריאה.
סיפקנו את השם של ה-DataFrame עם שם העמודה המסוים שאת הערכים שלו אנחנו צריכים להחליף, שהוא 'צוות['תואר']'. אנו רוצים שהערכים של העמודה 'תואר', שיש לה ערכים קטגוריים, יוחלפו בערכי מספר שלמים. לאחר מכן מופעלת השיטה '.replace()'. העברנו אותו לשתי קבוצות; הראשון מכיל את שני הערכים הקטגוריים '['BS', 'MS']' שחילצנו מהעמודה 'Degree'. כפי שאתה יכול לראות, העמודה 'תואר' משתמשת בשני הערכים הללו שוב ושוב. אם היה לנו ערך שלישי, בטח הזכרנו גם את זה. לקבוצה השנייה יש שני ערכי int '[0, 1]', שיתפסו את מקומם של ערכי הסט הראשון בהתאמה. הפרמטר השני, 'inplace', מוגדר כ'True', המאפשר החלפת ערכים. אם מוגדר כ'שקר', זה ישבית את ההחלפה. לבסוף, השתמשנו בשיטת 'print()' כדי להציג את DataFrame 'צוות' המעודכן.
ל-DataFrame שנוצר יש ערכי מספר שלמים בעמודה 'תואר'. הערך 'BS' מוחלף ב-'0s', וה-'MS' מוחלף ב-'1s'.
אתה יכול אפילו לאמת את סוג הנתונים עבור כל עמודה באמצעות המאפיין 'dataframe.dtype'. זה יביא לנו סוגי נתונים של כל העמודות ב-DataFrame שצוין.
הנה, קיבלנו את סוגי הנתונים של ה-DataFrame שלנו. אנו יכולים לראות את סוג הנתונים של העמודה 'תואר' משתנה ל'int64'.
דוגמה מס' 2: שימוש בשיטת Pandas application()
השיטה הנוספת שהפנדה סיפקה לנו היא הפונקציה 'DataFrame.apply()' להמרת ערכים קטגוריים למספרים שלמים. בדוגמה הקודמת, למדנו להמיר עמודה קטגורית אחת למספר שלם. כעת נראה כיצד להמיר את כל העמודות הקטגוריות ב-DataFrame ל-int.
החל מהיישום המעשי, עלינו לייבא את הספרייה החיונית לשיטה זו, שהיא פנדות. השתמשנו בסקריפט 'ייבוא פנדות כ-pd' כדי לייבא פנדות לקובץ ה-Python שלנו בכלי 'Spyder', שיאפשר לנו לגשת למודולי פנדות באמצעות ה-'pd'. השתמשנו בפונקציה 'pd.DataFrame()' כדי לבנות DataFrame.
ל-DataFrame זה יש ארבע עמודות 'קבוצה', 'מיקום', 'ניקוד' ו'מסייע'. כל עמודה מאחסנת 9 ערכים. ערכי העמודה 'קבוצה' הם 'X', 'X', 'Y', 'X', 'Y', 'Y', 'Y', 'X' ו-'Y'. העמודה 'מיקום' מכילה 9 ערכים שהם 'A', 'C', 'D', 'A', 'C', 'B', 'B', 'D' ו-'B'. העמודה 'ציונים' כוללת ערכי מספרים שלמים כמו '4', '8', '7', '10', '9', '5', '7', '3' ו-'23'. העמודה האחרונה, 'מסייע', כוללת את הערכים '10', '2', '3', '9', '3', '7', '4', '2' ו- '9'.
יצרנו אובייקט DataFrame 'prog' והקצאנו לו את הפלט של הפעלת שיטת 'pd.DataFrame()'. לכן, מסגרת ה-DataFrame שנוצרה מה-'pd.DataFrame()' תישמר ב-'prog'. כעת, אנו יכולים לגשת ל-DataFrame באמצעות אובייקט זה. כדי לצפות ב-DataFrame זה, השתמשנו בשיטת 'print()' עם אובייקט ה-DataFrame 'prog' כפרמטר שלו.
כאשר מופעלת תוכנית Python הקודמת, DataFrame עם ארבע עמודות תוצג בטרמינל.
כדי להמיר עמודות קטגוריות מרובות למספרים שלמים, נקטנו בטכניקה זו. תחילה עלינו לבחור את כל העמודות המכילות את סוג הנתונים של אובייקט על ידי שימוש בשיטת הפנדות 'DataFrame.select_dtypes().columns'. כאשר אנו משתמשים בו בסקריפט שלנו כנדרש, זה יהיה 'prog.select_dtypes(['object']).עמודות'. זה יבחר את כל העמודות עם סוג הנתונים 'אובייקט' ב-'פרוג' DataFrame. יצרנו משתנה 'concate_col' כדי לאחסן את הפלט של שיטה זו. כעת נוכל לגשת לעמודות סוג הנתונים 'אובייקט' פשוט על ידי שימוש במשתנה זה 'concat_col'.
כעת, כדי להמיר את העמודות הללו למספרים שלמים, השתמשנו בפנדות 'DataFrame.apply()' בשיטת 'pd.factorize()'. השתמשנו במשתנה 'concat_col' עם השם DataFrame ואז מופעלת השיטה '.apply()'. בין סוגריים של שיטת '.apply', קראנו למתודה 'pd.factorize()' שבה 'x' יכול להיות כל ערך מ-'prog' DataFrame עם 'object' datatype. לפיכך, כל שורת הקוד הזו כתובה כ-'prog['concat_col'] = prog['concat_col'].apply(lambda x : pd.factorize(x)[0])'. שיטת ה-factorize תיקח ערך עם סוג נתונים של 'אובייקט' והמיר אותו ל-'int'. ניתן להציג את הפלט הסופי על ידי קריאה לפונקציה 'print()' על ידי העברת המשתנה 'prog' כפרמטר שלה.
ב-DataFrame המעודכן, אנו יכולים לראות את הערכים של העמודות 'קבוצה' ו'מיקום' היו בתחילה קטגוריים, כלומר אובייקט. עדיין ב-DataFrame המעודכן של הפלט, לשתי העמודות יש ערכים שלמים. בעמודה 'קבוצה', 'X' מוחלף ב-'0' ו-'Y' ב-'1'. ואילו העמודה 'מיקום' 'A' מוחלפת ב-'0', 'C' ב-'1', 'D' ב-'2' ו-'B' ב-'3'.
כעת, בואו נוודא את סוגי הנתונים המעודכנים.
לכל העמודות הבאות יש סוג נתונים מסוג 'int64'.
סיכום
המדריך שלנו עוסק בהמרת ערכים קטגוריים לערכים מספריים, כך שניתן יהיה להפוך אותם למובנים על ידי המכונות מכיוון שלא ניתן לעבד את סוג הנתונים של האובייקט על ידם. הצגנו לכם את שתי הגישות המופיעות על ידי ספריית 'פנדות' כדי לקבל את סוג הנתונים הנדרש. כמו כן, עם היישום המעשי של קודים לדוגמה המופעלים בכלי 'Spyder', שיתפנו את התוצאה של כל דוגמה. לבסוף, פירטנו כל שלב כדי להשיג את התוצאה הרצויה.