Pandas & NumPy Academy · पाठ

isin() और between() फ़िल्टर

isin() से उन पंक्तियों को चुनिए जिनका स्तंभ मान किसी सूची में है, या between() से किसी संख्यात्मक सीमा के भीतर है।

पाठ 3, कुल 4 में से13 चरण

isin() और between() फ़िल्टर, CoddyKit पर Pandas & NumPy Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Pandas & NumPy Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

isin() विधि का परिचय

isin() जाँचता है कि Series का प्रत्येक तत्व दिए गए मानों की सूची (या सेट) में मौजूद है या नहीं। यह एक बूलियन Series लौटाता है, जिसका इस्तेमाल सीधे पंक्तियों को फ़िल्टर करने के लिए किया जा सकता है। यह कई == तुलनाओं को | से जोड़ने की तुलना में अधिक संक्षिप्त और अक्सर तेज़ होता है।

उदाहरण के लिए, (df['country'] == 'USA') | (df['country'] == 'UK') के बजाय आप df['country'].isin(['USA', 'UK']) लिख सकते हैं।

import pandas as pd

df = pd.DataFrame({
    'country': ['USA', 'Germany', 'UK', 'France', 'USA'],
    'sales': [400, 200, 150, 300, 600]
})

# Check membership
mask = df['country'].isin(['USA', 'UK'])
print(mask.tolist())  # [True, False, True, False, True]

result = df[mask]
print(result)
#   country  sales
# 0     USA    400
# 2      UK    150
# 4     USA    600

गति के लिए सेट के साथ isin()

आप isin() में सूची के बजाय Python सेट दे सकते हैं। सेट में सदस्यता की खोज O(1) होती है — सूची के बड़े होने पर यह धीमी नहीं होती। जब अनुमत मानों की सूची में हज़ारों प्रविष्टियाँ हों, तब यह महत्वपूर्ण है; ऐसी स्थिति में सेट-आधारित isin() सूची-आधारित isin() से काफ़ी तेज़ होता है।

import pandas as pd

df = pd.DataFrame({
    'sku': ['A001', 'B002', 'A003', 'C004', 'B005'],
    'qty': [10, 5, 3, 8, 12]
})

# Use a set for fast membership check
allowed_skus = {'A001', 'A003', 'B005'}
result = df[df['sku'].isin(allowed_skus)]
print(result)
#     sku  qty
# 0  A001   10
# 2  A003    3
# 4  B005   12

~ से isin() को नकारना

किसी कॉलम में निर्दिष्ट मान मौजूद नहीं होने वाली पंक्तियों को फ़िल्टर करने के लिए isin() को ~ ऑपरेटर के साथ मिलाएँ। विशिष्ट मानों की सूची को हटाने का यह सबसे साफ़ तरीका है और != तुलनाओं की शृंखला बनाने की तुलना में कहीं अधिक पठनीय है।

import pandas as pd

df = pd.DataFrame({
    'status': ['active', 'cancelled', 'shipped', 'refunded', 'active'],
    'amount': [100, 200, 300, 150, 500]
})

bad_statuses = ['cancelled', 'refunded']
# Keep all rows NOT in the excluded list
result = df[~df['status'].isin(bad_statuses)]
print(result)
#     status  amount
# 0   active     100
# 2  shipped     300
# 4   active     500

सूची के रूप में DataFrame कॉलम के साथ isin()

एक उपयोगी युक्ति यह है कि isin() में किसी अन्य DataFrame के कॉलम के मान दिए जाएँ। यह SQL के अर्ध-जुड़ाव के बराबर है: df2 में मौजूद कुंजी वाली df1 की पंक्तियाँ रखें। पूर्ण मर्ज के विपरीत, इससे पंक्तियाँ दोहराई नहीं जातीं और अतिरिक्त कॉलम नहीं जुड़ते — यह केवल फ़िल्टर करता है।

import pandas as pd

orders = pd.DataFrame({
    'order_id': [1, 2, 3, 4, 5],
    'revenue': [100, 200, 300, 400, 500]
})

vip_orders = pd.DataFrame({'order_id': [2, 4]})

# Keep orders whose ID appears in vip_orders
result = orders[orders['order_id'].isin(vip_orders['order_id'])]
print(result)
#    order_id  revenue
# 1         2      200
# 3         4      400

