Pandas Groupby Agregate

Pandas Groupby Agregate



טכניקת groupby חיונית בגלל כמה טוב היא צוברת נתונים מבחינת ביצועים וגודל קוד. המונח 'קבוצתי' מתאר בדרך כלל הליך הכולל את השלבים הבאים:

  • פְּצִיחָה : על ידי החלת תנאים מסוימים על מערכי נתונים, אנו יכולים לחלק נתונים לקבוצות.
  • מגיש בקשה : תהליך שבו אנו מיישמים שיטה באופן אישי לכל קבוצה.
  • שילוב : הליך לשילוב מערכי נתונים שונים ליצירת מבנה נתונים לאחר שימוש בשיטת groupby() .

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







מדוע פנדות מספקות מגוון שיטות צבירת נתונים?

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



כיצד להשתמש בפונקציית .agg() בפנדות

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



דוגמה מס' 01: קבע את סכום העמודות על ידי קיבוץ הנתונים באמצעות הפונקציה groupby.agg()

תחילה ניצור מסגרת נתונים באמצעות פונקציית pd.DataFrame() כדי שנוכל לקבץ את הנתונים מהעמודה או העמודות של מסגרת הנתונים ולאחר מכן לקבוע את הערך הממוצע שלהם. עלינו לייבא את המודולים של הפנדות ואת ספריית numpy לפני שניצור את מסגרת הנתונים.





כפי שאתה יכול לראות, השתמשנו במילון הפנדות כדי ליצור את מסגרת הנתונים שלנו. ל-df dataframe שלנו יש ארבע עמודות: 'מטופל' 'קבוצה', 'גיל' ו'בקבוקי דם'. ערכי הנתונים ('עלי', 'ג'ון', 'מייק', 'מייק', 'ג'ון', 'עלי', 'עלי', 'מייק') כלולים בעמודה 'מטופל' ואילו ערכי הנתונים ('A ', 'A', 'B', 'C', 'A', 'C', 'C', 'B'), (21, 22, 24, 21, 20, 24, 22, 22) ו- ( 2, 3, 1, 1, 2, 3, 2, 1) כלולים בעמודות 'קבוצה', 'גיל' ו-'בקבוקי דם' בהתאמה. נניח שעלינו לקבוע את סכום הערכים בעמודת 'בקבוקי דם' על ידי קיבוץ הערכים בעמודה 'קבוצה'.



עבור נתוני הקבוצה 'A', סכום הערכים של 'בקבוקי_דם' הוא 7. עבור ערכי הקבוצה 'B' ו-'C', סכום הערכים של 'בקבוקי_דם' הוא 2 ו-6, בהתאמה. אנו יכולים גם לקבץ מספר עמודות כדי לקבוע את הסכום עבור כל קבוצה.

כפי שניתן לראות, העברנו רשימה של תוויות עמודות, כלומר, ['מטופל', 'קבוצה'] בתוך הפונקציה groupby() כדי ליצור את קבוצות הקטגוריות בכל עמודה שצוינה. עבור כל קבוצה של עמודות שצוינו, קבענו את סכום הערכים ב-'blood_bottles'. לדוגמה, 'עלי' נמצא בעמודה 'קבוצה' ערכי A ו-C. בקבוצה A, סכום הערכים של 'בקבוקי דם' עבור עלי הוא 2, ו-5 בקבוצה 'C'.

דוגמה מס' 02: החלת פונקציות מרובות על עמודה יחידה של Dataframe באמצעות פונקציית groupby.agg()

ניתן להחיל צבירות מרובות בשיטת 'groupby()' באמצעות פונקציית pandas agg(). ניתן להעביר לשיטה רשימה הניתנת להתקשרות. הבה נבחן כיצד אנו יכולים לצבור את הנתונים שלנו באמצעות השיטות המובנות של ספריית numpy. בשונה מהדוגמה הקודמת, נחיל פונקציות מרובות על עמודה אחת של מסגרת הנתונים. הפונקציה pd.DataFrame() תשמש ליצירת מסגרת נתונים עבור זה עם עמודה אחת לפחות המכילה ערכים מספריים.


