pandas 0.23 - 10. Indexing and Selecting Data

अनुक्रमण और डेटा का चयन




pandas

अनुक्रमण और डेटा का चयन

पंडों की वस्तुओं में सूचना लेबल करने वाली अक्ष कई उद्देश्यों को पूरा करती है:

  • विश्लेषण, विज़ुअलाइज़ेशन और इंटरैक्टिव कंसोल डिस्प्ले के लिए महत्वपूर्ण, ज्ञात संकेतकों का उपयोग करके डेटा (यानी मेटाडेटा प्रदान करता है ) की पहचान करता है।
  • स्वचालित और स्पष्ट डेटा संरेखण को सक्षम करता है।
  • डेटा सेट के सबसेट की सहज प्राप्ति और सेटिंग की अनुमति देता है।

इस खंड में, हम अंतिम बिंदु पर ध्यान केंद्रित करेंगे: अर्थात्, टुकड़ा करने के लिए कैसे, पासा, और आम तौर पर पंडों की वस्तुओं के सबसेट प्राप्त और सेट करें। प्राथमिक फोकस सीरीज़ और डेटाफ़्रेम पर होगा क्योंकि उन्हें इस क्षेत्र में अधिक विकास प्राप्त हुआ है।

ध्यान दें

अजगर और NumPy अनुक्रमण ऑपरेटर [] और विशेषता ऑपरेटर . उपयोग के मामलों की एक विस्तृत श्रृंखला में पंडों के डेटा संरचनाओं को त्वरित और आसान पहुंच प्रदान करें। यह इंटरएक्टिव काम को सहज बनाता है, क्योंकि यह जानने के लिए थोड़ा नया है कि क्या आप पहले से ही जानते हैं कि पायथन डिक्शनरी और न्यूमी सरणियों से कैसे निपटना है। हालाँकि, एक्सेस किए जाने वाले डेटा का प्रकार पहले से ज्ञात नहीं है, सीधे मानक ऑपरेटरों के उपयोग से कुछ अनुकूलन सीमाएँ हैं। उत्पादन कोड के लिए, हमने अनुशंसा की कि आप इस अध्याय में उजागर पंडों के डेटा एक्सेस के तरीकों का लाभ उठाएँ।

चेतावनी

एक सेटिंग ऑपरेशन के लिए एक प्रतिलिपि या एक संदर्भ लौटाया जाता है, संदर्भ पर निर्भर हो सकता है। इसे कभी-कभी chained assignment कहा जाता है और इसे टाला जाना चाहिए। प्रतिलिपि बनाम एक दृश्य लौटना देखें

चेतावनी

बदलावों के सारांश के लिए, तैरते हुए एक पूर्णांक-आधारित इंडेक्स को 0.18.0 में स्पष्ट किया गया है, here देखें।

MultiIndex / उन्नत अनुक्रमण के लिए MultiIndex और उन्नत अनुक्रमण प्रलेखन देखें।

कुछ उन्नत रणनीतियों के लिए cookbook की cookbook देखें।

अनुक्रमण के लिए विभिन्न विकल्प

ऑब्जेक्ट चयन में अधिक स्पष्ट स्थान आधारित अनुक्रमण का समर्थन करने के लिए कई उपयोगकर्ता-अनुरोधित परिवर्धन हैं। पंडों अब तीन प्रकार के मल्टी-एक्सिस इंडेक्सिंग का समर्थन करते हैं।

  • .loc मुख्य रूप से लेबल आधारित है, लेकिन इसका उपयोग बूलियन सरणी के साथ भी किया जा सकता है। .loc KeyError तब बढ़ाएगा जब आइटम नहीं .loc । अनुमत इनपुट हैं:

    • एक एकल लेबल, जैसे 5 या 'a' (ध्यान दें कि 5 को सूचकांक के लेबल के रूप में व्याख्या किया गया है। यह उपयोग सूचकांक के साथ पूर्णांक स्थिति नहीं है ।)
    • लेबल की सूची या सारणी ['a', 'b', 'c']
    • लेबल 'a':'f' साथ एक स्लाइस ऑब्जेक्ट (ध्यान दें कि सामान्य पायथन स्लाइस के विपरीत, प्रारंभ और रोक दोनों को शामिल किया जाता है, जब सूचकांक में मौजूद होता है! लेबल के साथ स्लाइसिंग देखें)।
    • एक बूलियन सरणी
    • एक तर्क (कॉलिंग सीरीज़, डेटाफ़्रेम या पैनल) के साथ एक कॉल करने callable फ़ंक्शन और वह अनुक्रमण के लिए मान्य आउटपुट (उपरोक्त में से एक) देता है।

      संस्करण 0.18.1 में नया।

    लेबल द्वारा चयन पर और देखें।

  • .iloc मुख्य रूप से पूर्णांक स्थिति पर आधारित है (अक्ष के 0 से length-1 ), लेकिन इसका उपयोग बूलियन सरणी के साथ भी किया जा सकता है। .iloc को बढ़ाएगा यदि एक अनुरोधित अनुक्रमणिका आउट-ऑफ-सीमा है, सिवाय स्लाइस इंडेक्सर्स जो आउट-ऑफ-बाउंड इंडेक्सिंग की अनुमति देता है। (यह अजगर / न्यूमिस स्लाइस शब्दार्थ के अनुरूप है)। अनुमत इनपुट हैं:

    • एक पूर्णांक जैसे 5
    • पूर्णांकों की एक सूची या सारणी [4, 3, 0]
    • किलों 1:7 साथ एक टुकड़ा वस्तु।
    • एक बूलियन सरणी।
    • एक तर्क (कॉलिंग सीरीज़, डेटाफ़्रेम या पैनल) के साथ एक कॉल करने callable फ़ंक्शन और वह अनुक्रमण के लिए मान्य आउटपुट (उपरोक्त में से एक) देता है।

      संस्करण 0.18.1 में नया।

    स्थिति , उन्नत अनुक्रमण और उन्नत श्रेणीबद्ध द्वारा चयन पर अधिक देखें।

  • .loc , .iloc , और भी [] अनुक्रमण इंडेक्सर के रूप में एक .iloc करने योग्य को स्वीकार कर सकता है। Callable द्वारा चयन पर अधिक देखें।

