माइकल मैकाले

मशीन लर्निंग जर्नी के लिए पंडों के कार्यों को अवश्य जानें

स्रोत नोड: 1865356

इस लेख के एक भाग के रूप में प्रकाशित किया गया था डेटा साइंस ब्लॉगथॉन

परिचय

ख़ैर, इसकी अच्छी संभावना है कि आप ऐसा कर सकते हैं!

डेटा वैज्ञानिकों के लिए जो अपनी प्राथमिक प्रोग्रामिंग भाषा के रूप में पायथन का उपयोग करते हैं, पांडा पैकेज एक आवश्यक डेटा विश्लेषण उपकरण है। पांडास पैकेज में वह सब कुछ है जो एक डेटा वैज्ञानिक को चाहिए, और प्रत्येक पाठ्यक्रम ने हमें सिखाया कि सबसे पहले इसका उपयोग कैसे किया जाए। यह इतना बड़ा, शक्तिशाली है और लगभग हर सारणीबद्ध हेरफेर करता है जिसकी आप कल्पना कर सकते हैं। हालाँकि, यह चौड़ाई कभी-कभी नुकसानदेह हो सकती है।

इसमें कई खूबसूरत विशेषताएं हैं जो दुर्लभ किनारे के मामलों, विभिन्न परिदृश्यों को हल करती हैं।

पांडा की प्रमुख कमियों में से एक यह है कि यह बड़े डेटासेट के साथ संघर्ष करता है क्योंकि पांडा अपने डेटा संरचनाओं को रैम में संग्रहीत करता है, जो डेटा आकार बढ़ने के साथ अपर्याप्त हो सकता है। इसके लिए PySpark या Dashk का उपयोग करें।

भले ही पांडा पैकेज का व्यापक रूप से उपयोग किया जाता है, फिर भी ऐसे कई कार्य हैं जिन्हें लोग अनदेखा कर सकते हैं, चाहे इसका उपयोग कम किया जाता हो या क्योंकि वे इसके अस्तित्व से अनजान हों। इस पोस्ट का उद्देश्य आपको उन विशेषताओं से पुनः परिचित कराना है और यह प्रदर्शित करना है कि पांडा आपकी पहले की अपेक्षा कहीं अधिक सक्षम हैं।

पाइप

पांडा में संक्षिप्त, कॉम्पैक्ट तरीके से डेटा की सफाई करने के लिए, पाइप फ़ंक्शंस का उपयोग किया जा सकता है, जो आपको एक ऑपरेशन में कई फ़ंक्शंस को संयोजित करने की अनुमति देता है।

उदाहरण के लिए, यदि आप ड्रॉप_डुप्लिकेट्स, एनकोड_कैटेगरीकल, रिमूव_आउटलेर्स जैसे फ़ंक्शंस लागू करना पसंद करते हैं जो इसके तर्कों को स्वीकार करते हैं।

df_cleaned = (हीरे.पाइप(ड्रॉप_डुप्लिकेट). पाइप(remove_outliers, ['कीमत', 'कैरेट', 'गहराई']). पाइप(एनकोड_श्रेणीबद्ध, ['कट', 'रंग', 'स्पष्टता']) )

खंड करना

यह फ़ंक्शन स्केलेरन्स लेबल एनकोडर का एक विकल्प है।

#अंत में [0] पर ध्यान दें हीरे["कट_एनसी"] = पीडी.फैक्टराइज(हीरे["कट"])[0] >>> हीरे["कट_एनसी"].नमूना(5) 52103 2 39813 0 31843 0 10675 0 6634 0 नाम: कट_एनसी, डीटाइप: int64

मानों के एक समूह को गुणनखंडित करें: एन्कोडेड मान और अद्वितीय श्रेणियों की एक सूची।

मान, अद्वितीय = pd.factorize(हीरे["कट"], सॉर्ट=सत्य) >>> मान[:10] सरणी([0, 1, 3, 1, 3, 2, 2, 2, 4, 2] , dtype=int64) >>> अद्वितीय ['आदर्श', 'प्रीमियम', 'बहुत अच्छा', 'अच्छा', 'उचित']

विस्फोट

विस्फोट | पांडा कार्य करता है

द्वारा फोटो एडेवा फोस्टर on Unsplash

एक्सप्लोड एक दिलचस्प नाम वाला एक फ़ंक्शन है। आइए एक उदाहरण से शुरू करें और फिर एक स्पष्टीकरण:

