قراءة مجموعات بيانات R من بايثون.
توفر الحزمة rdata طريقة خفيفة لاستيراد مجموعات بيانات/كائنات R المخزنة بتنسيقات ".rda" و".rds" إلى Python. مزاياها الرئيسية هي:
إنه تطبيق Python خالص، دون أي تبعيات على لغة R أو المكتبات ذات الصلة. وبالتالي، يمكن استخدامه في أي مكان يتم فيه دعم لغة Python، بما في ذلك الويب باستخدام Pyodide.
تحاول دعم جميع كائنات R التي يمكن ترجمتها بشكل مفيد. على عكس الحلول الأخرى، لا يقتصر الأمر على استيراد إطارات البيانات أو البيانات ذات بنية معينة.
فهو يسمح للمستخدمين بتخصيص تحويل فئات R إلى فئات Python بسهولة. هل تستخدم بياناتك فئات R مخصصة؟ لا تقلق بعد الآن، لأنه من الممكن تحديد تحويلات مخصصة لفئات بايثون التي تختارها.
لديها ترخيص متساهل (MIT). على عكس الحزم الأخرى التي تعتمد على مكتبات R وبالتالي تحتاج إلى الالتزام بترخيص GPL، يمكنك استخدام rdata كاعتماد على MIT أو BSD أو حتى المشاريع مغلقة المصدر.
rdata موجود على PyPi ويمكن تثبيته باستخدام pip
:
نقطة تثبيت rdata
وهو متاح أيضًا لـ conda
باستخدام قناة conda-forge
:
conda install -c conda-forge rdata
يمكن تثبيت الإصدار الحالي من فرع التطوير كـ
تثبيت النقطة git+https://github.com/vnmabus/rdata.git@develop
توثيق rdata موجود في ReadTheDocs.
تتوفر أمثلة الاستخدام في ReadTheDocs.
الطريقة الشائعة لقراءة مجموعة بيانات R هي الطريقة التالية:
استيراد rdataconverted = rdata.read_rda (rdata.TESTDATA_PATH / "test_vector.rda") تم تحويله
مما يؤدي إلى
{'test_vector': المصفوفة([1., 2., 3.])}
تحت الغطاء، هذا يعادل الكود التالي:
استيراد rdataparsed = rdata.parser.parse_file (rdata.TESTDATA_PATH / "test_vector.rda")converted = rdata.conversion.convert(parsed)converted
ويتكون ذلك من خطوتين:
أولاً، يتم تحليل الملف باستخدام الدالة rdata.parser.parse_file. يوفر هذا وصفًا حرفيًا لمحتويات الملف كتسلسل هرمي لكائنات Python التي تمثل كائنات R الأساسية. هذه الخطوة لا لبس فيها وهي نفسها دائمًا.
بعد ذلك، يجب تحويل كل كائن إلى كائن Python المناسب. في هذه الخطوة، هناك العديد من الاختيارات التي يعتبر فيها نوع Python هو الأكثر ملاءمة للتحويل لكائن R معين. وبالتالي، فإننا نقدم روتين rdata.conversion.convert الافتراضي، الذي يحاول تحديد كائنات Python التي تحافظ على معظم المعلومات الخاصة بكائن R الأصلي. بالنسبة لفئات R المخصصة، من الممكن أيضًا تحديد إجراءات التحويل إلى كائنات Python.
يقوم روتين التحويل الأساسي فقط بإنشاء كائن SimpleConverter ويستدعي أسلوب التحويل الخاص به. يتم تمرير جميع وسائط التحويل مباشرةً إلى طريقة تهيئة SimpleConverter.
من الممكن، على الرغم من أنه ليس تافهًا، إنشاء كائن محول مخصص لتغيير الطريقة التي يتم بها تحويل كائنات R الأساسية إلى كائنات Python. ومع ذلك، هناك موقف أكثر شيوعًا وهو عدم رغبة المرء في تغيير كيفية تحويل كائنات R الأساسية، ولكنه يريد بدلاً من ذلك توفير تحويلات لفئات R محددة. يمكن القيام بذلك عن طريق تمرير قاموس إلى طريقة تهيئة SimpleConverter، والذي يحتوي على أسماء فئات R كمفاتيح وكقيم، قابلة للاستدعاء التي تحول كائن R من تلك الفئة إلى كائن Python. بشكل افتراضي، القاموس المستخدم هو DEFAULT_CLASS_MAP، والذي يمكنه تحويل فئات R شائعة الاستخدام مثل data.frame وfactor.
على سبيل المثال، إليك كيفية تنفيذ روتين تحويل فئة العامل إلى كائنات بايت، بدلاً من التحويل الافتراضي إلى كائنات Pandas الفئوية:
import rdatadef Factor_constructor(obj, attrs): value = [bytes(attrs['levels'][i - 1], 'utf8') if i >= 0 else No for i in obj] return valuenew_dict = { **rdata. تحويل.DEFAULT_CLASS_MAP، "عامل": عامل_constructor}تحويل = rdata.read_rda( rdata.TESTDATA_PATH / "test_dataframe.rda"، buildor_dict=new_dict، ) تم تحويلها
والذي له النتيجة التالية:
{'test_dataframe': قيمة الفئة 1 ب'1 2 ب ب 2 3 ب ب 3}
يمكن العثور على أمثلة إضافية توضح وظائف هذه الحزمة في وثائق ReadTheDocs.