डेटाफ़्रेम में स्ट्रिंग्स को ऑब्जेक्ट के रूप में क्यों संग्रहीत किया जाता है?
स्ट्रिंग्स वाले डेटाफ़्रेम कॉलम को स्ट्रिंग डेटा प्रकार में स्पष्ट रूप से परिवर्तित करने के बावजूद, पायथन की पांडा लाइब्रेरी अभी भी उन्हें वस्तुओं के रूप में रिपोर्ट किया जा सकता है। यह विसंगति NumPy की अंतर्निहित डेटा संरचनाओं के कारण उत्पन्न होती है।
NumPy डेटा के सरणियों को संग्रहीत करने के लिए ndarrays का उपयोग करता है, ndarray में प्रत्येक तत्व में बाइट्स की एक निश्चित संख्या होती है। पूर्णांकों (int64) और फ़्लोटिंग-पॉइंट संख्याओं (फ़्लोट64) के लिए, प्रत्येक तत्व 8 बाइट्स लेता है। हालाँकि, स्ट्रिंग्स की लंबाई परिवर्तनशील होती है, जिससे उन्हें सीधे ndarray में संग्रहीत करना अव्यावहारिक हो जाता है।
इसे समायोजित करने के लिए, पांडा पॉइंटर्स को ऑब्जेक्ट में संग्रहीत करने के लिए ऑब्जेक्ट ndarrays का उपयोग करता है। इन ऑब्जेक्ट में वास्तविक स्ट्रिंग मान होते हैं। परिणामस्वरूप, ऑब्जेक्ट ndarrays का आकार अनिश्चित होता है और उन्हें "ऑब्जेक्ट" डेटा प्रकार के रूप में दर्शाया जाता है।
उदाहरण:
चार 64-बिट वाले एक int64 सरणी पर विचार करें पूर्णांक और एक ऑब्जेक्ट सरणी जिसमें तीन स्ट्रिंग ऑब्जेक्ट के लिए चार पॉइंटर्स होते हैं:
int64 array: | 1 | 2 | 3 | 4 | object array: | pointer to "hello" | pointer to "world" | pointer to "!" | Visualization: --------- ----------- | int64 | object | |--------- -----------| | 1 | hello | | 2 | world | | 3 | ! | | 4 | null | --------- -----------
इस प्रतिनिधित्व में, int64 सरणी एक निश्चित मात्रा में स्थान घेरती है, जिसमें प्रत्येक तत्व 8 बाइट्स होता है। दूसरी ओर, ऑब्जेक्ट ऐरे विभिन्न आकारों की वस्तुओं के लिए पॉइंटर्स संग्रहीत करता है, इसलिए "ऑब्जेक्ट" डेटा प्रकार।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3