💻
⌨️
🖱️
🖥️
💾
← डैशबोर्ड पर वापस जाएँ
Font Size:

1. परिचय

पांडा (Pandas) पाइथन की एक शक्तिशाली ओपन-सोर्स लाइब्रेरी है जिसका उपयोग डेटा के विश्लेषण, सफाई, प्रबंधन और प्रसंस्करण के लिए किया जाता है। इसे वेस मैककिनी (Wes McKinney) ने 2008 में विकसित किया था। पांडा का नाम 'पैनल डेटा' (Panel Data) से लिया गया है, इसका संक्षिप्त रूप 'पैन-डा' है। यह लाइब्रेरी न्यूमपाई (NumPy) पर आधारित है और डेटा विश्लेषण के लिए दो मुख्य डेटा संरचनाएं प्रदान करती है — सीरीज़ (Series) और डेटाफ्रेम (DataFrame)। पांडा का उपयोग करने के लिए इसे आयात (import) करना अनिवार्य होता है।

import pandas as pd

पांडा को सामान्यतः pd के रूप में आयात किया जाता है, जिससे कोड छोटा और पढ़ने में सरल हो जाता है। पांडा मुख्य रूप से संरचित (tabular) डेटा, जैसे सारणीबद्ध डेटा, स्प्रेडशीट डेटा, समय श्रृंखला डेटा आदि के साथ कार्य करता है।

2. पांडा डेटा संरचनाएं

पांडा की दो प्रमुख डेटा संरचनाएं निम्नलिखित हैं:

सीरीज़ (Series)

सीरीज़ एक-आयामी (1-D) लेबल वाली सरणी होती है जो किसी भी प्रकार के डेटा (पूर्णांक, स्ट्रिंग, फ्लोट आदि) को धारण कर सकती है। सीरीज़ में प्रत्येक तत्व एक सूचकांक (Index) से जुड़ा होता है। यह एक कॉलम या एक पंक्ति के डेटा को संग्रहीत करती है।

import pandas as pd
s = pd.Series([10, 20, 30, 40])
print(s)

उपरोक्त कोड में सीरीज़ बनाने के लिए सूची (List) को pd.Series() में भेजा गया है। डिफ़ॉल्ट सूचकांक 0, 1, 2, 3 होगा। हम index पैरामीटर का उपयोग करके अपने स्वयं के सूचकांक भी प्रदान कर सकते हैं:

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s['b'])

डेटाफ्रेम (DataFrame)

डेटाफ्रेम दो-आयामी (2-D) लेबल वाली डेटा संरचना होती है, जो सारणी (टेबल) की तरह पंक्तियों और स्तंभों में डेटा को व्यवस्थित करती है। इसे विभिन्न तरीकों से बनाया जा सकता है — शब्दकोश (Dictionary), सूची, एनडीएरे आदि से।

import pandas as pd
data = {
    'नाम': ['राम', 'श्याम', 'सीता'],
    'अंक': [85, 90, 78]
}
df = pd.DataFrame(data)
print(df)

यहाँ शब्दकोश की कुंजियां (keys) स्तंभ नाम बन जाती हैं और मान (values) स्तंभ डेटा बन जाते हैं। index पैरामीटर के द्वारा पंक्ति सूचकांक भी निर्धारित किए जा सकते हैं।

3. सीरीज़ बनाने की विधियां

सीरीज़ को निम्नलिखित स्रोतों से बनाया जा सकता है:

import pandas as pd
d = {'दिल्ली': 45, 'मुंबई': 60, 'कोलकाता': 55}
s = pd.Series(d)
print(s)

शब्दकोश से बनाए गए सीरीज़ में शब्दकोश की कुंजियां सूचकांक और मान सीरीज़ के तत्व बन जाते हैं। यह विधि डेटा को व्यवस्थित रूप से संग्रहीत करने में बहुत सहायक है।

4. सीरीज़ के महत्वपूर्ण गुणधर्म

सीरीज़ डेटा के साथ कार्य करने हेतु कई उपयोगी गुणधर्म (attributes) और विधियां (methods) प्रदान करती है:

import pandas as pd
s = pd.Series([5, 10, 15], index=['a', 'b', 'c'], name='अंक')
print(s.shape)
print(s.dtype)
print(s.name)

5. सीरीज़ में अंकगणितीय संक्रियाएं