between() विधि का परिचय

between(left, right) एक बूलियन Series लौटाता है, जिसमें वे मान True होते हैं जो बंद सीमा [left, right] के भीतर आते हैं (डिफ़ॉल्ट रूप से दोनों सीमाएँ शामिल होती हैं)। यह (df['age'] >= 18) & (df['age'] <= 65) जैसी दो-तरफ़ा शर्तों को एक पठनीय कॉल से बदल देता है।

inclusive पैरामीटर यह नियंत्रित करता है कि सीमाएँ शामिल होंगी या नहीं: 'both' (डिफ़ॉल्ट), 'left', 'right' या 'neither'।

import pandas as pd

df = pd.DataFrame({
    'age': [15, 22, 35, 67, 45, 8]
})

# Select working-age population
result = df[df['age'].between(18, 65)]
print(result)
#    age
# 1   22
# 2   35
# 4   45

inclusive पैरामीटर के साथ between()

डिफ़ॉल्ट रूप से दोनों अंतिम सीमाएँ सीमा में शामिल होती हैं। inclusive='left' सेट करने पर दाहिनी सीमा हट जाती है (समय-खंड जैसी आधी-खुली अंतरालों के लिए उपयोगी), inclusive='right' बाईं सीमा हटाता है, और inclusive='neither' सख्त खुली अंतराल के लिए दोनों सीमाएँ हटा देता है।

import pandas as pd

df = pd.DataFrame({'score': [0, 50, 100, 75, 50]})

# Include only scores strictly between 50 and 100
strict = df[df['score'].between(50, 100, inclusive='neither')]
print(strict)
#    score
# 3     75

# Include 50 but not 100
left_closed = df[df['score'].between(50, 100, inclusive='left')]
print(left_closed)
#    score
# 1     50
# 3     75
# 4     50

दिनांक कॉलम पर between()

between() datetime कॉलम पर भी काम करता है। सीमाओं के रूप में दिनांक स्ट्रिंग या Timestamp ऑब्जेक्ट दें, और Pandas अंतर्निहित datetime मानों पर तुलना करेगा। दिनांकों को पूर्णांकों में बदले बिना किसी समय-अंतराल को अलग करने का यह साफ़ तरीका है।

import pandas as pd

df = pd.DataFrame({
    'date': pd.to_datetime(['2024-01-01', '2024-06-15', '2024-11-20', '2025-03-01']),
    'value': [10, 20, 30, 40]
})

# Filter rows in the year 2024
result = df[df['date'].between('2024-01-01', '2024-12-31')]
print(result)
#         date  value
# 0 2024-01-01     10
# 1 2024-06-15     20
# 2 2024-11-20     30

isin() और between() को मिलाना

आप & और | का इस्तेमाल करके एक ही बूलियन अभिव्यक्ति में isin() और between() को मिला सकते हैं। इससे ऐसे संक्षिप्त और पठनीय फ़िल्टर बनते हैं, जिनके लिए अन्यथा कई नेस्टेड शर्तों की आवश्यकता होती। मिलाते समय प्रत्येक कॉल को हमेशा कोष्ठकों में रखें।

import pandas as pd

df = pd.DataFrame({
    'region': ['North', 'South', 'East', 'North', 'West'],
    'revenue': [100, 500, 200, 300, 400]
})

# Rows in North or South regions AND revenue between 200 and 400
result = df[
    df['region'].isin(['North', 'South']) &
    df['revenue'].between(200, 400)
]
print(result)
#    region  revenue
# 3   North      300
# 1   South      500  <- actually excluded (500 > 400)
# 3   North      300

Any के साथ कई कॉलम पर isin()

जब आप जाँचना चाहते हैं कि कई कॉलमों में से कोई भी किसी सूची का मान रखता है या नहीं, तो पूरे DataFrame पर isin() कॉल करें और परिणाम को पंक्ति के आधार पर समेटने के लिए .any(axis=1) का इस्तेमाल करें। यह एक साथ कई टैग या श्रेणी कॉलमों में खोजने के लिए उपयोगी है।

import pandas as pd