डीएफ = पीडी.श्रृंखला([1, 6, 7, [46, 56, 49], 45, [15, 10, 12]]).to_frame("गंदा") >>> डीएफ
डेटा | पांडा कार्य करता है
लेखक द्वारा छवि

फ़ीचर कॉलम में सूचियों से दर्शाई गई दो पंक्तियाँ हैं। इस प्रकार का डेटा सर्वेक्षणों में उपलब्ध होता है जहां कुछ प्रश्न एकाधिक विकल्प स्वीकार करते हैं।

>>> df.explode("गंदा", अनदेखा_सूचकांक=सही)
डेटा विस्फोट
लेखक द्वारा छवि

यह फ़ंक्शन मानों की एक श्रृंखला के साथ एक सेल लेता है और कई पंक्तियों में विस्फोट करता है। संख्यात्मक सूचकांक के क्रम को बनाए रखने के लिए,ign_index को True के रूप में उपयोग करें।

के बीच

किसी सीमा के भीतर संख्यात्मक विशेषताओं को बूलियन अनुक्रमणित करने के लिए, यहां एक उपयोगी फ़ंक्शन है:

# ऐसे हीरे प्राप्त करें जिनकी कीमत 3500 और 3700 डॉलर के बीच हो हीरे[हीरे["कीमत"].बीच(3500, 3700, समावेशी='दोनों में से कोई नहीं')].नमूना(5)
डेटा के बीच | पांडा कार्य करता है
लेखक द्वारा छवि

 

T

डेटाफ़्रेम में एक सरल T विशेषता है, जिसे ट्रांसपोज़ के रूप में जाना जाता है। हम इसका अक्सर उपयोग नहीं कर सकते हैं, डेटाफ़्रेम देखते समय वर्णन विधि सहायक होती है।

>>> बोस्टन.वर्णन().टी.हेड(10)
खिसकाना
लेखक द्वारा छवि

 

पांडा विकल्प

कोई पांडा की वैश्विक सेटिंग्स का उपयोग कर सकता है जो डिफ़ॉल्ट व्यवहार को बदलने और बदलने में मदद करता है।

>>> dir(pd.options) ['कंप्यूट', 'डिस्प्ले', 'io', 'मोड', 'प्लॉटिंग']

इसमें 5 मॉड्यूल शामिल हैं। आइए डिस्प्ले के नीचे उपलब्ध विकल्प देखें। कई विकल्प उपलब्ध हैं, लेकिन मैं अधिकतर max_columns का उपयोग करता हूं।

>>> dir(pd.options.display) ['chop_threshold', 'max_columns', 'max_colwidth', 'max_info_columns', 'max_info_rows', 'max_rows', ... 'precision', 'show_dimensions', 'unicode' , 'चौड़ाई']

अधिकांश लोग max_columns और परिशुद्धता का उपयोग करते हैं

# कॉलम की संख्या प्रदर्शित करने की सीमा हटाएं pd.options.display.max_columns = कोई नहीं # दशमलव के बाद केवल 5 संख्याएं दिखाएं pd.options.display.precision = 5 # वैज्ञानिक संकेतन से छुटकारा मिलता है

Convert_dtypes

हम सभी जानते हैं कि पांडा को कुछ स्तंभों को ऑब्जेक्ट डेटा प्रकार के रूप में चिह्नित करने की कष्टप्रद आदत होती है। उनके प्रकारों को सीधे परिभाषित करने के बजाय, आप कन्वर्ट dtypes विधि का उपयोग कर सकते हैं, जो सर्वोत्तम डेटा प्रकार निकालने का प्रयास करता है:

नमूना = pd.read_csv("data/station_day.csv",usecols=["StationId", "CO", "O3", "AQI_Bucket"]) >>> नमूना.dtypes स्टेशनआईडी ऑब्जेक्ट CO फ्लोट64 O3 फ्लोट64 AQI_Bucket ऑब्जेक्ट dtype: ऑब्जेक्ट >>> नमूना.convert_dtypes().dtypes स्टेशनआईडी स्ट्रिंग CO फ्लोट64 O3 फ्लोट64 AQI_Bucket स्ट्रिंग dtype: ऑब्जेक्ट

चयन_dtypes

