मान लें कि मेरे पास उपयोगकर्ता गतिविधि का एक लॉग है और मैं प्रति दिन कुल अवधि और अद्वितीय उपयोगकर्ताओं की संख्या की रिपोर्ट उत्पन्न करना चाहता हूं।
import numpy as np
import pandas as pd
df = pd.DataFrame({'date': ['2013-04-01','2013-04-01','2013-04-01','2013-04-02', '2013-04-02'],
'user_id': ['0001', '0001', '0002', '0002', '0002'],
'duration': [30, 15, 20, 15, 30]})
एकत्रीकरण की अवधि बहुत सीधी है:
group = df.groupby('date')
agg = group.aggregate({'duration': np.sum})
agg
duration
date
2013-04-01 65
2013-04-02 45
मैं जो करना चाहता हूं, वह एक ही समय में अवधि और गिनती भिन्न है, लेकिन मैं count_ististist के लिए एक समान नहीं मिल सकता है:
agg = group.aggregate({ 'duration': np.sum, 'user_id': count_distinct})
यह काम करता है, लेकिन निश्चित रूप से एक बेहतर तरीका है, नहीं?
group = df.groupby('date')
agg = group.aggregate({'duration': np.sum})
agg['uv'] = df.groupby('date').user_id.nunique()
agg
duration uv
date
2013-04-01 65 2
2013-04-02 45 1
मुझे लगता है कि मुझे केवल एक फ़ंक्शन प्रदान करने की आवश्यकता है जो श्रृंखला फ़ंक्शन के अलग-अलग आइटमों की संख्या को कुल फ़ंक्शन पर लौटाता है, लेकिन मेरे पास अपने निपटान में विभिन्न पुस्तकालयों के लिए बहुत अधिक जोखिम नहीं है। इसके अलावा, ऐसा लगता है कि ग्रुपबी ऑब्जेक्ट पहले से ही इस जानकारी को जानता है, इसलिए क्या मैं सिर्फ प्रयास को दोहरा नहीं सकता हूं?