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

Python Pandas में इंडेक्स लेबल का उपयोग करके डेटा का सबसेट कैसे चुनें?


परिचय

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

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

Pandas में .loc और .iloc एट्रिब्यूट उपलब्ध हैं जो अपने अनूठे तरीकों से इंडेक्स ऑपरेशन करते हैं। .iloc एट्रिब्यूट के साथ, Pandas केवल पोजीशन द्वारा चयन करता है और Python लिस्ट के समान काम करता है। .loc एट्रिब्यूट केवल इंडेक्स लेबल द्वारा चयन करता है, जो Python डिक्शनरी के काम करने के समान है।

.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

मैंने sort_index और inplace=True पैरामीटर का उपयोग करके इंडेक्स को सॉर्ट किया है।

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

# "Spider-Man 3" निकालें (मैं स्पाइडी का बड़ा प्रशंसक नहीं हूँ)
movies.loc["Spider-Man 3"]
budget         258000000.0
vote_average          5.9
vote_count         3576.0
Name: Spider-Man 3, dtype: float64

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

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

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 rows × 3 columns

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. क्या मैं चयन का क्रम बदल सकता हूँ? बिल्कुल, आप अपनी जरूरत के लेबल की सूची को एक क्रम में निर्दिष्ट करके खुद की मदद कर सकते हैं।

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

movies.loc[["Avengers: Age of Ultron", "Avatar", "When is Avengers next movie?"]]
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
...
KeyError: 'Passing list-likes to .loc or [] with any missing labels is no longer supported, see https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#deprecate-loc-reindex-listlike'

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

"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. पायथन - पैंडास DataFrame के सबसेट का चयन कैसे करें पायथन - पैंडास DataFrame के सबसेट का चयन कैसे करें

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

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

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

  1. Python - Pandas .query() मेथड से डेटा फ़िल्टर करना Python - Pandas .query() मेथड से डेटा फ़िल्टर करना

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