Pandas में groupby() के साथ sum() का उपयोग करके किसी कॉलम के आधार पर ग्रुप बनाकर अन्य संख्यात्मक कॉलम का योग निकाला जा सकता है।
बुनियादी सिंटैक्स
df.groupby('group_column')['target_column'].sum()
# या सभी संख्यात्मक कॉलम के लिए
df.groupby('group_column').sum()
उदाहरण
import pandas as pd
df = pd.DataFrame({
"Apple": [5, 2, 7, 0],
"Banana": [4, 7, 5, 1],
"Carrot": [9, 3, 5, 1]
})
print("Input DataFrame:\n", df)
# 'Apple' कॉलम के अनुसार ग्रुप बनाकर योग
g_sum = df.groupby('Apple').sum()
print("\nApple द्वारा ग्रुप योग:\n", g_sum)
# विशिष्ट कॉलम का योग
banana_sum = df.groupby('Apple')['Banana'].sum()
print("\nApple द्वारा Banana का योग:\n", banana_sum)
आउटपुट
Input DataFrame:
Apple Banana Carrot
0 5 4 9
1 2 7 3
2 7 5 5
3 0 1 1
Apple द्वारा ग्रुप योग:
Banana Carrot
Apple
0 1 1
2 7 3
5 4 9
7 5 5
व्यावहारिक उदाहरण: बिक्री डेटा
sales = pd.DataFrame({
'region': ['North', 'South', 'North', 'East', 'South', 'West', 'North'],
'product': ['A', 'B', 'A', 'C', 'B', 'A', 'C'],
'sales': [100, 200, 150, 300, 250, 400, 200],
'quantity': [10, 20, 15, 30, 25, 40, 20]
})
print("बिक्री डेटा:\n", sales)
# क्षेत्रवार कुल बिक्री
region_sales = sales.groupby('region')['sales'].sum()
print("\nक्षेत्रवार कुल बिक्री:\n", region_sales)
# क्षेत्र और उत्पाद दोनों द्वारा ग्रुपिंग
region_product = sales.groupby(['region', 'product']).agg({
'sales': 'sum',
'quantity': 'sum'
})
print("\nक्षेत्र और उत्पादवार बिक्री:\n", region_product)
# एकाधिक एग्रीगेशन फंक्शन्स
multi_agg = sales.groupby('region').agg({
'sales': ['sum', 'mean', 'count'],
'quantity': ['sum', 'mean']
})
print("\nएकाधिक एग्रीगेशन:\n", multi_agg)
आउटपुट
क्षेत्रवार कुल बिक्री:
region
East 300
North 450
South 450
West 400
Name: sales, dtype: int64
क्षेत्र और उत्पादवार बिक्री:
sales quantity
region product
East C 300 30
North A 250 25
C 200 20
South B 450 45
West A 400 40
एकाधिक एग्रीगेशन:
sales quantity
sum mean count sum mean
region
East 300 300 1 30 30.0
North 450 150 3 45 15.0
South 450 225 2 45 22.5
West 400 400 1 40 40.0
महत्वपूर्ण पैरामीटर्स
| पैरामीटर | विवरण |
|---|---|
as_index=True | ग्रुपिंग कॉलम को इंडेक्स बनाएं (डिफ़ॉल्ट) |
as_index=False | ग्रुपिंग कॉलम को सामान्य कॉलम रखें |
sort=True | ग्रुप कुंजियों को सॉर्ट करें (डिफ़ॉल्ट) |
sort=False | मूल क्रम बनाए रखें |
as_index=False का उदाहरण
# as_index=False - परिणाम में 'region' कॉलम के रूप में रहता है
result = sales.groupby('region', as_index=False)['sales'].sum()
print(result)
print(type(result)) # DataFrame (नहीं Series)
अतिरिक्त: transform() का उपयोग
यदि आप मूल DataFrame की लंबाई बनाए रखते हुए ग्रुप योग चाहते हैं:
# प्रत्येक पंक्ति के लिए उसके क्षेत्र का कुल बिक्री
sales['region_total_sales'] = sales.groupby('region')['sales'].transform('sum')
print(sales)