Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

कैसे अजगर पंडों में सूचकांक लेबल के साथ डेटा के सबसेट का चयन करने के लिए?

परिचय

इंडेक्स स्थिति का उपयोग करके या इंडेक्स लेबल का उपयोग करके डेटा के सबसेट का चयन करने के लिए पांडा के पास दोहरी चयन क्षमता है। इस पोस्ट में, मैं आपको दिखाऊंगा कि इंडेक्स लेबल का उपयोग करके "इंडेक्स लेबल का उपयोग करके डेटा का एक सबसेट कैसे चुनें"।

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

पंडों के पास .loc और.iloc विशेषताएँ उपलब्ध हैं जो अपने स्वयं के अनूठे तरीकों से अनुक्रमणिका संचालन करने के लिए उपलब्ध हैं। ) with.iloc विशेषता, पांडा केवल स्थिति के आधार पर चयन करते हैं और पायथन सूचियों के समान काम करते हैं। .loc विशेषता केवल इंडेक्स लेबल द्वारा चुनती है, जो कि पायथन डिक्शनरी के काम करने के तरीके के समान है।

.loc[] के साथ अनुक्रमणिका लेबल का उपयोग करके डेटा का एक सबसेट चुनें []

loc और iloc विशेषताएँ Series और DataFrame दोनों पर उपलब्ध हैं

1. इंडेक्स के रूप में शीर्षक के साथ मूवी डेटासेट आयात करें।

import pandas as pd
movies = pd.read_csv("https://raw.githubusercontent.com/sasankac/TestDataSet/master/movies_data.csv",
index_col="title",
usecols=["title","budget","vote_average","vote_count"])

मैं हमेशा इंडेक्स को सॉर्ट करने की सलाह देता हूं, खासकर अगर इंडेक्स स्ट्रिंग्स से बना हो। यदि आप अपनी अनुक्रमणिका को क्रमबद्ध करते समय एक विशाल डेटासेट के साथ काम कर रहे हैं तो आपको अंतर दिखाई देगा।

movies.sort_index(inplace = True)
movies.head(3)


     budget vote_average vote_count
title
___________________________________
#Horror 1500000 3.3 52
(500) Days of Summer 7500000 7.2 2904
10 Cloverfield Lane 15000000 6.8 2468

मैंने सॉर्ट_इंडेक्स और "इनप्लेस =ट्रू" पैरामीटर का उपयोग करके इंडेक्स को सॉर्ट किया है।

1. लोक पद्धति के वाक्य-विन्यास के बारे में एक दिलचस्प बात यह है कि यह कोष्ठक नहीं लेता है () बल्कि वर्गाकार लेता है []। मुझे लगता है (गलत हो सकता है) ऐसा इसलिए है क्योंकि वे निरंतरता चाहते थे यानी आप [] का उपयोग श्रृंखला पर निकालने के लिए कर सकते हैं, जबकि डेटाफ्रेम पर लागू होने पर आपको कॉलम मिलेंगे।

# extract "Spider-Man 3" ( I'm not a big fan of spidy)
movies.loc["Spider-Man 3"]


budget 258000000.0
vote_average 5.9
vote_count 3576.0
Name: Spider-Man 3, dtype: float64

1. कई मान निकालने के लिए एक स्लाइस का उपयोग करें। मैं उन फिल्मों को खींचने जा रहा हूं जो मैंने नहीं देखी हैं। चूंकि यह एक स्ट्रिंग लेबल है, इसलिए हमें "अवतार" सहित हमारे खोज मानदंड के लिए सभी डेटा प्राप्त होने जा रहे हैं।

याद रखें - यदि आप Python List के साथ काम करते हैं तो अंतिम मान को बाहर रखा गया है, लेकिन चूंकि हम स्ट्रिंग्स के साथ काम कर रहे हैं, यह समावेशी है।

movies.loc["Alien":"Avatar"]


budget vote_average vote_count
title
Alien 11000000 7.9 4470
Alien Zone 0 4.0 3
Alien: Resurrection 70000000 5.9 1365
Aliens 18500000 7.7 3220
Aliens in the Attic 45000000 5.3 244
... ... ... ...
Australia 130000000 6.3 694
Auto Focus 7000000 6.1 56
Automata 7000000 5.6 670
Autumn in New York 65000000 5.7 135
Avatar 237000000 7.2 11800

167 पंक्तियाँ × 3 स्तंभ

1. क्या मुझे दो या दो से अधिक यादृच्छिक फिल्में मिल सकती हैं जो एक दूसरे के बगल में नहीं हैं? निश्चित रूप से हाँ, लेकिन आपको अपनी ज़रूरत की फ़िल्मों की सूची को पास करने के लिए और अधिक प्रयास करने की आवश्यकता है।

मेरा मतलब यह था कि आपके पास वर्गाकार कोष्ठकों के साथ वर्गाकार कोष्ठक होने चाहिए।

movies.loc[["Avatar","Avengers: Age of Ultron"]]