सीरीज़ पर विभिन्न अंकगणितीय संक्रियाएं (जोड़, घटाव, गुणा, भाग) तत्व-वार (element-wise) आधार पर की जाती हैं।

import pandas as pd
s = pd.Series([10, 20, 30])
print(s + 5)
print(s * 2)
print(s - 3)
print(s / 2)

दो सीरीज़ों के बीच संक्रिया करने पर पांडा सूचकांकों के आधार पर संरेखण (alignment) करता है। यदि दोनों सीरीज़ों के सूचकांक समान नहीं हैं, तो मेल न खाने वाले स्थानों पर NaN (Not a Number) मान उत्पन्न होता है।

import pandas as pd
s1 = pd.Series([1, 2, 3], index=['a', 'b', 'c'])
s2 = pd.Series([10, 20, 30], index=['a', 'b', 'd'])
print(s1 + s2)

यहाँ c और d सूचकांकों के लिए परिणाम NaN होगा, क्योंकि दोनों सीरीज़ों में इन सूचकांकों का मान नहीं मिलता। पांडा का यह संरेखण व्यवहार (alignment behavior) इसकी एक प्रमुख विशेषता है।

6. सीरीज़ में सूचकांक (Indexing) और स्लाइसिंग

सीरीज़ में तत्वों को दो प्रकार से एक्सेस किया जा सकता है — स्थिति आधारित (position based) और लेबल आधारित (label based)।

import pandas as pd
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s['b'])
print(s[1])
print(s[1:3])
print(s['b':'d'])

ध्यान दें कि लेबल आधारित स्लाइसिंग में अंतिम सूचकांक भी शामिल होता है, जबकि स्थिति आधारित स्लाइसिंग में अंतिम सूचकांक शामिल नहीं होता। यह एक महत्वपूर्ण अंतर है जिसे परीक्षा में प्रायः पूछा जाता है।

7. डेटाफ्रेम बनाने की विधियां

डेटाफ्रेम को निम्नलिखित विधियों से बनाया जा सकता है:

शब्दकोश से डेटाफ्रेम

import pandas as pd
data = {'A': [1, 2], 'B': [3, 4]}
df = pd.DataFrame(data)
print(df)

सूचियों की सूची से डेटाफ्रेम

df = pd.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])
print(df)

एनडीएरे से डेटाफ्रेम

import numpy as np
arr = np.array([[1, 2], [3, 4]])
df = pd.DataFrame(arr, columns=['A', 'B'])
print(df)

सीरीज़ों के शब्दकोश से डेटाफ्रेम

s1 = pd.Series([10, 20], name='अंक1')
s2 = pd.Series([30, 40], name='अंक2')
df = pd.DataFrame({'अंक1': s1, 'अंक2': s2})
print(df)

8. डेटाफ्रेम में डेटा एक्सेस करना

डेटाफ्रेम से डेटा एक्सेस करने के लिए निम्नलिखित विधियों का उपयोग किया जाता है:

import pandas as pd
df = pd.DataFrame({
    'नाम': ['राम', 'सीता', 'गीता'],
    'अंक': [85, 92, 78]
}, index=['r1', 'r2', 'r3'])
print(df['अंक'])
print(df.loc['r2'])
print(df.iloc[1])
print(df.head(2))

loc और iloc के बीच का अंतर सबसे महत्वपूर्ण है — loc लेबल का उपयोग करता है जबकि iloc स्थिति (0 से प्रारंभ) का उपयोग करता है।

9. डेटाफ्रेम का विवरण (describe)

describe() विधि डेटाफ्रेम के संख्यात्मक स्तंभों के लिए सांख्यिकीय सारांश जैसे गणना (count), माध्य (mean), मानक विचलन (std), न्यूनतम (min), अधिकतम (max), तथा क्वार्टाइल (25%, 50%, 75%) प्रदान करती है।

import pandas as pd
df = pd.DataFrame({'अंक': [85, 90, 78, 92, 88]})
print(df.describe())

यह सांख्यिकीय विश्लेषण के लिए बहुत उपयोगी है। परीक्षा में प्रायः count, mean, std, min, max और क्वार्टाइल के मानों के बारे में प्रश्न पूछे जाते हैं।

10. पांडा में बूलियन मास्क और सशर्त चयन

