"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > لماذا تظهر السلاسل في Pandas DataFrames ككائنات حتى بعد التحويل؟

لماذا تظهر السلاسل في Pandas DataFrames ككائنات حتى بعد التحويل؟

تم النشر بتاريخ 2024-11-08
تصفح:927

 Why do Strings in Pandas DataFrames Appear as Objects Even After Conversion?

لماذا يتم تخزين السلاسل في DataFrame ككائنات؟

على الرغم من تحويل أعمدة DataFrame التي تحتوي على سلاسل إلى نوع بيانات السلسلة، مكتبة Python's Pandas لا يزال بإمكانهم الإبلاغ عنها ككائنات. ينشأ هذا التناقض بسبب هياكل البيانات الأساسية لـ NumPy.

يستخدم NumPy المصفوفات ndarrays لتخزين صفائف البيانات، حيث يحتوي كل عنصر في ndarray على عدد ثابت من البايتات. بالنسبة للأعداد الصحيحة (int64) وأرقام الفاصلة العائمة (float64)، يشغل كل عنصر 8 بايت. ومع ذلك، فإن السلاسل لها أطوال متغيرة، مما يجعل من غير العملي تخزينها مباشرة في ndarray.

لاستيعاب هذا، يستخدم Pandas كائنات ndarrays لتخزين المؤشرات إلى الكائنات. تحتوي هذه الكائنات على قيم السلسلة الفعلية. ونتيجة لذلك، فإن كائنات ndarrays لها حجم غير محدد ويتم تمثيلها كنوع بيانات "الكائن".

مثال:

خذ بعين الاعتبار مصفوفة int64 تحتوي على أربعة 64 بت أعداد صحيحة ومصفوفة كائن تحتوي على أربعة مؤشرات إلى ثلاثة كائنات سلسلة:

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