df = pd.DataFrame({
    'tag1': ['python', 'java', 'sql'],
    'tag2': ['sql', 'python', 'go'],
    'topic': ['Database', 'Backend', 'Infra']
})

target_langs = ['python', 'sql']
# Check if either tag column matches
mask = df[['tag1', 'tag2']].isin(target_langs).any(axis=1)
result = df[mask]
print(result)
#      tag1    tag2     topic
# 0  python     sql  Database
# 1    java  python   Backend
# 2     sql      go     Infra

प्रदर्शन सुझाव: isin() बनाम कई ==

2-3 मानों की छोटी सूची के लिए isin() और == की शृंखलाबद्ध शर्तों के बीच अंतर नगण्य होता है। लेकिन बड़ी सूचियों (सैकड़ों मानों) के लिए isin() बहुत तेज़ होता है, क्योंकि यह सूची को आंतरिक रूप से हैश सेट में बदलता है और क्रमिक तुलना के बजाय प्रत्येक तत्व पर O(1) खोज करता है।

अधिक साफ़ कोड और बेहतर प्रदर्शन के लिए | वाली लंबी शर्त-शृंखला के बजाय हमेशा isin() को प्राथमिकता दें।

import pandas as pd
import numpy as np

# 1 million row DataFrame
df = pd.DataFrame({'id': np.random.randint(0, 10000, size=1_000_000)})

allowed = list(range(0, 500))  # 500 allowed IDs

# isin() is the right approach here — fast hash lookup
result = df[df['id'].isin(allowed)]
print(result.shape)  # around (50000, 1)

वास्तविक उदाहरण वाला फ़िल्टर: उत्पाद सूची

यहाँ श्रेणी फ़िल्टर करने के लिए isin() और मूल्य-सीमा फ़िल्टर करने के लिए between() को मिलाने का वास्तविक उदाहरण है — ई-कॉमर्स विश्लेषण में यह एक सामान्य तरीका है। दोनों फ़िल्टर मिलकर लक्षित प्रचार के लिए आवश्यक उत्पादों का बिल्कुल सही उपसमुच्चय चुनते हैं।

import pandas as pd

products = pd.DataFrame({
    'name': ['Laptop', 'Mouse', 'Monitor', 'Keyboard', 'Webcam'],
    'category': ['Computing', 'Accessories', 'Displays', 'Accessories', 'Peripherals'],
    'price': [1200, 25, 300, 80, 150]
})

# Products in Accessories or Peripherals, priced 50-200
eligible = products[
    products['category'].isin(['Accessories', 'Peripherals']) &
    products['price'].between(50, 200)
]
print(eligible)
#        name     category  price
# 3  Keyboard  Accessories     80
# 4    Webcam  Peripherals    150

त्वरित जाँच

isin() और between() फ़िल्टरों की अपनी समझ जाँचें।

पाठ का पुनरावलोकन

इस पाठ में आपने सीखा: isin() सेट में सदस्यता की जाँच करता है और कई == शर्तों को जोड़ने से तेज़ होता है; ~isin() मानों की सूची को बाहर करता है; और between() वैकल्पिक inclusive पैरामीटर के साथ बंद सीमा पर फ़िल्टर लगाता है। दोनों विधियाँ संख्यात्मक, स्ट्रिंग और datetime कॉलम पर काम करती हैं। आगे हम जानेंगे कि नाम के किसी पैटर्न से मेल खाने वाले DataFrame कॉलम कैसे चुनें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Python सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “isin() और between() फ़िल्टर” पाठ निःशुल्क है?

हाँ—“isin() और between() फ़िल्टर” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Pandas & NumPy Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Pandas & NumPy Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“isin() और between() फ़िल्टर” में मैं क्या सीखूँगा?

isin() से उन पंक्तियों को चुनिए जिनका स्तंभ मान किसी सूची में है, या between() से किसी संख्यात्मक सीमा के भीतर है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Pandas & NumPy Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Pandas & NumPy Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Pandas & NumPy Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“isin() और between() फ़िल्टर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Pandas & NumPy Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Pandas & NumPy Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. DataFrames पर बूलियन इंडेक्सिंग
  2. query() विधि
  3. isin() और between() फ़िल्टर
  4. पैटर्न के आधार पर कॉलम चुनना
← Pandas & NumPy Academy पर वापस जाएँ