पांडा में डेटा के सशर्त चयन के लिए बूलियन मास्क का उपयोग अत्यंत उपयोगी है। बूलियन मास्क एक सीरीज़ होती है जिसमें प्रत्येक तत्व के लिए True या False मान होता है। जब इस मास्क को डेटाफ्रेम या सीरीज़ पर लगाया जाता है, तो केवल उन्हीं तत्वों का चयन होता है जिनके लिए मान True होता है। उदाहरण के लिए, mask = df['अंक'] > 80 एक बूलियन सीरीज़ बनाता है और df[mask] केवल 80 से अधिक अंक वाली पंक्तियां लौटाता है। इसी प्रकार & (AND) और | (OR) संचालकों से कई शर्तों को जोड़ा जा सकता है। सूचकांकों के संरेखण के कारण यह विधि सटीक और तेज होती है। इसके अलावा df[df['शहर'].isin(['दिल्ली', 'मुंबई'])] जैसी विधि से विशिष्ट मानों वाली पंक्तियां चुनी जाती हैं। बूलियन मास्क का उपयोग करते समय यह ध्यान रखना चाहिए कि सशर्त चयन में परिणाम नई डेटा संरचना होती है और मूल डेटा में कोई परिवर्तन नहीं होता, जब तक कि inplace=True न दिया जाए। यह संकल्पना डेटा विश्लेषण का आधार है और अगले अध्यायों में फ़िल्टरिंग तथा डेटा सफाई में व्यापक रूप से उपयोग होती है, अतः विद्यार्थियों को इसे ध्यानपूर्वक समझना चाहिए। परीक्षा में बूलियन मास्क से संबंधित प्रश्नों का अभ्यास करना अत्यंत लाभदायक होता है।

त्वरित पुनरावृत्ति तालिकाएं

तालिका 1: सीरीज़ बनाने के स्रोत और विधियां

स्रोत कोड उदाहरण विशेषता
सूची (List) pd.Series([1, 2, 3]) डिफ़ॉल्ट सूचकांक 0 से प्रारंभ
टपल (Tuple) pd.Series((1, 2, 3)) सूची के समान व्यवहार
शब्दकोश (Dict) pd.Series({'a': 1}) कुंजी = सूचकांक
स्केलर मान pd.Series(5, index=[0, 1]) सभी तत्व समान मान
एनडीएरे (ndarray) pd.Series(np.array([1, 2])) न्यूमपाई पर आधारित

तालिका 2: सीरीज़ के गुणधर्म

गुणधर्म कार्य
s.values मानों को एनडीएरे के रूप में
s.index सूचकांक ऑब्जेक्ट
s.dtype डेटाटाइप
s.shape आकृति (आयाम)
s.size तत्वों की संख्या
s.empty खाली होने की जांच (बूलियन)

तालिका 3: डेटाफ्रेम डेटा एक्सेस विधियां

विधि कार्य आधार
df['कॉलम'] एक कॉलम को सीरीज़ में लेबल
df.loc[row] पंक्ति एक्सेस लेबल
df.iloc[row] पंक्ति एक्सेस स्थिति
df.head(n) पहली n पंक्तियां स्थिति
df.tail(n) अंतिम n पंक्तियां स्थिति
df.describe() सांख्यिकीय सारांश सभी संख्यात्मक

माइंड मैप

graph TD A["पाइथन पांडा - I"] --> B["सीरीज़ (1-D)"] A --> C["डेटाफ्रेम (2-D)"] B --> D["सूची/टपल/शब्दकोश/ndarray से निर्माण"] B --> E["गुणधर्म: values, index, dtype, shape, size"] B --> F["अंकगणितीय संक्रियाएं + सूचकांक संरेखण"] B --> G["सूचकांकन: s[0] स्थिति, s['a'] लेबल"] C --> H["शब्दकोश / ndarray / सूचियों की सूची से"] C --> I["डेटा एक्सेस: df['कॉलम'], loc, iloc"] C --> J["head, tail, describe"] C --> K["कॉलम जोड़ना व हटाना"]

महत्वपूर्ण आरेख (SVG)

