लेबल-आधारित और स्थिति-आधारित एक्सेस
.loc (लेबल) और .iloc (पूर्णांक स्थिति) से तत्व प्राप्त कीजिए और दोनों के बीच का अंतर समझिए।
लेबल-आधारित और स्थिति-आधारित एक्सेस, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
Series Elements Access करने के दो तरीके
Pandas, किसी Series से तत्व चुनने के लिए दो मुख्य एक्सेसर प्रदान करता है: लेबल-आधारित एक्सेस के लिए .loc और पूर्णांक-स्थिति-आधारित एक्सेस के लिए .iloc। इनका उपयोग कब करना है, यह समझना बहुत महत्वपूर्ण है — पूर्णांक-इंडेक्स वाली Series पर गलत एक्सेसर का उपयोग करने से भ्रमित करने वाले परिणाम मिलते हैं, और Pandas 2.0 में अस्पष्ट सीधे ब्रैकेट-उपयोगों में से कई को अप्रचलित घोषित कर दिया गया है।
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.loc['b']) # 20 -- by label
print(s.iloc[1]) # 20 -- by position.loc: लेबल-आधारित एक्सेस
.loc तत्वों को उनके इंडेक्स लेबल के आधार पर एक्सेस करता है। आप एक लेबल (जिससे एकल मान मिलता है), लेबलों की सूची (जिससे एक Series मिलती है), या लेबलों का स्लाइस (दोनों छोर शामिल होते हैं, Python स्लाइस के विपरीत) दे सकते हैं। यदि लेबल मौजूद नहीं है, तो Pandas KeyError उत्पन्न करता है। जब लेबल अर्थपूर्ण हों, जैसे तारीखें, नाम या ID, तब .loc का उपयोग करें।
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50],
index=['a', 'b', 'c', 'd', 'e'])
print(s.loc['c']) # 30
print(s.loc[['a', 'c']]) # a:10 c:30
print(s.loc['b':'d']) # b:20 c:30 d:40 -- inclusive.iloc: स्थिति-आधारित एक्सेस
.iloc तत्वों को उनकी 0-आधारित पूर्णांक स्थिति के आधार पर एक्सेस करता है और इंडेक्स लेबलों को पूरी तरह अनदेखा करता है। इसका व्यवहार Python सूची के इंडेक्सिंग जैसा होता है: ऋणात्मक स्थितियाँ अंत से गिनी जाती हैं और स्लाइस Python के exclusive-stop नियम का पालन करते हैं। जब आपको लेबल की परवाह किए बिना ‘n-वाँ’ तत्व चाहिए, तब .iloc का उपयोग करें।
import pandas as pd
s = pd.Series([10, 20, 30, 40, 50],
index=['a', 'b', 'c', 'd', 'e'])
print(s.iloc[2]) # 30 -- third element
print(s.iloc[-1]) # 50 -- last element
print(s.iloc[1:4]) # b:20 c:30 d:40 -- exclusive stopजहाँ .loc और .iloc अलग-अलग परिणाम देते हैं
यह अंतर पूर्णांक-लेबल वाली Series में सबसे अधिक महत्वपूर्ण होता है। यदि किसी Series के इंडेक्स लेबल [5, 10, 15] हैं, तो s.loc[5] लेबल 5 वाले तत्व (पहला तत्व) को लौटाता है, जबकि s.iloc[5] IndexError उत्पन्न करता है, क्योंकि इसमें केवल 3 तत्व हैं। हमेशा इस आधार पर चुनें कि आपका आशय ‘X लेबल वाला तत्व’ है या ‘X-वाँ तत्व’।
import pandas as pd
s = pd.Series([100, 200, 300], index=[5, 10, 15])
print(s.loc[10]) # 200 -- element with label 10
print(s.iloc[1]) # 200 -- second element
# s.loc[1] would raise KeyError -- no label 1.loc से कई लेबल चुनना
कई तत्वों को किसी भी क्रम में चुनने के लिए .loc को एक सूची दें; सूची में लेबल दोहराए भी जा सकते हैं। परिणाम एक नई Series होती है, जिसमें आपके द्वारा दी गई सूची के समान लेबल होते हैं। यह NumPy की fancy indexing के समान है, लेकिन स्थितियों के बजाय इंडेक्स लेबलों के आधार पर संरेखित होती है। विश्लेषणात्मक पाइपलाइन में कॉलमों का क्रम बदलने या उनका उपसमुच्चय चुनने के लिए इसका अक्सर उपयोग किया जाता है।
import pandas as pd
s = pd.Series({'Jan': 100, 'Feb': 200, 'Mar': 300, 'Apr': 400})
# Select Q1 months in reverse order
print(s.loc[['Mar', 'Feb', 'Jan']])
# Mar 300
# Feb 200
# Jan 100.loc से लेबल स्लाइस करना
Python स्लाइस के विपरीत, .loc के स्लाइस में दोनों छोर शामिल होते हैं। s.loc['b':'d'] b, c और d लेबल वाले तत्व लौटाता है। यदि आप Python के exclusive-stop नियम के अभ्यस्त हैं, तो यह आश्चर्यजनक लग सकता है। सुनिश्चित करें कि जिन लेबलों के बीच आप स्लाइस कर रहे हैं, वे वास्तव में इंडेक्स में मौजूद हों; अन्यथा स्लाइस बिना किसी सूचना के अप्रत्याशित परिणाम लौटाएगा।
import pandas as pd
s = pd.Series(range(5), index=['a', 'b', 'c', 'd', 'e'])
print(s.loc['b':'d'])
# b 1
# c 2
# d 3
# dtype: int64
# Note: 'd' is INCLUDED (inclusive stop).loc से बूलियन इंडेक्सिंग
तत्वों को फ़िल्टर करने के लिए आप .loc को बूलियन Series दे सकते हैं। इस बूलियन Series का इंडेक्स लक्ष्य Series के इंडेक्स के समान होना चाहिए। यह NumPy के बूलियन मास्किंग का Pandas समकक्ष है और & तथा | के साथ संयुक्त शर्तों का समर्थन करता है। DataFrames में पंक्तियों को फ़िल्टर करने का भी यही मानक तरीका है।
import pandas as pd
s = pd.Series([3, 7, 2, 9, 1], index=['a', 'b', 'c', 'd', 'e'])
print(s.loc[s > 4])
# b 7
# d 9
# dtype: int64.loc और .iloc से मान सेट करना
.loc और .iloc दोनों असाइनमेंट के बाईं ओर आकर मानों को उसी स्थान पर संशोधित कर सकते हैं। यही सही तरीका है — s['a'] = 99 जैसे chained indexing का उपयोग करने पर DataFrames में SettingWithCopyWarning आ सकती है। Series के लिए सीधे लेबल से एक्सेस करना सामान्यतः सुरक्षित है, लेकिन .loc स्पष्ट और अनुशंसित है।
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
s.loc['b'] = 99
print(s)
# a 10
# b 99
# c 30Series में ब्रैकेट से एक्सेस
सीधा ब्रैकेट नोटेशन s['label'] लेबल से एक्सेस करने के लिए काम करता है और स्ट्रिंग इंडेक्स के मामले में s.loc['label'] के समान है। पूर्णांक इंडेक्स के लिए इसका व्यवहार अस्पष्ट था और Pandas 2.0 में बदल दिया गया — अब इसका अर्थ हमेशा लेबल से एक्सेस करना होता है। स्पष्ट और भविष्य में भी काम करने वाले कोड के लिए, ब्रैकेट के अर्थ पर निर्भर रहने के बजाय हमेशा .loc या .iloc का स्पष्ट रूप से उपयोग करें।
import pandas as pd
s = pd.Series([10, 20, 30], index=['x', 'y', 'z'])
print(s['y']) # 20 -- label access via brackets
print(s.loc['y']) # 20 -- explicit and preferredDatetimeIndex से तत्वों को एक्सेस करना
जब किसी Series में DatetimeIndex होता है, तो सुविधाजनक रेंज चयन के लिए .loc आंशिक तारीख वाली स्ट्रिंग स्वीकार करता है। s.loc['2023'] 2023 के सभी तत्व लौटाता है, और s.loc['2023-01':'2023-06'] 2023 की पहली छमाही लौटाता है। समय-श्रृंखला पर काम करने के लिए यह Pandas की सबसे सुविधाजनक सुविधाओं में से एक है।
import pandas as pd
dates = pd.date_range('2023-01-01', periods=5, freq='ME')
values = pd.Series([10, 20, 30, 40, 50], index=dates)
print(values.loc['2023-03':'2023-05'])
# 2023-03-31 30
# 2023-04-30 40
# 2023-05-31 50एकल तत्व की तेज़ एक्सेस के लिए at और iat
.at[label] और .iat[position] अनुकूलित scalar एक्सेसर हैं — किसी tight loop में एकल तत्व को एक्सेस करते समय ये .loc और .iloc से तेज़ होते हैं, क्योंकि Series ऑब्जेक्ट लौटाने का अतिरिक्त खर्च इनमें नहीं होता। ये कई तत्वों का चयन नहीं कर सकते। बार-बार एकल तत्व खोजते समय अधिकतम प्रदर्शन के लिए इनका उपयोग करें।
import pandas as pd
s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.at['b']) # 20 -- label scalar access
print(s.iat[2]) # 30 -- position scalar accessत्वरित जाँच
इस पाठ से .loc और .iloc के बारे में अपनी समझ जाँचें।
पाठ का पुनरावलोकन
इस पाठ में आपने सीखा: .loc इंडेक्स लेबल के आधार पर तत्वों को एक्सेस करता है और स्लाइस के दोनों छोर शामिल करता है, .iloc पूर्णांक स्थिति के आधार पर तत्वों को एक्सेस करता है और Python सूचियों की तरह स्लाइस के अंतिम छोर को शामिल नहीं करता, तथा लूप में एकल तत्व खोजने के लिए .at और .iat तेज़ scalar एक्सेसर हैं। आगे हम Series पर वेक्टराइज़्ड ऑपरेशनों और Pandas द्वारा इंडेक्स संरेखण को स्वचालित रूप से संभालने का तरीका देखेंगे।
एआई शिक्षक के साथ Python सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “लेबल-आधारित और स्थिति-आधारित एक्सेस” पाठ निःशुल्क है?
हाँ—“लेबल-आधारित और स्थिति-आधारित एक्सेस” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“लेबल-आधारित और स्थिति-आधारित एक्सेस” में मैं क्या सीखूँगा?
.loc (लेबल) और .iloc (पूर्णांक स्थिति) से तत्व प्राप्त कीजिए और दोनों के बीच का अंतर समझिए। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“लेबल-आधारित और स्थिति-आधारित एक्सेस” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Series बनाना
- लेबल-आधारित और स्थिति-आधारित एक्सेस
- Series पर वेक्टराइज़्ड ऑपरेशन
- उपयोगी Series विधियाँ