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

1. परिचय

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

2. स्तंभ जोड़ना और हटाना

स्तंभ जोड़ना

डेटाफ्रेम में नया स्तंभ जोड़ने के लिए नए कॉलम नाम के साथ मानों की सूची (या सीरीज़) निर्दिष्ट की जाती है:

import pandas as pd
df = pd.DataFrame({'नाम': ['राम', 'सीता', 'गीता'], 'अंक': [85, 92, 78]})
df['ग्रेड'] = ['A', 'A+', 'B']
print(df)

यहाँ 'ग्रेड' नामक नया स्तंभ डेटाफ्रेम के अंत में जुड़ जाता है। मानों की सूची की लंबाई पंक्तियों की संख्या के बराबर होनी चाहिए।

स्तंभ हटाना

किसी स्तंभ को हटाने के लिए del कथन या drop() विधि का उपयोग किया जाता है:

del df['ग्रेड']
df = df.drop(columns=['अंक'])
print(df)

drop() विधि में axis=1 या columns= पैरामीटर द्वारा स्तंभ हटाए जाते हैं। ध्यान रहे कि drop() डिफ़ॉल्ट रूप से नया डेटाफ्रेम लौटाता है, मूल डेटाफ्रेम में परिवर्तन के लिए inplace=True देना होता है।

3. पंक्ति जोड़ना और हटाना

पंक्ति जोड़ना

डेटाफ्रेम के अंत में पंक्ति जोड़ने के लिए loc के साथ नए सूचकांक पर मानों की सूची निर्दिष्ट की जाती है:

df.loc['r4'] = ['मोहन', 88]
print(df)

यदि पंक्तियों की संख्या बढ़ानी है तो loc का उपयोग करते समय नया सूचकांक लेबल प्रदान करें। पंक्ति जोड़ने का दूसरा तरीका pd.concat() का उपयोग करना है।

पंक्ति हटाना

पंक्ति हटाने के लिए drop() विधि में सूचकांक लेबल दिए जाते हैं:

df = df.drop('r4')
print(df)

drop('r4') डिफ़ॉल्ट रूप से axis=0 पर कार्य करता है, अर्थात पंक्ति हटाता है। एक साथ अनेक पंक्तियों को सूची देकर हटाया जा सकता है।

4. शब्दकोश से सीरीज़ जोड़ना

शब्दकोश से सीरीज़ बनाकर डेटाफ्रेम में स्तंभ के रूप में जोड़ा जा सकता है:

import pandas as pd
df = pd.DataFrame({'नाम': ['राम', 'सीता', 'गीता']}, index=['a', 'b', 'c'])
s = pd.Series({'a': 85, 'b': 92, 'c': 78})
df['अंक'] = s
print(df)

यहाँ शब्दकोश की कुंजियां सूचकांक के रूप में मेल खाती हैं, इसलिए अंक सही क्रम में जुड़ते हैं। यदि सूचकांक मेल नहीं खाते तो NaN मान आते हैं।

5. डेटा फ़िल्टरिंग (Filtering)

डेटा फ़िल्टर करने के लिए बूलियन स्थितियों का उपयोग किया जाता है। शर्त संतुष्ट करने वाली पंक्तियां ही चुनी जाती हैं:

import pandas as pd
df = pd.DataFrame({'नाम': ['राम', 'सीता', 'गीता', 'मोहन'], 'अंक': [85, 92, 78, 88]})
उत्तीर्ण = df[df['अंक'] >= 80]
print(उत्तीर्ण)
# तार्किक संचालकों से जटिल फ़िल्टर
f = df[(df['अंक'] >= 80) & (df['अंक'] <= 90)]
print(f)

बूलियन फ़िल्टरिंग में & (AND), | (OR) और ~ (NOT) संचालकों का उपयोग होता है। प्रत्येक शर्त को कोष्ठक (parentheses) में रखना अनिवार्य है। यह अध्याय का सबसे महत्वपूर्ण विषय है।

6. सीरीज़ और डेटाफ्रेम की संक्रियाएं

डेटाफ्रेम में स्तंभों (सीरीज़) के बीच अंकगणितीय संक्रियाएं की जा सकती हैं:

df['कुल'] = df['प्रथम'] + df['द्वितीय']
df['औसत'] = df['कुल'] / 2
print(df)

सीरीज़ और स्केलर के बीच भी संक्रियाएं संभव हैं:

s = pd.Series([10, 20, 30])
print(s * 2)
print(s + 100)

सीरीज़ की सांख्यिकीय विधियां जैसे sum(), mean(), median(), min(), max(), count(), std(), var() भी उपयोगी हैं:

print(s.sum())
print(s.mean())
print(s.min())
print(s.max())