पांडा डेटा संरचनाएं सीरीज़ (Series) एक-आयामी लेबल वाली सरणी डेटाफ्रेम (DataFrame) दो-आयामी सारणीबद्ध संरचना संबंधित सीरीज़ की विशेषताएं - एक इंडेक्स + एक कॉलम डेटा - s.values, s.index, s.dtype - सूचकांक संरेखण (alignment) डेटाफ्रेम की विशेषताएं - पंक्तियां + स्तंभ - df.loc (लेबल) / df.iloc (स्थिति) - head, tail, describe Golden Rule loc = लेबल, iloc = स्थिति
सीरीज़ सूचकांक संरेखण s1 + s2 करने पर मेल खाने वाले सूचकांक जुड़ते हैं सीरीज़ 1 a: 1 b: 2 c: 3 सूचकांक = a, b, c सीरीज़ 2 a: 10 b: 20 d: 30 सूचकांक = a, b, d परिणाम (s1 + s2) a: 1 + 10 = 11 b: 2 + 20 = 22 c: NaN d: NaN स्वर्ण नियम मेल न खाने पर NaN उत्पन्न होता है

सामान्य गलतियां

  1. loc और iloc में भ्रम: विद्यार्थी प्रायः df.loc[0] का उपयोग स्थिति के लिए करते हैं, जबकि loc हमेशा लेबल के लिए होता है। यदि लेबल 0 से भिन्न हैं तो यह गलत परिणाम देगा।
  2. लेबल स्लाइसिंग में अंतिम मान: लेबल आधारित स्लाइसिंग s['b':'d'] में 'd' भी शामिल होता है, जबकि स्थिति आधारित s[1:3] में स्थिति 3 शामिल नहीं होती। इस अंतर को भूलना सामान्य गलती है।
  3. डेटाफ्रेम सूचकांक नहीं मिलना: शब्दकोश से डेटाफ्रेम बनाते समय सभी सूचियों की लंबाई समान होनी चाहिए, अन्यथा ValueError उत्पन्न होता है।
  4. पांडा आयात करना भूलना: import pandas as pd के बिना pd.Series का उपयोग करने पर NameError आती है।
  5. df.head() में तर्क नहीं देना: कई विद्यार्थी सोचते हैं कि df.head() सभी पंक्तियां लौटाता है, परंतु यह डिफ़ॉल्ट रूप से केवल पहली 5 पंक्तियां ही लौटाता है।
  6. स्केलर सीरीज़ में index अनिवार्य: pd.Series(5) बिना index के सूचकांक निर्धारित नहीं करता, जिससे वांछित परिणाम नहीं मिलता। index प्रदान करना आवश्यक है।

परीक्षा युक्तियां

  1. loc और iloc के अंतर को सदैव याद रखें — यह परीक्षा में सर्वाधिक पूछा जाने वाला प्रश्न है।
  2. s.shape का आउटपुट टपल होता है, जैसे (3,) — इसे गलत समझने की संभावना रहती है।
  3. head(n) और tail(n) में n पैरामीटर दिया जा सकता है, डिफ़ॉल्ट मान 5 है।
  4. डेटाफ्रेम बनाते समय सभी स्तंभ सूचियों की लंबाई समान रखें।
  5. सीरीज़ की अंकगणितीय संक्रियाओं में सूचकांक संरेखण का नियम याद रखें — मेल न खाने पर NaN आता है।
  6. df.describe() के आउटपुट में count, mean, std, min, max तथा क्वार्टाइल की व्यवस्था याद रखें।

निष्कर्ष

पाइथन पांडा - I में हमने पांडा लाइब्रेरी की दो मूलभूत डेटा संरचनाओं — सीरीज़ और डेटाफ्रेम — के निर्माण, गुणधर्म, सूचकांकन तथा डेटा एक्सेस के तरीकों का अध्ययन किया। सीरीज़ एक-आयामी और डेटाफ्रेम दो-आयामी डेटा संरचनाएं हैं, जो डेटा विश्लेषण का आधार बनाती हैं। loc और iloc का अंतर, सूचकांक संरेखण तथा डेटा एक्सेस की विधियां इस अध्याय के प्रमुख केंद्र बिंदु हैं। इन मूलभूत अवधारणाओं की पकड़ मजबूत होने से अगले अध्यायों में डेटा प्रबंधन और विश्लेषण सरल हो जाएगा। अगले अध्याय में हम डेटाफ्रेम में पंक्तियों और स्तंभों को जोड़ने, हटाने, डेटा फ़िल्टर करने तथा डेटाफ्रेम को जोड़ने (concatenation) के तरीकों का अध्ययन करेंगे।