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()
"সিনেমার নামকরণ" নামে পরিচিত বিশেষ সিনট্যাক্স গ্রহণ করে , যেখানে
- কীওয়ার্ডগুলি আউটপুট কলামের নাম
- মানগুলি হ'ল টিপলস যার প্রথম উপাদানটি নির্বাচন করার জন্য কলাম এবং দ্বিতীয় উপাদানটি সেই কলামটিতে প্রয়োগ করার জন্য সমষ্টি। আর্গুমেন্টগুলি কী তা পরিষ্কার করার জন্য পান্ডস পান্ডস সরবরাহ করেন amed যথারীতি, সমষ্টিটি কলযোগ্য বা একটি স্ট্রিং ওরফে হতে পারে।
আপনি এখন কীওয়ার্ড আর্গুমেন্টের মাধ্যমে একটি টুপল পাস করতে পারেন। টিপলগুলি এর ফর্ম্যাটটি অনুসরণ করে (<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
এটি সিরিজের পক্ষে আরও সহজ, কেবল একটি কীওয়ার্ড আর্গুমেন্টে অ্যাগগ্রাফকে দিন।
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-এ অবনতিযুক্ত। পান্ডার সাম্প্রতিক সংস্করণগুলিতে, টিউপসগুলির একটি তালিকা পাস করে এটি আরও সহজভাবে নির্দিষ্ট করা যেতে পারে। যদি এইভাবে ফাংশনগুলি নির্দিষ্ট করে দেওয়া হয় তবে column কলামটির সমস্ত ফাংশনকে (নাম, ফাংশন) জোড়াগুলির টিপলস হিসাবে নির্দিষ্ট করা দরকার।
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