قسمت سیزدهم – گروه بندی داده Group Byدر پانداس
در کتابخانه پایتون پانداس، از تابع groupby برای گروهبندی دادهها بر اساس یک یا چند ستون استفاده میشود. groupby میتواند برای محاسبه مقادیر آماری مانند میانگین، مجموع، تعداد، و … روی هر گروه به کار رود.
در ادامه چند مثال برای پیادهسازی groupby آورده شده است.
فرض کنید یک دیتافریم داریم که اطلاعات مربوط به کارمندان یک شرکت را شامل میشود:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) print(df) Name Department Salary Age ۰ Ali HR 4000 25 ۱ Sara IT 5000 30 ۲ Mehdi HR 4500 24 ۳ Sara IT 5200 28 ۴ Ali Sales 3900 26 ۵ Fatemeh IT 4900 27
- گروهبندی و محاسبهی میانگین حقوق بر اساس دپارتمان
برای محاسبه میانگین حقوق هر دپارتمان، میتوانیم از کد زیر استفاده کنیم:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) average_salary = df.groupby('Department')['Salary'].mean() print(average_salary) Department HR 4250.000000 IT 5033.333333 Sales 3900.000000 Name: Salary, dtype: float64
- گروهبندی و محاسبهی مجموع حقوق هر دپارتمان
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) total_salary = df.groupby('Department')['Salary'].sum() print(total_salary) Department HR 8500 IT 15100 Sales 3900 Name: Salary, dtype: int64
- محاسبه تعداد افراد در هر دپارتمان
برای شمارش تعداد افراد در هر دپارتمان میتوان از count استفاده کرد:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) employee_count = df.groupby('Department')['Name'].count() print(employee_count) Department HR 2 IT 3 Sales 1 Name: Name, dtype: int64
- گروهبندی بر اساس چند ستون و محاسبهی میانگین سن
فرض کنید میخواهیم میانگین سن را بر اساس ترکیبی از دپارتمان و نام حساب کنیم:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) average_age = df.groupby(['Department', 'Name'])['Age'].mean() print(average_age) Department Name HR Ali 25.0 Mehdi 24.0 IT Fatemeh 27.0 Sara 29.0 Sales Ali 26.0 Name: Age, dtype: float64
- استفاده از چندین تابع به طور همزمان
فرض کنید میخواهیم همزمان میانگین و مجموع حقوق هر دپارتمان را حساب کنیم:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) salary_stats = df.groupby('Department')['Salary'].agg(['mean', 'sum']) print(salary_stats) mean sum Department HR 4250.000000 8500 IT 5033.333333 15100 Sales 3900.000000 3900
- فیلتر کردن گروهها بر اساس شرط
اگر بخواهیم فقط گروههایی را نمایش دهیم که میانگین حقوق آنها بالاتر از ۴۵۰۰ است:
import pandas as pd data = { 'Name': ['Ali', 'Sara', 'Mehdi', 'Sara', 'Ali', 'Fatemeh'], 'Department': ['HR', 'IT', 'HR', 'IT', 'Sales', 'IT'], 'Salary': [4000, 5000, 4500, 5200, 3900, 4900], 'Age': [25, 30, 24, 28, 26, 27] } df = pd.DataFrame(data) high_salary_departments = df.groupby('Department').filter(lambda x: x['Salary'].mean() > 4500) print(high_salary_departments) Name Department Salary Age ۱ Sara IT 5000 30 ۳ Sara IT 5200 28 ۵ Fatemeh IT 4900 27
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.