pandas 0.23 - Panel.resample()

pandas.Panel.resample




pandas

pandas.Panel.resample

Panel.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