7. डेटाफ्रेम जोड़ना (Concatenation)

दो या दो से अधिक सीरीज़ों या डेटाफ्रेमों को जोड़ने के लिए pd.concat() का उपयोग होता है:

import pandas as pd
s1 = pd.Series([10, 20, 30])
s2 = pd.Series([40, 50, 60])
s3 = pd.concat([s1, s2])
print(s3)

डेटाफ्रेम को पंक्ति के अनुसार जोड़ने के लिए axis=0 (डिफ़ॉल्ट) और स्तंभ के अनुसार जोड़ने के लिए axis=1 का उपयोग किया जाता है:

df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'B': [3, 4]})
df_बार = pd.concat([df1, df2], axis=1)
print(df_बार)

8. डेटा सॉर्टिंग (Sorting)

डेटा को किसी स्तंभ या सूचकांक के आधार पर क्रमबद्ध किया जा सकता है:

import pandas as pd
df = pd.DataFrame({'नाम': ['राम', 'सीता', 'गीता'], 'अंक': [85, 92, 78]})
df_आरोही = df.sort_values(by='अंक')
print(df_आरोही)
df_अवरोही = df.sort_values(by='अंक', ascending=False)
print(df_अवरोही)

एक से अधिक स्तंभों के आधार पर सॉर्ट करने के लिए by=['कॉलम1', 'कॉलम2'] सूची का उपयोग करें।

9. डेटाफ्रेम में पंक्तियों की संख्या और जानकारी

print(df.shape)
print(df.dtypes)
print(df.info())

10. डेटाफ्रेम के विभिन्न संकलन (Aggregation) कार्य

डेटा का सांख्यिकीय विश्लेषण करने के लिए डेटाफ्रेम अनेक संकलन विधियां प्रदान करता है। df.sum(), df.mean(), df.median(), df.min(), df.max() और df.count() जैसी विधियां प्रत्येक स्तंभ पर लागू होकर एकल मानों की सीरीज़ लौटाती हैं। उदाहरण के लिए, df.mean() सभी संख्यात्मक स्तंभों का औसत देता है और df.sum() प्रत्येक स्तंभ का योग निकालता है। df.agg() विधि के द्वारा एक साथ कई संकलन फलन लागू किए जा सकते हैं, जैसे df.agg(['sum', 'mean', 'max'])। यह विधि एक साथ कई सांख्यिकीय माप प्राप्त करने के लिए बहुत सुविधाजनक होती है। groupby के साथ संकलन करने से प्रत्येक समूह के लिए अलग-अलग सांख्यिकीय परिणाम मिलते हैं, जैसे df.groupby('शहर')['अंक'].sum() प्रत्येक शहर के कुल अंक लौटाता है। इसके अलावा df.cumsum() क्रमिक योग (cumulative sum) देता है और df.pct_change() प्रतिशत परिवर्तन की गणना करता है, जो वित्तीय डेटा के विश्लेषण में विशेष रूप से उपयोगी है। df.describe() सभी संख्यात्मक स्तंभों का व्यापक सांख्यिकीय सारांश एक साथ प्रस्तुत करता है। इन संकलन विधियों की सहायता से बड़े डेटा सेट से शीघ्रता से अर्थपूर्ण निष्कर्ष निकाले जा सकते हैं। परीक्षा में इन विधियों के आउटपुट का अनुमान लगाने से संबंधित प्रश्न प्रायः पूछे जाते हैं, इसलिए प्रत्येक विधि का अर्थ स्पष्ट रूप से जानना आवश्यक है।

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

तालिका 1: स्तंभ जोड़ना/हटाना

क्रिया कोड
स्तंभ जोड़ना df['नया'] = सूची
स्तंभ हटाना del df['कॉलम']
स्तंभ हटाना df.drop(columns=['कॉलम'])
स्थायी हटाना df.drop(columns=['कॉलम'], inplace=True)

तालिका 2: पंक्ति जोड़ना/हटाना और सॉर्टिंग

क्रिया कोड
पंक्ति जोड़ना df.loc['नया_index'] = [मान...]
पंक्ति हटाना df.drop('index')
मान से सॉर्ट df.sort_values(by='कॉलम')
सूचकांक से सॉर्ट df.sort_index()
अवरोही सॉर्ट df.sort_values(by='कॉलम', ascending=False)

तालिका 3: संघटन (Concatenation) और जानकारी

क्रिया कोड
सीरीज़/डेटाफ्रेम जोड़ना pd.concat([x, y])
स्तंभ अनुसार जोड़ना pd.concat([x, y], axis=1)
आकृति df.shape
डेटाटाइप df.dtypes
संक्षिप्त जानकारी df.info()

माइंड मैप

