pandas 0.23 - DataFrame.resample()
pandas.DataFrame.resample

pandas.DataFrame.resample
-
DataFrame.resample(rule, how=None, axis=0, fill_method=None, closed=None, label=None, convention='start', kind=None, loffset=None, limit=None, base=0, on=None, level=None)
[source] -
आवृत्ति रूपांतरण और समय श्रृंखला के पुनर्निर्माण के लिए सुविधा विधि। ऑब्जेक्ट में एक डेटाइम-लाइक इंडेक्स (DatetimeIndex, PeriodIndex, या TimedeltaIndex) होना चाहिए, या डेटाइम-जैसे मानों को ऑन या लेवल कीवर्ड पर पास करना होगा।
पैरामीटर: नियम : स्ट्रिंग
लक्ष्य रूपांतरण का प्रतिनिधित्व ऑफसेट स्ट्रिंग या ऑब्जेक्ट
-
axis : int, optional, default 0
बंद : {'दाएँ', 'बाएँ'}
बिन अंतराल के कौन सा पक्ष बंद है। डिफॉल्ट 'M', 'A', 'Q', 'BM', 'BA', 'BQ', और 'W' को छोड़कर सभी फ्रिक्वेंसी ऑफ़सेट्स के लिए 'लेफ्ट' होता है, जिसमें सभी का डिफ़ॉल्ट 'राइट' होता है।
लेबल : {'दाएँ', 'बाएँ'}
बाल्टी के साथ कौन सा बिन बढ़त लेबल। डिफॉल्ट 'M', 'A', 'Q', 'BM', 'BA', 'BQ', और 'W' को छोड़कर सभी फ्रिक्वेंसी ऑफ़सेट्स के लिए 'लेफ्ट' होता है, जिसमें सभी का डिफ़ॉल्ट 'राइट' होता है।
सम्मेलन : {'प्रारंभ', 'अंत', 'एस', 'ई'}
केवल PeriodIndex के लिए, यह नियंत्रित करता है कि
rule
के प्रारंभ या अंत का उपयोग किया जाए या नहींतरह: {'टाइमस्टैम्प', 'अवधि'}, वैकल्पिक
परिणामी अनुक्रमणिका को
DateTimeIndex
या 'PeriodIndex
' में बदलने के लिए 'टाइमस्टैम्प' पास करें ताकि वह एकPeriodIndex
परिवर्तित होPeriodIndex
। डिफ़ॉल्ट रूप से इनपुट प्रतिनिधित्व को बरकरार रखा जाता है।लॉफ़सेट : टाइमडेल्टा
Resampled समय लेबल समायोजित करें
आधार : int, डिफ़ॉल्ट ०
आवृत्तियों के लिए जो समान रूप से 1 दिन उपविभाजित करते हैं, कुल अंतराल के "मूल"। उदाहरण के लिए, '5min' आवृत्ति के लिए, बेस 0 से 4 तक हो सकता है। डिफ़ॉल्ट से 0 तक
पर : स्ट्रिंग, वैकल्पिक
DataFrame के लिए, resampling के लिए अनुक्रमणिका के बजाय स्तंभ का उपयोग करें। कॉलम को डेटाइम-लाइक होना चाहिए।
संस्करण में नया 0.19.0।
स्तर : स्ट्रिंग या इंट, वैकल्पिक
एक मल्टीइन्डेक्स के लिए, स्तर (नाम या संख्या) को पुनःसमर्पण के लिए उपयोग करना। स्तर को डेटाइम-लाइक होना चाहिए।
संस्करण में नया 0.19.0।
यह दिखाता है: - पुनर्विक्रेता वस्तु
यह भी देखें
-
groupby
- मानचित्रण, फ़ंक्शन, लेबल या लेबल की सूची द्वारा समूह।
टिप्पणियाँ
अधिक के लिए उपयोगकर्ता गाइड देखें।
ऑफ़सेट स्ट्रिंग्स के बारे में अधिक जानने के लिए, कृपया इस लिंक को देखें।
उदाहरण
9 एक मिनट के टाइमस्टैम्प के साथ एक श्रृंखला बनाकर शुरू करें।
>>> index = pd.date_range('1/1/2000', periods=9, freq='T') >>> series = pd.Series(range(9), index=index) >>> series 2000-01-01 00:00:00 0 2000-01-01 00:01:00 1 2000-01-01 00:02:00 2 2000-01-01 00:03:00 3 2000-01-01 00:04:00 4 2000-01-01 00:05:00 5 2000-01-01 00:06:00 6 2000-01-01 00:07:00 7 2000-01-01 00:08:00 8 Freq: T, dtype: int64
श्रृंखला को 3 मिनट के डिब्बे में नीचे गिरा दिया और एक बिन में गिरने वाले टाइमस्टैम्प के मूल्यों को जोड़ दिया।
>>> series.resample('3T').sum() 2000-01-01 00:00:00 3 2000-01-01 00:03:00 12 2000-01-01 00:06:00 21 Freq: 3T, dtype: int64
उपरोक्त के रूप में श्रृंखला को 3 मिनट के डिब्बे में नीचे गिरा दें, लेकिन प्रत्येक बिन को बाएं के बजाय दाएं किनारे का उपयोग करके लेबल करें। कृपया ध्यान दें कि लेबल के रूप में उपयोग की जाने वाली बाल्टी में मूल्य बाल्टी में शामिल नहीं है, जिसे वह लेबल करता है। उदाहरण के लिए, मूल श्रृंखला में बाल्टी
2000-01-01 00:03:00
में मान 3 होता है, लेकिन लेबल2000-01-01 00:03:00
साथ resampled बाल्टी में सारांशित मूल्य में 3 शामिल नहीं है ( यदि यह किया जाता है, तो सम्मिलित मूल्य 6 होगा, न कि 3)। इस मान को शामिल करने के लिए बिन अंतराल के दाईं ओर को बंद करें जैसा कि इस एक के नीचे उदाहरण में दिया गया है।>>> series.resample('3T', label='right').sum() 2000-01-01 00:03:00 3 2000-01-01 00:06:00 12 2000-01-01 00:09:00 21 Freq: 3T, dtype: int64
उपरोक्त के रूप में श्रृंखला को 3 मिनट के डिब्बे में बंद करें, लेकिन बिन अंतराल के दाईं ओर बंद करें।
>>> series.resample('3T', label='right', closed='right').sum() 2000-01-01 00:00:00 0 2000-01-01 00:03:00 6 2000-01-01 00:06:00 15 2000-01-01 00:09:00 15 Freq: 3T, dtype: int64
30 सेकंड के डिब्बे में श्रृंखला को अपसाइड करें।
>>> series.resample('30S').asfreq()[0:5] #select first 5 rows 2000-01-01 00:00:00 0.0 2000-01-01 00:00:30 NaN 2000-01-01 00:01:00 1.0 2000-01-01 00:01:30 NaN 2000-01-01 00:02:00 2.0 Freq: 30S, dtype: float64
30 सेकंड के डिब्बे में श्रृंखला को अपसाइड करें और
pad
विधि का उपयोग करकेNaN
मान भरें।>>> series.resample('30S').pad()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 0 2000-01-01 00:01:00 1 2000-01-01 00:01:30 1 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64
30 सेकंड के डिब्बे में श्रृंखला को अपसाइड करें और
bfill
विधि का उपयोग करकेNaN
मान भरें।>>> series.resample('30S').bfill()[0:5] 2000-01-01 00:00:00 0 2000-01-01 00:00:30 1 2000-01-01 00:01:00 1 2000-01-01 00:01:30 2 2000-01-01 00:02:00 2 Freq: 30S, dtype: int64
apply
माध्यम से एक कस्टम फ़ंक्शन पासapply
>>> def custom_resampler(array_like): ... return np.sum(array_like)+5
>>> series.resample('3T').apply(custom_resampler) 2000-01-01 00:00:00 8 2000-01-01 00:03:00 17 2000-01-01 00:06:00 26 Freq: 3T, dtype: int64
एक PeriodIndex के साथ एक श्रृंखला के लिए, कीवर्ड
convention
का उपयोग यह नियंत्रित करने के लिए किया जा सकता है कि क्याrule
के प्रारंभ या अंत का उपयोग किया जाए।>>> s = pd.Series([1, 2], index=pd.period_range('2012-01-01', freq='A', periods=2)) >>> s 2012 1 2013 2 Freq: A-DEC, dtype: int64
'स्टार्ट'
convention
का उपयोग करके महीने में फिर से भरना। मान अवधि के पहले महीने को सौंपा गया है।>>> s.resample('M', convention='start').asfreq().head() 2012-01 1.0 2012-02 NaN 2012-03 NaN 2012-04 NaN 2012-05 NaN Freq: M, dtype: float64
महीने के अंत तक 'अंत'
convention
का उपयोग करके। मानों को अवधि के अंतिम महीने में सौंपा गया है।>>> s.resample('M', convention='end').asfreq() 2012-12 1.0 2013-01 NaN 2013-02 NaN 2013-03 NaN 2013-04 NaN 2013-05 NaN 2013-06 NaN 2013-07 NaN 2013-08 NaN 2013-09 NaN 2013-10 NaN 2013-11 NaN 2013-12 2.0 Freq: M, dtype: float64
DataFrame ऑब्जेक्ट्स के लिए,
on
कीवर्डon
रिसैम्पलिंग के लिए इंडेक्स के बजाय कॉलम को निर्दिष्ट करने के लिए इस्तेमाल किया जा सकता है।>>> df = pd.DataFrame(data=9*[range(4)], columns=['a', 'b', 'c', 'd']) >>> df['time'] = pd.date_range('1/1/2000', periods=9, freq='T') >>> df.resample('3T', on='time').sum() a b c d time 2000-01-01 00:00:00 0 3 6 9 2000-01-01 00:03:00 0 3 6 9 2000-01-01 00:06:00 0 3 6 9
मल्टीफ़ंडेक्स के साथ डेटाफ़्रेम के लिए, कीवर्ड
level
का उपयोग उस स्तर को निर्दिष्ट करने के लिए किया जा सकता है, जिस पर रेज़म्पलिंग की आवश्यकता होती है।>>> time = pd.date_range('1/1/2000', periods=5, freq='T') >>> df2 = pd.DataFrame(data=10*[range(4)], columns=['a', 'b', 'c', 'd'], index=pd.MultiIndex.from_product([time, [1, 2]]) ) >>> df2.resample('3T', level=0).sum() a b c d 2000-01-01 00:00:00 0 6 12 18 2000-01-01 00:03:00 0 4 8 12
-