מסגרת הנתונים הנדרשת נוצרה עם עמודה מספרית אחת, כלומר 'סימנים' עם ערכים 41, 40, 35, 39, 49, 31, 34 ו-42. יש עוד 3 עמודות 'תלמיד', 'מקצועות' ו'תואר' במסגרת הנתונים שלנו שניתן לחלק לקבוצות באמצעות הפונקציה groupby() . הערכים בעמודה 'סטודנטים' ו'מקצועות' הם ('הארי', 'רון', 'הארי', 'לאנה', 'סם', 'רון', 'לאנה', 'מקס') ו-('C++' , 'JAVA', 'Python', 'Python', 'AI', 'JAVA', 'C++', 'AI'). בעוד שדרגת העמודה מכילה את ערכי הנתונים כמחרוזות, כלומר ('Ms', 'Bs', 'Bs', 'Ms', 'Ms', 'Ms', 'Bs', 'Bs'). נניח שעלינו לקבץ את הנתונים של העמודה 'נושאים' ולקבוע גם את הממוצע וגם את הסכום של 'סימני' העמודות עבור כל נתונים מקובצים.

ציינו את השם של העמודה 'נושאים' כמחרוזת בתוך הפונקציה groupby() כדי להמיר את הנתונים לקבוצות של קטגוריות. עבור עמודת הסימנים, השתמשנו בשיטת agg() ובתוך הפונקציה agg() ציינו את הפונקציות numpy np.sum ו-np.mean כדי למצוא את הסכום והממוצע של הסימנים של כל נתוני קבוצה בנושאי עמודה. הסכום והערך הממוצע עבור ערך הקבוצה 'AI' הם 91 ו-45.5, בהתאמה. סכום הסימנים עבור הערך 'C++' הוא 75, והערך הממוצע הוא 37.5. עבור קבוצת JAVA, סכום הסימנים הוא 71 והערך הממוצע הוא 35.5, בעוד שהסכום והערך הממוצע עבור Python הם 74 ו-37, בהתאמה.

דוגמה מס' 03: החלת פונקציות מרובות על עמודות מרובות של מסגרת הנתונים באמצעות פונקציית groupby.agg()

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

ישנן ארבע עמודות במסגרת הנתונים החדשה שנוצרה עם השמות 'שחקן', 'הניקוד הכי נמוך', 'הניקוד הגבוה ביותר' ו'מיקום'. בעמודה 'שחקן', אחסנו שמות של כמה שחקנים כערכי נתוני מחרוזת ('Leo', 'Alex', 'Leo', 'Fin', 'Leo', 'Alex', 'Fin', ' סנפיר'), בעמודה 'הניקוד_הקטן ביותר' יש את הציונים הנמוכים ביותר של שחקנים עבור חלק מהמשחקים (12, 34, 2, 21, 9, 1, 0, 34), בעוד שבעמודה 'הניקוד_גבוה ביותר' יש לנו את הציונים הגבוהים ביותר של השחקנים (12, 34, 2, 21, 9, 1, 0, 34) ובעמודה 'מיקום' יש את שמות המקומות שבהם השחקנים שיחקו את המשחקים שלהם ('צרפת', 'אנגליה', 'דובאי', ' דובאי', 'אנגליה', 'צרפת', 'דובאי', 'צרפת').

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

בתוך הפונקציה agg() העברנו מילון פיתון {'highest_score' : 'sum', 'least_score' : 'mean'} כדי למצוא את הסכום והערך הממוצע עבור עמודה שצוינה מול כל קבוצה. ניתן לראות שלערך המקובץ אלכס יש את הסכום של ערך 'הציון_הגבוה' 132 והממוצע של הערך 'הניקוד הכי נמוך' 17.5. עבור 'Fin' סכום הערכים הוא 199 והממוצע הוא 18.3333333 בעמודות 'הציון_גבוה' ו'הניקוד_המועט ביותר' בהתאמה. לערך הקבוצה אריה יש ערך סכום של 180 ב-'highest_score' וערך ממוצע של 7.666667 ב-'least_score'.

סיכום

במדריך זה, דנו בפונקציות groupby() והצבירה בפנדות. דנו גם כיצד להשתמש בפונקציה groupby.agg() . יישמנו שלוש דוגמאות במאמר זה כדי ללמד אותך כיצד להשתמש בפונקציית צבירה אחת בעמודת מסגרת נתונים על ידי קיבוץ הנתונים של עמודות בודדות ומספר עמודות, כיצד להחיל פונקציות צבירה מרובות על עמודה אחת של מסגרת נתונים וכיצד להחיל מספר עמודות. פונקציות צבירה בעמודות המרובות של מסגרת הנתונים באמצעות הפונקציה groupby.agg() .