"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > पांडास कॉलम निर्माण के लिए np.vectorize() df.apply() से तेज़ क्यों है?

पांडास कॉलम निर्माण के लिए np.vectorize() df.apply() से तेज़ क्यों है?

2024-11-08 को प्रकाशित
ब्राउज़ करें:135

  Why is np.vectorize() Faster than df.apply() for Pandas Column Creation?

पांडा के प्रदर्शन की तुलना np.vectorize बनाम लागू होती है

यह देखा गया है कि np.vectorize() df की तुलना में काफी तेज हो सकता है। पांडा डेटाफ़्रेम में मौजूदा कॉलम के आधार पर एक नया कॉलम बनाते समय() लागू करें। देखा गया प्रदर्शन अंतर इन दो तरीकों द्वारा नियोजित अंतर्निहित तंत्र से उत्पन्न होता है।

df.apply() बनाम Python-Level Loops

df.apply() अनिवार्य रूप से बनाता है एक पायथन-स्तरीय लूप जो डेटाफ़्रेम की प्रत्येक पंक्ति पर पुनरावृत्त होता है। जैसा कि प्रदान किए गए बेंचमार्क में दिखाया गया है, पायथन-स्तरीय लूप जैसे सूची समझ और मानचित्र सभी वास्तविक वेक्टरकृत गणनाओं की तुलना में अपेक्षाकृत धीमे हैं।

np.vectorize() बनाम df.apply()

np.vectorize() एक उपयोगकर्ता-परिभाषित फ़ंक्शन को एक सार्वभौमिक फ़ंक्शन (ufunc) में परिवर्तित करता है। Ufuncs अत्यधिक अनुकूलित हैं और C-आधारित कोड और अनुकूलित एल्गोरिदम का लाभ उठाते हुए, NumPy सरणियों पर तत्व-वार संचालन कर सकते हैं। यह df.apply() के विपरीत है, जो पांडा सीरीज ऑब्जेक्ट्स पर काम करता है और अतिरिक्त ओवरहेड खर्च करता है।

ट्रू वेक्टराइजेशन: इष्टतम प्रदर्शन

वास्तव में कुशल कॉलम निर्माण के लिए , NumPy के भीतर वेक्टरकृत गणनाओं की अत्यधिक अनुशंसा की जाती है। numpy.where और df["A"] / df["B"] के साथ प्रत्यक्ष तत्व-वार विभाजन जैसे ऑपरेशन बेहद तेज़ हैं और लूप से जुड़े ओवरहेड्स से बचते हैं।

और भी अधिक दक्षता के लिए, नंबा का उपयोग करके लूप को और अधिक अनुकूलित करना संभव है, एक कंपाइलर जो पायथन फ़ंक्शंस को अनुकूलित सी कोड में अनुवाद करता है। नुम्बा निष्पादन समय को माइक्रोसेकंड तक कम कर सकता है, जो df.apply() और np.vectorize() दोनों से काफी बेहतर प्रदर्शन कर सकता है।

निष्कर्ष

जबकि np.vectorize() पेशकश कर सकता है df.apply() पर कुछ सुधार, यह NumPy में वेक्टरकृत गणनाओं का सही विकल्प नहीं है। अधिकतम प्रदर्शन प्राप्त करने के लिए, पांडा डेटाफ़्रेम में नए कॉलम के निर्माण के लिए NumPy के भीतर Numba अनुकूलन या प्रत्यक्ष वेक्टरकृत संचालन का उपयोग करें।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3