در زبان SQL با استفاده از عبارت GROUP BY و تابع های تجمیعی، می توانیم سطرهای جدول را بر اساس یک ستون دسته بندی کنیم. در ماژول Pandas و نوع DataFrame نیز می توانیم چنین کاری را انجام دهیم.  در SQL از ترکیب عبارت GROUP BY و تابع تجمیعی ()COUNT می توانیم تعداد هر مقدار به ازای ستون را پیدا کنیم. مثلا می خواهیم بدانیم از هر نام کارمند، چه تعداد تکرار وجود دارد. مثلا از نام Amir در ستون first_name چند بار تکرار شده است. در این بخش می خواهیم همین مفهوم را در ماژول Pandas معرفی کنیم.

در pandas متد ()count همانند تابع تجمیعی ()COUNT در SQL وجود دارد ولی این دو از نظر کاربرد با یکدیگر متفاوت هستند. متد ()count در pandas تعداد مقدارهای غیر Null را برگشت می دهد ولی تابع تجمیعی ()COUNT در SQL، تعداد تمامی مقدارها را برگشت می دهدبنابراین تابع ()count از Pandas برای هدف ما در این بخش کاربردی نیست و در عوض و مطابق کدهای زیر باید از تابع دیگری به نام ()sizeاستفاده کنیم. در کدهای زیر از متد ()groupby از ماژول Pandas برای گروه بندی داده ها بر اساس لیستی از نام یک یا چندین ستون استفاده شده است.

همانطور که در شکل بالا می بینید در کد نخست و دوم و توسط متد ()groupby و ترکیب آن با متد ()size به ترتیب داده ها بر اساس ستون Age و Driver دسته بندی شده اند. در کد سوم دادها بر اساس دو ستون Driver و Age دسته بندی شده اند. توجه کنید ورودی متد ()groupby یک لیست تک یا چند عنصری است که هر کدام از عنصرها نام یک ستون را مشخص می کنند.

مقایسه با کوئری های SQL

زمانی که بخواهیم داده های DataFrame را بر اساس ستون یا چندین ستون گروه بندی (دسته بندی) کنیم، معادل  این است که عبارت GROUP BY و ترکیب آن با تابع تجمیعی ()COUNT در SQL استفاده کرده باشیم.

پیدا کردن کمترین، بزرگترین مقدار و میانگین و میانه اعداد

در زبان SQL تابع های تجمیعی به نام ()MIN و ()MAX و ()AVG و ()MEDIAN وجود دارند که به ترتیب کمترین، بزرگترین مقدار و میانگین و میانه اعداد درون ستونی از جدول را پیدا می کنند. در ماژول pandas و بر روی نوع DataFrame نیز از طریق متدی به نام ()agg (مخفف Aggration) می توانیم همین موارد را محاسبه کنیمدر کد زیر آرگومان نسخت متد ()agg نام یک ستون از جدول است که قاعدتا مقدار عددی را در خود نگه می دارد. آرگومان ستون دوم لیستی است که اگر دقت کنید، خواهید دید که هر عنصر  آن معادل نام یکی از چهار تابع تجمیعی درون زبان SQL است.

مقایسه با کوئری های SQL

زمانی که بخواهیم کمترین  و بیشترین مقدار میانگین و میانه مقدارهای یک ستون عددی را پیدا کنیم، به ترتیب معادل  این است که از تابع های ()MIN و ()MAX و ()AVG و ()MEDIAN در SQL استفاده کرده باشیم. کد پایتون بالا که توسط متد ()agg نوشته شده است معادل کوئری زیر در زبان SQL است

خلاصه و جمع بندی

در این مطلب و مطلب پیشین مفهوم DataFrame ها در پایتون و کتابخانه Pandas توضیح داده شد و در ادامه دوره چگونگی خواندن منابع داده متفاوت مانند فایل های CSV و اکسل (Excel) و پایگاه داده های رابطه ای توضیح داده شده است. همچنین در دوره استخراج داده های وب از کتابخانه Pandas برای خواندان و پردازش محتوای وب نیز استفاده شده است. در ادامه مطلب های این دوره چگونگی پاک سازی داده ها (Data Cleaning) و از میان بردن داده های معیوب (Missing Data) توسط Pandas و آماده سازی داده برای استفاده در الگوریتم های یادگیری ماشین و داده کاوی توسط ابزارهای درونی کتابخانه Scikit-Learn توضیح داده شده اند.

دانلود سورس برنامه های این مطلب Pandas dataframe groupby aggration