पांडास और मैटप्लॉटलिब लाइब्रेरी
लाइब्रेरी तैयार कोड का एक डिब्बा है, जिसे हम अपने प्रोग्राम में इस्तेमाल कर सकते हैं।
- NumPy: संख्याओं के तेज़ ऐरे (कक्षा 11 में पढ़ा)।
- पांडास: पंक्ति और स्तंभ वाला डेटा, जैसे स्प्रेडशीट। इसकी दो मुख्य डेटा संरचनाएँ हैं: सीरीज़ (एक स्तंभ) और डेटाफ़्रेम (पूरी तालिका)।
- मैटप्लॉटलिब: रेखा चार्ट, बार ग्राफ़ और हिस्टोग्राम जैसे चार्ट बनाती है।
pip install pandas matplotlib # एक बार, कमांड प्रॉम्प्ट में import pandas as pd # pd छोटा नाम (उपनाम) है import numpy as np import matplotlib.pyplot as plt
सीरीज़ क्या है?
सीरीज़ एक-आयामी लेबल वाला ऐरे है। यानी मानों का एक स्तंभ, और हर मान का एक लेबल। सारे लेबल मिलकर इंडेक्स कहलाते हैं।
s = pd.Series([92, 75, 58], index=['Asha', 'Ravi', 'Mohan']) print(s) Asha 92 Ravi 75 Mohan 58 dtype: int64
इंडेक्स न दें तो पांडास अपने आप 0, 1, 2… लगाता है। काम के गुण: s.index, s.values, s.dtype, s.size, s.shape, s.empty, s.name।
ndarray, डिक्शनरी और स्केलर से सीरीज़ बनाना
NumPy ऐरे (ndarray) से
a = np.array([10, 20, 30]) s = pd.Series(a) # इंडेक्स 0, 1, 2 s = pd.Series(a, index=['x', 'y', 'z']) # इंडेक्स की लंबाई बराबर हो
डिक्शनरी से
d = {'Jan': 31, 'Feb': 28, 'Mar': 31}
s = pd.Series(d) # कुंजियाँ इंडेक्स, मान डेटा बनते हैंस्केलर (एक मान) से
s = pd.Series(5, index=['a', 'b', 'c', 'd']) # 5 चार बार दोहराया
स्केलर के साथ इंडेक्स देना ज़रूरी है, वरना सिर्फ़ एक मान वाली सीरीज़ बनेगी।
सीरीज़ पर गणितीय संक्रियाएँ
एक संख्या के साथ संक्रिया हर मान पर लगती है: s * 2, s + 5।
दो सीरीज़ में पांडास मान इंडेक्स लेबल से मिलाता है, स्थान से नहीं। जो लेबल सिर्फ़ एक में है, वहाँ जवाब NaN (Not a Number, यानी ख़ाली) आता है।
s1 = pd.Series([10, 20, 30], index=['a', 'b', 'c']) s2 = pd.Series([1, 2, 4], index=['a', 'b', 'd']) s1 + s2 # a 11.0, b 22.0, c NaN, d NaN s1.add(s2, fill_value=0) # a 11, b 22, c 30, d 4
मेथड: add(), sub(), mul(), div()। इनमें fill_value दे सकते हैं। NaN एक float है, इसलिए परिणाम float बन जाता है।
head() और tail()
s.head(n) पहले n मान देता है; s.tail(n) आख़िरी n। संख्या न दें तो दोनों 5 लेते हैं। लंबी सीरीज़ की झलक देखने में ये काम आते हैं।
s.head(2) # Asha 92, Ravi 75 s.tail(3) # Mohan 58, Zoya 81, Kabir 66
चयन, इंडेक्सिंग और स्लाइसिंग
इंडेक्सिंग (एक मान)
s['Zoya'] # लेबल से → 81 s.loc['Zoya'] # लेबल से (साफ़ तरीका) s.iloc[3] # स्थान से → 81 s[['Asha', 'Kabir']] # लेबलों की सूची → छोटी सीरीज़
स्लाइसिंग (एक दायरा)
s[1:4] # स्थान 1, 2, 3 (आख़िरी शामिल नहीं) s['Ravi':'Zoya'] # लेबल Ravi से Zoya (आख़िरी शामिल) s[::-1] # उल्टा क्रम
शर्त से चयन (बूलियन इंडेक्सिंग)
s[s > 70] # सिर्फ़ 70 से ऊपर वाले
मान बदल भी सकते हैं: s['Mohan'] = 60।
करके देखें: अपने अंकों की सीरीज़
पायथन (IDLE, Jupyter या कोई ऑनलाइन पायथन) खोलें। अपने 5 विषयों और अंकों की डिक्शनरी बनाकर सीरीज़ बनाइए। हर लाइन चलाने से पहले कागज़ पर अनुमान लिखें: s.head(2), s[s > 80], s[1:3], s + 5। फिर चलाकर मिलाइए। उसके बाद 3D के कदम 6 में भी यही आज़माएँ।
मुख्य सूत्र और परिभाषाएँ
- pd.Series(data, index=[...]) · data = सूची, ndarray, डिक्शनरी या स्केलर
- डिक्शनरी → कुंजियाँ इंडेक्स · स्केलर → इंडेक्स ज़रूरी, मान दोहराता है
- s1 + s2 लेबल मिलाता है; बिना जोड़ीदार लेबल → NaN · s1.add(s2, fill_value=0)
- head(n) / tail(n): पहले / आख़िरी n (डिफ़ॉल्ट 5)
- स्थान स्लाइस s[a:b] में b शामिल नहीं · लेबल स्लाइस s['p':'q'] में q शामिल
हल किए गए उदाहरण
1. पहले तीन महीनों के दिनों की सीरीज़ डिक्शनरी से बनाकर छापिए।
d = {'Jan': 31, 'Feb': 28, 'Mar': 31}; s = pd.Series(d); print(s) → Jan 31, Feb 28, Mar 31, dtype: int64। कुंजियाँ इंडेक्स बन गईं।
2. इंडेक्स 'w', 'x', 'y', 'z' के साथ चार बार 100 वाली सीरीज़ बनाइए।
s = pd.Series(100, index=['w', 'x', 'y', 'z'])। स्केलर 100 हर लेबल पर दोहराया गया।
3. s = pd.Series([92, 75, 58, 81, 66], index=['Asha','Ravi','Mohan','Zoya','Kabir'])। s[1:4] और s['Ravi':'Zoya'] क्या देंगे?
दोनों Ravi 75, Mohan 58, Zoya 81 देंगे। स्थान स्लाइस 1:4 में स्थान 1, 2, 3 आते हैं (4 नहीं)। लेबल स्लाइस में आख़िरी लेबल Zoya शामिल है।
4. इसी s में सिर्फ़ 70 से ऊपर वाले छात्र दिखाइए और गिनिए।
s[s > 70] → Asha 92, Ravi 75, Zoya 81। गिनती: s[s > 70].size → 3।
5. s1 = pd.Series([10, 20, 30], index=['a','b','c']); s2 = pd.Series([1, 2, 4], index=['a','b','d'])। s1 + s2 और s1.add(s2, fill_value=0) निकालिए।
s1 + s2 → a 11.0, b 22.0, c NaN, d NaN (c और d का जोड़ीदार नहीं)। fill_value=0 के साथ: a 11, b 22, c 30, d 4।
6. अंकों की सीरीज़ s में 70 से कम वालों को एक लाइन में 5 ग्रेस अंक दीजिए।
s[s < 70] = s[s < 70] + 5 → Mohan 58 → 63, Kabir 66 → 71; बाक़ी वैसे ही।
आम गलतियाँ
- सोचना कि s1 + s2 स्थान से जोड़ता है; पांडास लेबल से जोड़ता है और बिना जोड़ीदार लेबल पर NaN देता है।
- भूलना कि स्थान स्लाइस s[1:4] में स्थान 4 नहीं आता, पर लेबल स्लाइस s['Ravi':'Zoya'] में Zoya आता है।
- स्केलर से बिना इंडेक्स सीरीज़ बनाकर कई मान की उम्मीद करना।
- s.head[3] लिखना; head एक मेथड है, इसलिए s.head(3) लिखें।