यह एक नमूना डाटासेट के साथ समझाने में आसान हो सकता है।
नमूना डेटा बनाएँ
मान लेते हैं कि हम साथ टाइमस्टैम्प का एकल स्तंभ, करते हैं date, और एक अन्य स्तंभ हम पर एक एकत्रीकरण प्रदर्शन करने के लिए चाहते हैं a।
df = pd.DataFrame({'date':pd.DatetimeIndex(['2012-1-1', '2012-6-1', '2015-1-1', '2015-2-1', '2015-3-1']),
'a':[9,5,1,2,3]}, columns=['date', 'a'])
df
date a
0 2012-01-01 9
1 2012-06-01 5
2 2015-01-01 1
3 2015-02-01 2
4 2015-03-01 3
साल-दर-साल समूह बनाने के कई तरीके हैं
yearप्रॉपर्टी के साथ डीटी एक्सेसर का उपयोग करें
dateइंडेक्स में रखें और वर्ष तक पहुंचने के लिए अनाम फ़ंक्शन का उपयोग करें
- प्रयोग
resampleविधि
- पांडा अवधि में परिवर्तित करें
.dtyearसंपत्ति के साथ गौण
जब आपके पास पांडा टाइमस्टैम्प का एक कॉलम (और इंडेक्स नहीं) होता है, तो आप एक्सेसर के साथ कई और अतिरिक्त गुणों और विधियों का उपयोग कर सकते हैं dt। उदाहरण के लिए:
df['date'].dt.year
0 2012
1 2012
2 2015
3 2015
4 2015
Name: date, dtype: int64
हम इसका उपयोग अपने समूह बनाने और किसी विशेष स्तंभ पर कुछ एकत्रीकरण की गणना करने के लिए कर सकते हैं:
df.groupby(df['date'].dt.year)['a'].agg(['sum', 'mean', 'max'])
sum mean max
date
2012 14 7 9
2015 6 2 3
सूचकांक में तारीख डालें और वर्ष तक पहुंचने के लिए अनाम फ़ंक्शन का उपयोग करें
यदि आप दिनांक स्तंभ को अनुक्रमणिका के रूप में सेट करते हैं, तो यह उसी गुणों और विधियों के साथ DateTimeIndex हो जाता है, जब अभिगमकर्ता dtसामान्य स्तंभ बनाता है
df1 = df.set_index('date')
df1.index.year
Int64Index([2012, 2012, 2015, 2015, 2015], dtype='int64', name='date')
दिलचस्प है, जब ग्रुपबी विधि का उपयोग करते हैं, तो आप इसे एक फ़ंक्शन पास कर सकते हैं। यह फ़ंक्शन अनुमानित रूप से डेटाफ्रेम के सूचकांक को पारित करेगा। तो, हम निम्नलिखित के साथ ऊपर से एक ही परिणाम प्राप्त कर सकते हैं:
df1.groupby(lambda x: x.year)['a'].agg(['sum', 'mean', 'max'])
sum mean max
2012 14 7 9
2015 6 2 3
resampleविधि का प्रयोग करें
यदि आपका दिनांक स्तंभ अनुक्रमणिका में नहीं है, तो आपको onपैरामीटर के साथ कॉलम निर्दिष्ट करना होगा । आपको ऑफसेट उर्फ को एक स्ट्रिंग के रूप में निर्दिष्ट करने की भी आवश्यकता है ।
df.resample('AS', on='date')['a'].agg(['sum', 'mean', 'max'])
sum mean max
date
2012-01-01 14.0 7.0 9.0
2013-01-01 NaN NaN NaN
2014-01-01 NaN NaN NaN
2015-01-01 6.0 2.0 3.0
पांडा अवधि में परिवर्तित करें
आप पंडों की अवधि ऑब्जेक्ट के लिए दिनांक स्तंभ भी परिवर्तित कर सकते हैं। पीरियड की लंबाई निर्धारित करने के लिए हमें ऑफसेट उपनाम में स्ट्रिंग के रूप में पास होना चाहिए।
df['date'].dt.to_period('A')
0 2012
1 2012
2 2015
3 2015
4 2015
Name: date, dtype: object
हम इसे एक समूह के रूप में उपयोग कर सकते हैं
df.groupby(df['date'].dt.to_period('Y'))['a'].agg(['sum', 'mean', 'max'])
sum mean max
2012 14 7 9
2015 6 2 3