बहु-कुल्हाड़ियों के चयन के साथ किसी ऑब्जेक्ट से मान प्राप्त करना निम्नलिखित नोटेशन (उदाहरण के रूप में .loc का उपयोग करता है, लेकिन निम्नलिखित .iloc पर भी लागू होता है) का उपयोग करता है। कुल्हाड़ियों का कोई भी पहुंच शून्य टुकड़ा हो सकता है:। विनिर्देशन से p.loc['a'] को माना जाता है : उदाहरण के लिए p.loc['a'] p.loc['a', :, :] बराबर है।

वस्तु प्रकार indexers
शृंखला s.loc[indexer]
डेटा ढांचा df.loc[row_indexer,column_indexer]
पैनल p.loc[item_indexer,major_indexer,minor_indexer]

मूल बातें

जैसा कि अंतिम खंड में डेटा संरचनाओं को पेश करते समय उल्लेख किया गया है, पायथन में वर्ग व्यवहार को लागू करने से परिचित लोगों के लिए [] (उर्फ __getitem__ [] साथ अनुक्रमण का प्राथमिक कार्य निम्न-आयामी स्लाइस का चयन कर रहा है। निम्न तालिकाएँ उस समय मान दिखाती हैं जब पंडों की वस्तुओं को अनुक्रमित करते हुए [] :

वस्तु प्रकार चयन वापसी मान प्रकार
शृंखला series[label] अदिश मान
डेटा ढांचा frame[colname] Colname से संबंधित Series
पैनल panel[itemname] DataFrame अनुरूप डेटाफ़्रेम

यहां हम एक सरल समय श्रृंखला डेटा का निर्माण करते हैं, जिसका उपयोग अनुक्रमित कार्यक्षमता को दर्शाने के लिए किया जाता है:

In [1]: dates = pd.date_range('1/1/2000', periods=8)

In [2]: df = pd.DataFrame(np.random.randn(8, 4), index=dates, columns=['A', 'B', 'C', 'D'])

In [3]: df
Out[3]: 
                   A         B         C         D
2000-01-01  0.469112 -0.282863 -1.509059 -1.135632
2000-01-02  1.212112 -0.173215  0.119209 -1.044236
2000-01-03 -0.861849 -2.104569 -0.494929  1.071804
2000-01-04  0.721555 -0.706771 -1.039575  0.271860
2000-01-05 -0.424972  0.567020  0.276232 -1.087401
2000-01-06 -0.673690  0.113648 -1.478427  0.524988
2000-01-07  0.404705  0.577046 -1.715002 -1.039268
2000-01-08 -0.370647 -1.157892 -1.344312  0.844885

In [4]: panel = pd.Panel({'one' : df, 'two' : df - df.mean()})

In [5]: panel
Out[5]: 
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 8 (major_axis) x 4 (minor_axis)
Items axis: one to two
Major_axis axis: 2000-01-01 00:00:00 to 2000-01-08 00:00:00
Minor_axis axis: A to D

ध्यान दें

अनुक्रमण कार्यक्षमता में से कोई भी समय श्रृंखला विशिष्ट नहीं है जब तक कि विशेष रूप से कहा गया हो।

इस प्रकार, ऊपर दिए अनुसार, हमारे पास सबसे बुनियादी अनुक्रमण है [] :

In [6]: s = df['A']

In [7]: s[dates[5]]
Out[7]: -0.67368970808837059

In [8]: panel['two']