graph TD A["पाइथन पांडा - II"] --> B["स्तंभ संचालन"] A --> C["पंक्ति संचालन"] A --> D["फ़िल्टरिंग"] A --> E["सॉर्टिंग"] A --> F["संघटन (concat)"] B --> B1["जोड़ें: df['नया'] = [..]"] B --> B2["हटाएं: del / drop"] C --> C1["जोड़ें: df.loc[label]"] C --> C2["हटाएं: df.drop(label)"] D --> D1["बूलियन शर्तें: df[df['कॉलम'] > 80]"] D --> D2["& , | , ~ संचालक"] E --> E1["sort_values / sort_index"] F --> F1["axis=0 पंक्ति, axis=1 स्तंभ"]

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

बूलियन डेटा फ़िल्टरिंग मूल डेटाफ्रेम df नाम अंक राम 85 सीता 92 गीता 78 फ़िल्टर: अंक >= 80 नाम अंक राम 85 सीता 92 गीता (हटी हुई पंक्ति) फिल्टर कूट उत्तीर्ण = df[df['अंक'] >= 80] संयुक्त शर्त: df[(df['अंक']>=80) & (df['अंक']<=90)] Golden Rule प्रत्येक शर्त को कोष्ठक में रखना अनिवार्य
pd.concat() संघटन df1 A 1 2 df2 B 3 4 axis=1 (स्तंभ जोड़ना) परिणाम df_बार = pd.concat([df1, df2], axis=1) A B 1 3 2 4 स्वर्ण नियम axis=0 पंक्ति जोड़ता है, axis=1 स्तंभ जोड़ता है

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

  1. drop() में inplace भूलना: df.drop(columns=['अंक']) मूल डेटाफ्रेम में परिवर्तन नहीं करता। बिना inplace=True के परिवर्तन स्थायी नहीं होता।
  2. फ़िल्टर में कोष्ठक नहीं लगाना: df[df['अंक']>=80 & df['अंक']<=90] में & के दोनों ओर की शर्तें कोष्ठक में होनी चाहिए, अन्यथा त्रुटि आती है।
  3. & और and में भ्रम: पांडा फ़िल्टरिंग में and का उपयोग नहीं होता, & का उपयोग होता है। and पाइथन की सामान्य बूलियन संक्रिया है।
  4. sort_values में by भूलना: sort_values() में by पैरामीटर अनिवार्य है, बिना इसके TypeError आती है।
  5. loc से पंक्ति जोड़ना भूलना: पंक्ति जोड़ने के लिए df.loc['नया'] = [...] का उपयोग किया जाता है, न कि सीधे सूची।
  6. अवरोही क्रम में ascending भूलना: सॉर्ट डिफ़ॉल्ट रूप से आरोही होता है; अवरोही के लिए ascending=False अनिवार्य है।
  7. del df['कॉलम'] को स्थायी समझना: del स्थायी रूप से हटाता है, इसलिए बैकअप रखना बुद्धिमानी है।

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

  1. फ़िल्टरिंग प्रश्नों में &, |, ~ के सही उपयोग और कोष्ठकों की स्थिति पर ध्यान दें।
  2. sort_values(by='कॉलम', ascending=False) का अवरोही रूप याद रखें।
  3. concat में axis के मान का अर्थ — 0 पंक्ति, 1 स्तंभ — सदैव स्पष्ट रखें।
  4. drop() से हटाने के बाद नया डेटाफ्रेम लौटता है, inplace=True से मूल बदलता है।
  5. सीरीज़ की सांख्यिकीय विधियां sum, mean, median, min, max याद रखें।
  6. df.loc और df.iloc का प्रयोग करके पंक्ति जोड़ने के अभ्यास करें।

निष्कर्ष

पाइथन पांडा - II में हमने डेटाफ्रेम के प्रबंधन की उन्नत संक्रियाएं सीखीं — स्तंभ और पंक्ति जोड़ना व हटाना, बूलियन फ़िल्टरिंग, सॉर्टिंग, तथा pd.concat() के माध्यम से डेटा संघटन। बूलियन फ़िल्टरिंग वास्तविक डेटा विश्लेषण की कुंजी है। &, |, ~ संचालकों का सही उपयोग और कोष्ठकों का नियम इस अध्याय का प्रमुख केंद्र बिंदु है। इन संक्रियाओं की निपुणता से विद्यार्थी वास्तविक जीवन के डेटा सेटों में आवश्यक जानकारी को सरलता से निकाल सकते हैं। अगले अध्याय में हम डेटा विज़ुअलाइज़ेशन का अध्ययन करेंगे, जिसमें हम डेटा को आरेखों के रूप में प्रदर्शित करना सीखेंगे।