मेरा मानना ​​है कि नाम से यह स्पष्ट है कि फ़ंक्शन क्या करता है। आप विशिष्ट डेटा प्रकारों को शामिल करने या हटाने वाले कॉलम निर्दिष्ट करने के लिए शामिल और बहिष्कृत विकल्पों का उपयोग कर सकते हैं।

उदाहरण के लिए, केवल np.number वाले संख्यात्मक कॉलम चुनें:

# केवल संख्यात्मक कॉलम चुनें डायमंड्स.select_dtypes(include=np.number).head()
dtypes चुनें
लेखक द्वारा छवि

 

मुखौटा

यह फ़ंक्शन उन मानों को बदलने में मदद करता है जहां कस्टम स्थिति संतुष्ट नहीं है।

# नमूना डेटा आयु बनाएं = pd.Series([55, 52, 50, 66, 57, 59, 49, 60]).to_frame("उम्र") आयु
मुखौटा | आंकड़े
लेखक द्वारा छवि

उपरोक्त ऑपरेशन करने के बाद.

मास्किंग का प्रदर्शन किया
लेखक द्वारा छवि

न्यूनतम और अधिकतम

हालाँकि न्यूनतम और अधिकतम सर्वविदित हैं, कुछ किनारे के मामलों के लिए इसमें कुछ बेहतर गुण हैं।

सूचकांक = ["हीरे", "टाइटैनिक", "आइरिस", "हृदय रोग", "ऋण डिफ़ॉल्ट"] पुस्तकालय = ["XGBoost", "कैटबूस्ट", "लाइटGBM", "स्केलर्न जीबी"] df = pd.DataFrame ( {lib: np.random.uniform(90, 100, 5) पुस्तकालयों में lib के लिए}, Index=index ) >>> df
न्यूनतम और अधिकतम
लेखक द्वारा छवि 

उपरोक्त काल्पनिक डेटाफ़्रेम पांच डेटासेट पर चार अलग-अलग ग्रेडिएंट बूस्टिंग लाइब्रेरी के परिणाम दिखाता है। हम उस पैकेज की तलाश कर रहे हैं जिसने प्रत्येक डेटासेट पर सबसे अच्छा काम किया। यहां बताया गया है कि इसे उत्तम दर्जे के तरीके से मैक्स के साथ कैसे पूरा किया जाए:

>>> df.max(axis=1) हीरे 99.52684 टाइटैनिक 99.63650 आइरिस 99.10989 हृदय रोग 99.31627 ऋण डिफ़ॉल्ट 97.96728 dtype: फ्लोट64

सबसे बड़ा और सबसे छोटा

किसी चर के शीर्ष N या ~(शीर्ष N) मानों को देखने के लिए nlargest और nsmallest सहायक होता है।

हीरे.सबसे बड़ा(5, "कीमत")
सबसे बड़ा और सबसे छोटा
लेखक द्वारा छवि
हीरे.nsसबसे छोटा(5, "कीमत")
nsसबसे छोटा
लेखक द्वारा छवि

 

Idxmax और Idxmin

जब आप किसी कॉलम पर अधिकतम या न्यूनतम कॉल करते हैं तो पांडा सबसे बड़ी/छोटी संख्या लौटाते हैं। हालाँकि, ऐसी परिस्थितियाँ होती हैं जब आपको न्यूनतम/अधिकतम की स्थिति की आवश्यकता होती है, जो ये फ़ंक्शन प्रदान नहीं करते हैं।

इसके बजाय, आप idxmax/idxmin का उपयोग कर सकते हैं:

>>> डायमंड्स.प्राइस.आईडीएक्समैक्स() 27749 >>> डायमंड्स.कैरेट.आईडीएक्समिन() 14

मान_गिनती

लुप्त मानों का प्रतिशत ज्ञात करने का एक सामान्य तरीका शून्य और योग को संयोजित करना और सरणी के आकार से विभाजित करना है।

लेकिन, प्रासंगिक तर्कों के साथ value_counts वही काम करता है:

आवास = pd.read_csv("train.csv") >>> आवास["FireplaceQu"].value_counts(dropna=गलत, सामान्यीकरण=सत्य) NaN 0.47260 Gd 0.26027 TA 0.21438 Fa 0.02260 Ex 0.01644 Po 0.01370 नाम: FireplaceQu, dtype: फ्लोट64

क्लिप

क्लिप फ़ंक्शन एक सीमा के बाहर आउटलेर्स को ढूंढने और उन्हें हार्ड लिमिट से बदलने में मदद करता है।

