TLDR; पंडों के groupby.agg
पास एक कॉलम पर (1) एकत्रीकरणों को निर्दिष्ट करने के लिए एक नया और आसान सिंटैक्स है, और (2) एक कॉलम पर कई एकत्रीकरण हैं। तो, पंडों के लिए ऐसा करने के लिए = = 0.25 , उपयोग करें
df.groupby('dummy').agg(Mean=('returns', 'mean'), Sum=('returns', 'sum'))
Mean Sum
dummy
1 0.036901 0.369012
या
df.groupby('dummy')['returns'].agg(Mean='mean', Sum='sum')
Mean Sum
dummy
1 0.036901 0.369012
पंडों ने GroupBy.agg
नामकरण एकत्रीकरण को निर्दिष्ट करने के लिए एक अधिक सहज वाक्यविन्यास के पक्ष में व्यवहार को बदल दिया है । देखें संवर्द्धन पर 0.25 डॉक्स अनुभाग के साथ ही प्रासंगिक GitHub मुद्दों GH18366 और GH26512 ।
प्रलेखन से,
आउटपुट कॉलम नामों पर नियंत्रण के साथ कॉलम-विशिष्ट एकत्रीकरण का समर्थन करने के लिए, पांडा विशेष सिंटैक्स को स्वीकार करता है GroupBy.agg()
, जिसे "एग्रीगेशन" नाम से जाना जाता है, जहां
- कीवर्ड आउटपुट कॉलम नाम हैं
- मान tuples हैं जिसका पहला तत्व चयन करने के लिए कॉलम है और दूसरा तत्व उस कॉलम पर लागू करने के लिए एकत्रीकरण है। पंडों ने पंडों को प्रदान किया। नामांकित प्रत्येक खेत के नाम के साथ ['कॉलम', 'एग्गफंक'] यह स्पष्ट करने के लिए कि तर्क क्या हैं। हमेशा की तरह, एकत्रीकरण एक कॉल करने योग्य या एक स्ट्रिंग उपनाम हो सकता है।
अब आप कीवर्ड तर्कों के माध्यम से एक टपल पास कर सकते हैं। टुपल्स के प्रारूप का अनुसरण करते हैं (<colName>, <aggFunc>)
।
import pandas as pd
pd.__version__
# '0.25.0.dev0+840.g989f912ee'
# Setup
df = pd.DataFrame({'kind': ['cat', 'dog', 'cat', 'dog'],
'height': [9.1, 6.0, 9.5, 34.0],
'weight': [7.9, 7.5, 9.9, 198.0]
})
df.groupby('kind').agg(
max_height=('height', 'max'), min_weight=('weight', 'min'),)
max_height min_weight
kind
cat 9.5 7.9
dog 34.0 7.5
वैकल्पिक रूप से, आप उपयोग कर सकते हैं pd.NamedAgg
(अनिवार्य रूप से एक नामांकित) जो चीजों को अधिक स्पष्ट बनाता है।
df.groupby('kind').agg(
max_height=pd.NamedAgg(column='height', aggfunc='max'),
min_weight=pd.NamedAgg(column='weight', aggfunc='min')
)
max_height min_weight
kind
cat 9.5 7.9
dog 34.0 7.5
यह श्रृंखला के लिए और भी सरल है, बस एक कीवर्ड तर्क के लिए aggfunc पास करें।
df.groupby('kind')['height'].agg(max_height='max', min_height='min')
max_height min_height
kind
cat 9.5 9.1
dog 34.0 6.0
अंत में, यदि आपके कॉलम के नाम मान्य अजगर पहचानकर्ता नहीं हैं, तो अनपैकिंग वाले शब्दकोश का उपयोग करें:
df.groupby('kind')['height'].agg(**{'max height': 'max', ...})
पंडों <0.25
0.24 तक के पंडों के अधिक हालिया संस्करणों में, अगर एकत्रीकरण आउटपुट के लिए स्तंभ नामों को निर्दिष्ट करने के लिए एक शब्दकोश का उपयोग किया जाता है, तो आपको एक मिलेगा FutureWarning
:
df.groupby('dummy').agg({'returns': {'Mean': 'mean', 'Sum': 'sum'}})
# FutureWarning: using a dict with renaming is deprecated and will be removed
# in a future version
नाम बदलने वाले कॉलम के लिए शब्दकोश का उपयोग v0.20 में किया गया है। पांडा के अधिक हाल के संस्करणों पर, यह केवल टुपल्स की सूची को पारित करके अधिक निर्दिष्ट किया जा सकता है। यदि फ़ंक्शंस को इस तरह से निर्दिष्ट किया जाता है, तो उस कॉलम के सभी फ़ंक्शंस को (नाम, फ़ंक्शन) जोड़े के tuples के रूप में निर्दिष्ट करने की आवश्यकता होती है।
df.groupby("dummy").agg({'returns': [('op1', 'sum'), ('op2', 'mean')]})
returns
op1 op2
dummy
1 0.328953 0.032895
या,
df.groupby("dummy")['returns'].agg([('op1', 'sum'), ('op2', 'mean')])
op1 op2
dummy
1 0.328953 0.032895