pandas
डेटाफ्रेम का बूलियन इंडेक्सिंग
खोज…
परिचय
डेटाफ्रेम इंडेकर ऑब्जेक्ट्स .ix
, .loc
, .iloc
का उपयोग करके डेटाफ़्रेम में पंक्तियों तक पहुँचना और यह बूलियन मास्क का उपयोग करने से खुद को कैसे अलग करता है।
एक बूलियन इंडेक्स के साथ एक DataFrame एक्सेस करना
यह हमारा उदाहरण डेटा फ्रेम होगा:
df = pd.DataFrame({"color": ['red', 'blue', 'red', 'blue']},
index=[True, False, True, False])
color
True red
False blue
True red
False blue
के साथ पहुँच .loc
df.loc[True]
color
True red
True red
.iloc
साथ एक्सेस करना
df.iloc[True]
>> TypeError
df.iloc[1]
color blue
dtype: object
यह ध्यान रखना महत्वपूर्ण है कि पुराने पांडा संस्करण बूलियन और पूर्णांक इनपुट के बीच अंतर नहीं करते थे, इस प्रकार
.iloc[True]
.iloc[1]
के समान ही.iloc[1]
.ix
साथ एक्सेस करना
df.ix[True]
color
True red
True red
df.ix[1]
color blue
dtype: object
जैसा कि आप देख सकते हैं, .ix
के दो व्यवहार हैं। यह कोड में बहुत बुरा अभ्यास है और इस तरह इसे टाला जाना चाहिए। कृपया अधिक स्पष्ट होने के लिए .iloc
या .loc
का उपयोग करें।
बूलियन मास्क को डेटाफ़्रेम पर लागू करना
यह हमारा उदाहरण डेटा फ्रेम होगा:
color name size
0 red rose big
1 blue violet big
2 red tulip small
3 blue harebell small
जादू का उपयोग करना __getitem__
या []
गौण। इसे उसी लंबाई की सही और गलत की सूची देना, जैसा कि डेटाफ्रेम आपको देगा:
df[[True, False, True, False]]
color name size
0 red rose big
2 red tulip small
स्तंभ मान के आधार पर मास्किंग डेटा
यह हमारा उदाहरण डेटा फ्रेम होगा:
color name size
0 red rose big
1 blue violet small
2 red tulip small
3 blue harebell small
डेटा कॉलम से किसी एक कॉलम तक पहुँचना, हम एक साधारण तुलना ==
का उपयोग करके दिए गए वेरिएबल के कॉलम के हर तत्व की तुलना कर सकते हैं, एक pd.Series
का निर्माण pd.Series
। True और False की pd.Series
df['size'] == 'small'
0 False
1 True
2 True
3 True
Name: size, dtype: bool
यह pd.Series
एक का एक विस्तार है np.array
जो एक साधारण का एक विस्तार है list
, इस प्रकार हम को यह हाथ कर सकते हैं __getitem__
या []
उपरोक्त उदाहरण में वर्णित एक्सेसर।
size_small_mask = df['size'] == 'small'
df[size_small_mask]
color name size
1 blue violet small
2 red tulip small
3 blue harebell small
सूचकांक मूल्य के आधार पर मास्किंग डेटा
यह हमारा उदाहरण डेटा फ्रेम होगा:
color size
name
rose red big
violet blue small
tulip red small
harebell blue small
हम एक स्तंभ मान की तरह, सूचकांक मूल्यों के आधार पर एक मुखौटा बना सकते हैं।
rose_mask = df.index == 'rose'
df[rose_mask]
color size
name
rose red big
लेकिन ऐसा करना लगभग वैसा ही है
df.loc['rose']
color red
size big
Name: rose, dtype: object
महत्वपूर्ण अंतर, जब .loc
केवल एक पंक्ति का सामना करता है जो कि मेल खाता है, तो यह pd.Series
, यदि यह उस मैच से अधिक पंक्तियों का सामना करता है, तो यह pd.DataFrame
को लौटा pd.DataFrame
। यह इस पद्धति को अस्थिर बनाता है।
इस व्यवहार को .loc
एकल प्रविष्टि की सूची देकर नियंत्रित किया जा सकता है। यह उसे डेटा फ़्रेम वापस करने के लिए बाध्य करेगा।
df.loc[['rose']]
color size
name
rose red big