>>> आयु.क्लिप(50, 60)
क्लिप के लिए डेटा
लेखक द्वारा छवि

 

समय_पर_और_समय_के_बीच

ये फ़ंक्शन उच्च ग्रैन्युलैरिटी की समय श्रृंखला के साथ काम करते समय सहायक होते हैं।

at_time किसी विशिष्ट दिनांक या समय पर मान प्राप्त करने में सहायता करता है।

सूचकांक = pd.date_range('2021-08-01', अवधि=100, freq='H') df = pd.DataFrame({'col': सूची(रेंज(100))}, सूचकांक=सूचकांक) >> > डीएफ.हेड()
at_time उदाहरण | पांडा कार्य करता है
लेखक द्वारा छवि

>>>df.at_time(“15:00”)

.at_time | पांडा कार्य करता है
लेखक द्वारा छवि

बिटवीन_टाइम का उपयोग कस्टम श्रेणी के भीतर पंक्तियाँ लाने के लिए किया जाता है।

डेटाटाइम से आयात डेटाटाइम >>> df.between_time('09:45', '12:00')
बीच_समय
लेखक द्वारा छवि

 

Bdate_range

यह फ़ंक्शन व्यावसायिक-दिवस आवृत्ति के साथ समय-श्रृंखला सूचकांक बनाने में मदद करता है। वित्तीय जगत में इस प्रकार की आवृत्ति होती है। इसलिए, यह फ़ंक्शन रीइंडेक्स फ़ंक्शन के साथ समय-श्रृंखला को रीइंडेक्स करने के समय सहायक हो सकता है।

श्रृंखला = pd.bdate_range("2021-01-01", "2021-01-31") # एक माह की अवधि >>> लेन(श्रृंखला) 21

पर और Iat

ये दोनों एक्सेसर्स loc और iloc से काफी तेज़ हैं। हालाँकि, उनमें एक खामी है। वे आपको एक समय में केवल एक मान चुनने या बदलने की अनुमति देते हैं:

# [सूचकांक, लेबल] >>> हीरे.पर[234, "कट"] 'आदर्श' # [सूचकांक, सूचकांक] >>> हीरे.आईएटी[1564, 4] 61.2 # मूल्य कॉलम की 16541वीं पंक्ति बदलें >> > हीरे.पर[16541, "कीमत"] = 10000

आर्गसॉर्ट

यह फ़ंक्शन उन सूचकांकों को निकालने में मदद करता है जो सुविधाओं की एक श्रृंखला को क्रमबद्ध करेंगे।

