Yehia Khoja | يحيى خوجه
Yehia Khoja | يحيى خوجه

@yakhoja

9 تغريدة 55 قراءة Apr 27, 2020
جاني ملف مشكلته ان البيانات فيه غير مرتبة
البيانات تم تجميعها من منصة الكترونية يتم ادخال المعلومات فيها من خلال الإجابة على استبيان فيه العديد من الأسئلة الاختيارية وبالتالي اصبحت البيانات غير مرتبة
لذلك كتبت برنامج بسيط باستخدام بايثون لتنقيح الملف اشرحه لكم هنا?
أولاً الرابط لمن يريد رؤية البرنامج فقط
#scrollTo=w6tR9DFLOPN5" target="_blank" rel="noopener" onclick="event.stopPropagation()">colab.research.google.com
للمعلومية: حملت الملفات على قوقل درايف واستخدمت قوقل كولاب المجانية لكتابة البرنامج
الملف الأصلي كان فيه مشكلتين اساسية
1) لم تحتوي جميع صفوف الجدول على نفس العدد من البيانات المدخلة (كما هو موضح في الصورة - اللون الاحمر يمثل الخلايا الفارغة)
2) كل سؤال واجابته كانت مدخلة في نفس الخلية بالجدول مثال
"Question: Language: Answer: English"
قبل البدأ بالبرمجة تفحصت ملف البيانات ووجدت الآتي
1) جميع الأسئلة تتبع نفس الصيغة
2) كل صف يحتوي على مجموعة جزئية من الأسئلة المطروحة في الاستبيان
3) كل البيانات المدخلة في الخلايا تستخدم الرمز ":" للفصل بين المعلومات المدخلة في نفس الخلية
وهذا ساعدني كثيراً قبل البرمجة
الفكرة الأساسية للبرنامج
1) استخراج البيانات من كل صف وحفظها في قاموس (dictionary) في لغة بايثون بحيث يكون كل سؤال هو مفتاح بالقاموس وكل اجابة هي قيمة المفتاح
2) ملأ اي فراغات ناقصة باستخدام العبارة "N/A" كقيمة لأي سؤال لم تتم الاجابة عنه في الاستبيان
قمت بتقسيم البرنامج الى 3 دوال رئيسية
1) دالة تقوم بتحميل البيانات من ملف CSV
2) دالة تقوم بعملية تنقيح البيانات
3) دالة تقوم بكتابة البيانات المنقحة في ملف CSV جديد
ساقوم بشرح عمليتي التنقيح وكتابة البيانات في الملف الجديد
لتنقيح البيانات استخدمت
1) عملية for-loop للتردد على كل صف في الجدول و for-loop ثاني للتردد على كل خلية تحتوي على البيانات في الصف
2) قائمة clean_data لحفظ كل صف تم تنقيحه
3) قاموس row_dict لحفظ أزواج المفتاح والقيمة لكل معلومة بكل صف
4) جميع المفاتيح كأسماء أعمدة الجدول الجديد
لحفظ البيانات المنقحة في ملف CSV جديد استخدمت
1) مكتبة csv لبياثون
2) فتحت ملف جديد وكتبت أسماء الأعمدة اولاً
3) عملية for-loop للتردد على كل صف في البيانات المنقحة
4) عملية for-loop للتردد على كل سؤال والتأكد ان توفرت له اجابة وإلا أدخلت "N/A" كإجابة
5) كتابة الصف من المتغير row
من الأشياء الجميلة في البرمجة انها توفر لك مجموعة أدوات تقدر تستخدمها لبناء حلول لمشاكل تواجهها
اتمنى ان يكون الشرح افادكم وأن تجدون الفائدة منه
وأسأل الله لنا ولكم التوفيق دائماً ?

جاري تحميل الاقتراحات...