Pandas (शैली में pandas) पायथन प्रोग्रामिंग भाषा के लिए लिखी गई एक सॉफ्टवेयर लाइब्रेरी है, जो डेटा हेरफेर और विश्लेषण के लिए है। विशेष रूप से, यह संख्यात्मक तालिकाओं और समय श्रृंखलाओं में हेरफेर के लिए डेटा संरचनाएं और संचालन प्रदान करती है। यह तीन-खंड BSD लाइसेंस के तहत जारी मुफ्त सॉफ्टवेयर है। नाम "पैनल डेटा" शब्द से लिया गया है, जो अर्थमिति का एक शब्द है जो उन डेटा सेटों के लिए है जिनमें समान व्यक्तियों के लिए कई समय अवधियों में अवलोकन शामिल हैं, साथ ही "पायथन डेटा विश्लेषण" वाक्यांश पर एक नाटक भी है। वेस मैककिनी ने 2007 से 2010 तक वहां शोधकर्ता रहते हुए AQR कैपिटल में वह बनाना शुरू किया जो बाद में Pandas बन गया।
Pandas के विकास ने पायथन में DataFrame के साथ काम करने की कई तुलनीय विशेषताएं पेश कीं जो R प्रोग्रामिंग भाषा में स्थापित थीं। यह लाइब्रेरी एक अन्य लाइब्रेरी, NumPy, के ऊपर बनाई गई है।
इतिहास
डेवलपर वेस मैककिनी ने 2008 में AQR कैपिटल मैनेजमेंट में वित्तीय डेटा पर मात्रात्मक विश्लेषण करने के लिए उच्च प्रदर्शन, लचीले उपकरण की आवश्यकता के कारण Pandas पर काम शुरू किया। AQR छोड़ने से पहले, वह प्रबंधन को 2009 में लाइब्रेरी को ओपन सोर्स करने की अनुमति देने के लिए मनाने में सक्षम थे। AQR के एक अन्य कर्मचारी, चांग शे, 2012 में लाइब्रेरी के दूसरे प्रमुख योगदानकर्ता के रूप में प्रयास में शामिल हुए। 2015 में, Pandas ने NumFOCUS के एक राजकोषीय रूप से प्रायोजित परियोजना के रूप में हस्ताक्षर किए, जो संयुक्त राज्य अमेरिका में एक 501(c)(3) गैर-लाभकारी चैरिटी है।
डेटा मॉडल
Pandas Series और DataFrame नामक डेटा संरचनाओं के आसपास बनाया गया है। इन संग्रहों के लिए डेटा विभिन्न फ़ाइल स्वरूपों से आयात किया जा सकता है जैसे कि कॉमा-सेपरेटेड वैल्यूज़, JSON, Parquet, SQL डेटाबेस तालिकाएं या क्वेरी, और माइक्रोसॉफ्ट एक्सेल।
Series
एक Series एक आयामी सरणी-जैसी वस्तु है जो मूल्यों के अनुक्रम को लेबल के संबंधित सेट के साथ संग्रहीत करती है, जिसे इंडेक्स कहा जाता है। यह NumPy की सरणी के ऊपर बनाई गई है और कई समान कार्यक्षमताएं प्रदान करती है, लेकिन निहित पूर्णांक स्थितियों का उपयोग करने के बजाय, एक Series कई डेटा प्रकारों के स्पष्ट इंडेक्स लेबल की अनुमति देती है। एक Series पायथन सूचियों, शब्दकोशों, या NumPy सरणियों से बनाई जा सकती है। यदि कोई इंडेक्स प्रदान नहीं किया गया है, तो pandas स्वचालित रूप से 0 से n-1 तक एक डिफ़ॉल्ट पूर्णांक इंडेक्स निर्दिष्ट करता है, जहां n Series में आइटम की संख्या है।
Series से एक मान या मानों की सूची तक पहुंचने के लिए, इसके इंडेक्स या इंडेक्स की सूची का उपयोग करें। Series का अंकगणितीय रूप से उपयोग किया जा सकता है, जैसे कि कथन series_3 = series_1 + series_2 में। यह series_1 और series_2 में संबंधित इंडेक्स मानों के साथ डेटा बिंदुओं को संरेखित करेगा (रिलेशनल बीजगणित में जॉइन के समान), फिर उन्हें series_3 में नए मान उत्पन्न करने के लिए जोड़ देगा। एक Series में विभिन्न विशेषताएं होती हैं, जैसे name (Series नाम), dtype (मानों का डेटा प्रकार), shape (पंक्तियों की संख्या), values, और index। उनका उपयोग NumPy सरणियों के समान कई संचालनों में किया जा सकता है, जिसमें रीइंडेक्सिंग, लेबल-आधारित चयन, और लापता डेटा को संभालने के लिए अतिरिक्त विधियां शामिल हैं।
DataFrame
एक DataFrame एक दो-आयामी, सारणीबद्ध डेटा संरचना है जिसमें लेबल वाली पंक्तियां और कॉलम होते हैं। प्रत्येक कॉलम आंतरिक रूप से एक Series के रूप में संग्रहीत होता है और विभिन्न डेटा प्रकार (संख्यात्मक, स्ट्रिंग, बूलियन, आदि) रख सकता है। DataFrame विभिन्न तरीकों से बनाए जा सकते हैं, जिनमें सूचियों के शब्दकोश, NumPy सरणियां, और CSV या एक्सेल स्प्रेडशीट जैसी बाहरी फ़ाइलें शामिल हैं। DataFrame कॉलम को Series के रूप में पुनर्प्राप्त करने के लिए, इंडेक्स (डिक्ट-जैसी संकेतन) या कॉलम का नाम उपयोग करें यदि नाम एक मान्य पायथन पहचानकर्ता है (विशेषता-जैसी पहुंच)। DataFrame कॉलम असाइनमेंट, पंक्ति और कॉलम विलोपन, loc के साथ लेबल-आधारित इंडेक्सिंग, iloc के साथ स्थिति-आधारित इंडेक्सिंग, पुनर्आकार, समूहीकरण, और जॉइनिंग जैसे संचालन का समर्थन करते हैं। मर्ज संचालन रिलेशनल बीजगणित का एक उपसमुच्चय लागू करते हैं और एक-से-एक, कई-से-एक, और कई-से-कई जॉइन की अनुमति देते हैं।
DataFrame की कुछ सामान्य विशेषताओं में dtypes (प्रत्येक कॉलम का डेटा प्रकार), shape (DataFrame के आयाम जो (पंक्तियों की संख्या, कॉलम की संख्या) के रूप में टपल के रूप में लौटाए जाते हैं), index/columns (DataFrame की पंक्तियों/कॉलम के लेबल, क्रमशः, एक Index ऑब्जेक्ट के रूप में लौटाए जाते हैं), values (DataFrame में डेटा 2D सरणी के रूप में लौटाया जाता है), और empty (यदि DataFrame खाली है तो True लौटाता है) शामिल हैं।
Index
Index ऑब्जेक्ट Series और Dataframe ऑब्जेक्ट के लिए मेटाडेटा रखते हैं, जैसे अक्ष लेबल और नाम, और इनपुट डेटा से स्वचालित रूप से बनाए जाते हैं। डिफ़ॉल्ट रूप से, एक pandas इंडेक्स 0 से बढ़ते पूर्णांकों की एक श्रृंखला है, जो पायथन सरणियों के इंडेक्स के समान है। हालांकि, इंडेक्स किसी भी NumPy डेटा प्रकार का उपयोग कर सकते हैं, जिसमें फ्लोटिंग पॉइंट, टाइमस्टैम्प, या स्ट्रिंग शामिल हैं। इंडेक्स भी अपरिवर्तनीय हैं, जो उन्हें कई ऑब्जेक्ट्स के बीच सुरक्षित रूप से साझा करने की अनुमति देता है।
pandas की इंडेक्स मानों को प्रासंगिक डेटा से मैप करने की सिंटैक्स वही है जो पायथन शब्दकोश कुंजियों को मानों से मैप करने के लिए उपयोग करता है। उदाहरण के लिए, यदि s एक Series है, तो s['a'] इंडेक्स a पर डेटा बिंदु लौटाएगा। शब्दकोश कुंजियों के विपरीत, इंडेक्स मान अद्वितीय होने की गारंटी नहीं हैं। यदि एक Series कई डेटा बिंदुओं के लिए इंडेक्स मान a का उपयोग करता है, तो s['a'] इसके बजाय सभी मिलान मानों वाली एक नई Series लौटाएगा। एक DataFrame के कॉलम नाम इंडेक्स के समान संग्रहीत और कार्यान्वित किए जाते हैं। इस प्रकार, एक DataFrame को दो इंडेक्स वाला माना जा सकता है: एक कॉलम-आधारित और एक पंक्ति-आधारित। क्योंकि कॉलम नाम एक इंडेक्स के रूप में संग्रहीत होते हैं, इन्हें अद्वितीय होना आवश्यक नहीं है।
यदि data एक Series है, तो data['a'] इंडेक्स मान a वाले सभी मान लौटाता है। हालांकि, यदि data एक DataFrame है, तो data['a'] नाम a वाले कॉलम में सभी मान लौटाता है। इस अस्पष्टता से बचने के लिए, Pandas इंडेक्स का उपयोग करके फ़िल्टर करने के वैकल्पिक तरीके के रूप में सिंटैक्स data.loc['a'] का समर्थन करता है। Pandas सिंटैक्स data.iloc[n] का भी समर्थन करता है, जो हमेशा एक पूर्णांक n लेता है और 0 से गिनती करते हुए nth मान लौटाता है। यह उपयोगकर्ता को ऐसे कार्य करने की अनुमति देता है जैसे कि इंडेक्स पूर्णांकों का एक सरणी-जैसा अनुक्रम है, भले ही यह वास्तव में कैसे परिभाषित किया गया हो।
pandas "MultiIndex" वर्ग के माध्यम से प्रति डेटा बिंदु कई मानों वाले पदानुक्रमित इंडेक्स का भी समर्थन करता है। MultiIndex ऑब्जेक्ट एक एकल DataFrame को कई आयामों का प्रतिनिधित्व करने की अनुमति देते हैं, जो माइक्रोसॉफ्ट एक्सेल में पिवट तालिका के समान है, जहां प्रत्येक स्तर वैकल्पिक रूप से अपना अद्वितीय नाम रख सकता है। व्यवहार में, 2 से अधिक आयामों वाले डेटा को अक्सर उच्च-आयामी Panel और Panel4D डेटा संरचनाओं के बजाय पदानुक्रमित इंडेक्स वाले DataFrame का उपयोग करके दर्शाया जाता है।
कार्यक्षमता
pandas विभिन्न प्रकार की इंडेक्सिंग और सबसेटिंग तकनीकों का समर्थन करता है, जिससे डेटा को लेबल, इंडेक्स, या बूलियन शर्तों द्वारा चुना जा सकता है। उदाहरण के लिए, df[df['col1'] > 5] DataFrame df में उन सभी पंक्तियों को लौटाएगा जिनके लिए कॉलम col1 का मान 5 से अधिक है। लाइब्रेरी स्प्लिट-एप्लाई-कंबाइन दृष्टिकोण के आधार पर समूहीकरण संचालन भी लागू करती है, जिससे उपयोगकर्ता कॉलम मानों या इंडेक्स लेबल पर लागू कार्यों के अनुसार डेटा को एकत्रित, रूपांतरित, या पुनर्गठित कर सकते हैं। उदाहरण के लिए, df['col1'].groupby(df['col2']) 'col1' में डेटा को 'col2' में उनके मानों द्वारा समूहित करता है, जबकि df.groupby(lambda i: i % 2) पूरे DataFrame में सभी डेटा को समूहित करता है कि उनका इंडेक्स सम है या नहीं।
लाइब्रेरी लापता डेटा को संभालने, डेटासेट को मर्ज और जॉइन करने, डेटा को पुनर्आकार देने (जैसे, पिवोटिंग और मेल्टिंग), समय श्रृंखला कार्यक्षमता, और कई फ़ाइल स्वरूपों के लिए इनपुट/आउटपुट के लिए उपकरण भी प्रदान करती है। ये विशेषताएं pandas को पायथन डेटा विज्ञान पारिस्थितिकी तंत्र की आधारशिला बनाती हैं, जिसे अक्सर Machine learning लाइब्रेरी और Artificial intelligence वर्कफ़्लो के साथ संयोजन में उपयोग किया जाता है। NumPy सरणियों के साथ इसका एकीकरण और Deep learning फ्रेमवर्क के साथ संगतता ने वित्त से लेकर Amazon Web Services क्लाउड एनालिटिक्स तक उद्योगों में डेटा प्रीप्रोसेसिंग पाइपलाइनों में इसकी भूमिका को मजबूत किया है।