टिप्स.रीसेट_इंडेक्स(इनप्लेस=ट्रू, ड्रॉप=ट्रू) सॉर्ट_आईडीएक्स = टिप्स['टोटल_बिल'].आर्गसॉर्ट(किंड='मर्जसॉर्ट'') # अब, टोटल_बिल टिप्स के आधार पर `टिप्स` को सॉर्ट करें।iloc[sort_idx].head()
arg_sort
लेखक द्वारा छवि

 

बिल्ली सहायक

पांडा str या dt जैसे एक्सेसर्स का उपयोग करके तारीखों और स्ट्रिंग्स पर पायथन के अंतर्निहित कार्यों की अनुमति देते हैं।

>>> हीरे.dप्रकार कैरेट फ्लोट64 कट श्रेणी रंग श्रेणी स्पष्टता श्रेणी गहराई फ्लोट64 टेबल फ्लोट64 मूल्य int64 x फ्लोट64 y फ्लोट64 z फ्लोट64 कट_एनसी int64 dप्रकार: ऑब्जेक्ट

श्रेणीबद्ध कॉलमों पर कैट एक्सेसर का उपयोग करके कोई भी कई विशेष कार्यों का उपयोग कर सकता है। इसमें अद्वितीय खोजने के लिए श्रेणियां, सुविधाओं का नाम बदलने के लिए rename_categories जैसे कार्य हैं।

हीरे["new_cuts"] = हीरे["कट"].cat.rename_categories(list("ABCDE")) >>> हीरे["new_cuts"].cat.categories Index(['A', 'B', ' सी', 'डी', 'ई'], डीटाइप='ऑब्जेक्ट')

नीचे कार्यों की अधिक सूची के लिए इसे देखें बिल्ली सहायक.

निचोड़

स्क्वीज़ एक ऐसा फ़ंक्शन है जिसका उपयोग दुर्लभ लेकिन गंभीर किनारे वाली परिस्थितियों में किया जाता है।

जब डेटाफ़्रेम को सब्मिट करने के लिए उपयोग की गई शर्त से एकल मान लौटाया जाता है, तो यह इन मामलों में से एक है। निम्नलिखित परिदृश्य पर विचार करें:

उपसमुच्चय = डायमंड्स.लोक[डायमंड्स.इंडेक्स >> उपसमुच्चय
मूल्य

भले ही केवल एक सेल हो, डेटाफ़्रेम लौटाएँ। यह असुविधाजनक है क्योंकि अब आपको मूल्य प्राप्त करने के लिए कॉलम नाम और इंडेक्स दोनों के साथ .loc का उपयोग करना होगा।

यदि आप निचोड़ना जानते हैं तो आपको ऐसा करने की आवश्यकता नहीं है। इस फ़ंक्शन का उपयोग करके एकल-सेल डेटाफ़्रेम या श्रृंखला से एक अक्ष को हटाया जा सकता है। निम्नलिखित परिदृश्य पर विचार करें:

>>> सबसेट.स्क्वीज़() 326

हटाने के लिए अक्ष को निर्दिष्ट करना संभव है। यह अब केवल स्केलर लौटा था।

>>> सबसेट.स्क्वीज़("कॉलम") # या "पंक्तियाँ" 0 326 नाम: मूल्य, dtype: int64

ध्यान दें कि यह फ़ंक्शन केवल एकल मानों वाली श्रृंखला या डेटाफ़्रेम के लिए काम करता है।

एक्सेल_राइटर

यह एक्सेल फ़ाइलें बनाने और उसमें डेटाफ़्रेम लिखने के लिए एक सामान्य वर्ग है। विचार करें, हमारे पास ये दो डेटासेट हैं।

# दो डेटासेट लोड करें हीरे = एसएनएस.लोड_डेटासेट ("डायमंड्स") टिप्स = एसएनएस.लोड_डेटासेट ("टिप्स") # लेखक के रूप में pd.ExcelWriter ("डेटा/डेटा.xlsx") के साथ एक ही एक्सेल फ़ाइल में लिखें: डायमंड्स.टू_एक्सेल (लेखक, शीट_नाम='हीरे') टिप्स.टू_एक्सेल(लेखक, शीट_नाम='टिप्स')

इसमें उपयोग करने के लिए दिनांक समय प्रारूप को निर्दिष्ट करने के गुण हैं, चाहे आपको एक नई फ़ाइल की आवश्यकता हो या किसी मौजूदा को संशोधित करना हो, यदि कोई शीट मौजूद है तो क्या होगा। इसे देखो दस्तावेज़ीकरण अधिक जानकारी के लिए.

निष्कर्ष

यह पांडा का संपूर्ण अवलोकन नहीं है, और दस्तावेज़ीकरण कोड और सुविधाओं पर अधिक जानकारी शामिल है। मेरा सुझाव है कि आप यहां दिए गए कोड स्निपेट की विभिन्न विविधताओं के साथ-साथ विभिन्न मापदंडों के साथ प्रयोग करें। ऐसा करने से पांडा की शक्ति को पूरी तरह से समझा जा सकता है।

डैस्क और डेटाटेबल जैसी लाइब्रेरी धीरे-धीरे बड़े डेटासेट को संभालने के लिए अपनी आकर्षक नई सुविधाओं के साथ पांडा को विस्थापित कर रही हैं, पांडा पायथन डेटा विज्ञान समुदाय में सबसे व्यापक रूप से उपयोग किया जाने वाला डेटा हेरफेर उपकरण बना हुआ है। वर्तमान SciPy स्टैक में यह कितनी अच्छी तरह फिट बैठता है, लाइब्रेरी अन्य पैकेजों के अनुसरण और निर्माण के लिए एक प्रतिमान के रूप में कार्य करती है।

मुझे आशा है कि आपको यह पोस्ट ज्ञानवर्धक लगी होगी और पढ़ने के लिए धन्यवाद।

इस लेख में दिखाया गया मीडिया एनालिटिक्स विद्या के स्वामित्व में नहीं है और लेखक के विवेक पर उपयोग किया जाता है।

स्रोत: https://www.analyticsvidya.com/blog/2021/08/must-know-pandas-functions-for-machine-learning-journey/

समय टिकट:

से अधिक एनालिटिक्स विधा