budget vote_average vote_count
title
Avatar 237000000 7.2 11800
Avengers: Age of Ultron 280000000 7.3 6767

6. क्या मैं चयन के क्रम को बदल सकता हूँ? बेशक, आप एक क्रम में आवश्यक लेबलों की सूची निर्दिष्ट करके स्वयं की सहायता कर सकते हैं।

हालांकि यह उन लेबलों की सूची निर्दिष्ट करने के लिए अच्छा लगता है जिन्हें आप निकालना चाहते हैं, क्या आप जानते हैं कि यदि आपने किसी मान की गलत वर्तनी की है तो क्या होगा? पंडों ने गलत वर्तनी वाले लेबल के लिए लापता मान (NaN) को अटका दिया होगा। लेकिन वे दिन गए, नवीनतम अपडेट के साथ यह एक अपवाद खड़ा करता है।

movies.loc[["Avengers: Age of Ultron","Avatar","When is Avengers next movie?"]]


---------------------------------------------------------------------------
KeyError
Traceback (most recent call last)
<ipython-input-6-ebe975264840> in <module>
----> 1 movies.loc[["Avengers: Age of Ultron","Avatar","When is Avengers next movie?"]]

~\anaconda3\lib\site-packages\pandas\core\indexing.py in
__getitem__
(self, key)
1766
1767 maybe_callable = com.apply_if_callable(
key,self.obj)
-> 1768
return self._getitem_axis(maybe_callable,axis = axis)
1769
1770 def_is_scalar_access(self,key:Tuple):
~\anaconda3\lib\site-packages\pandas\core\indexing.py
in
_getitem_axis
(self, key, axis)
1952 raiseValueError("Cannot index with multidimensional key")
1953
-> 1954 return self._getitem_iterable(key,
axis=axis)
1955
1956 # nested tuple slicing
~\anaconda3\lib\site-packages\pandas\core\indexing.py
in_getitem_iterable(self, key, axis)
1593 else:
1594 # A collection of keys
-> 1595 keyarr,indexer=self._get_listlike_indexer(key,axis,raise_missing=False)
1596 return self.obj._reindex_with_indexers(
1597 {axis:[keyarr,indexer]},copy=True,allow_dups=True
~\anaconda3\lib\site-packages\pandas\core\indexing.py
in
_get_listlike_indexer(self, key, axis, raise_missing)
1550 keyarr,indexer,new_indexer=ax._reindex_non_unique
(keyarr)
1551
-> 1552 self._validate_read_indexer(
1553 keyarr,indexer,o._get_axis_number
(axis),raise_missing=raise_missing
1554 )
~\anaconda3\lib\site-packages\pandas\core\indexing.py
in
_validate_read_indexer
(self, key, indexer, axis, raise_missing)
1652 # just raising
1653 ifnot(ax.is_categorical()orax.is_interval()
)
:
-> 1654 raise KeyError(
1655 "Passing list-likes to .loc or [] with any missing labels "
1656 "is no longer supported, see "

KeyError:'किसी भी लापता लेबल के साथ .loc या [] को सूची-पसंद पास करना अब समर्थित नहीं है, देखें https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex -सूची की तरह'

देखभाल करने का एक तरीका सीधे इंडेक्स में मानों की जांच करना है।

"When is Avengers next movie?"in movies.index

आउटपुट

False

यदि आप त्रुटि को अनदेखा करना चाहते हैं और आगे बढ़ना चाहते हैं तो आप नीचे दिए गए दृष्टिकोण का उपयोग कर सकते हैं

movies.query("title in ('Avatar','When is Avengers next Movie?')")


budget vote_average vote_count
title
Avatar 237000000 7.2 11800

  1. पायथन - पांडस डेटाफ्रेम के सबसेट का चयन कैसे करें

    मान लें कि Microsoft Excel में खोली गई हमारी CSV फ़ाइल की सामग्री निम्नलिखित हैं - सबसे पहले, CSV फ़ाइल से पंडों के डेटाफ़्रेम में डेटा लोड करें - dataFrame = pd.read_csv("C:\\Users\\amit_\\Desktop\\SalesData.csv") उपसमुच्चय का चयन करने के लिए वर्गाकार कोष्ठकों का प्रयोग करें। कोष्ठक म

  1. पायथन पांडा में लेक्सिकोग्राफिकल स्लाइसिंग का उपयोग करके डेटा का सबसेट कैसे चुनें?

    परिचय इंडेक्स स्थिति का उपयोग करके या इंडेक्स लेबल का उपयोग करके डेटा के सबसेट का चयन करने के लिए पांडा के पास दोहरी चयन क्षमता है। इस पोस्ट में, मैं आपको दिखाऊंगा कि लेक्सिकोग्राफिकल स्लाइसिंग का उपयोग करके डेटा का एक सबसेट कैसे चुनें। Google डेटासेट से भरा है। kaggle.com में मूवी डेटासेट खोजें।

  1. पायथन - पंडों के साथ डेटा फ़िल्टर करना। क्वेरी () विधि

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