بايثون-28: تحليل البيانات بلغة بايثون المشروع الاول-1


السلام عليكم ورحمة الله وبركاته

اخوتي الكرام اخواتي الفاضلات

بعد ان شرحنا اساسيات لغة بايثون والكثير من الامثلة عن البرامج البسيطة باستخدامها وبدأنا بشرح مكتبات بايثون لتحليل البيانات في الدروس الماضية وردتنا عدة طلبات للتركيز اكثر على الامثلة والمشاريع الحقيقية لتحليل البيانات بلغة بايثون (وهو جزء من علم البيانات وتطبيقاته) وقد ارتأينا ان نستغل ما تراكم لدينا من معرفة في الدروس السابقة لنبدأ على بركة الله المشروع الاول لتحليل البيانات فلنبدأ بلا اي تأخير:

كالعادة وفي بداية كل درس من هذا الكورس احب التذكير بأهمية الاطلاع المتسلسل على محتويات الكورس لضمان فهم المادة المشروحة اي انه يفضل ان يتم الاطلاع على كل الدروس السابقة قبل الاطلاع على هذا الدرس.

بعد ان قمنا بشرح عدة مكتبات (ولو بشكل مبسط) لتحليل البيانات بلغة بايثون يجدر بالذكر ان هناك مكتبات اخرى مهمة وضرورية لأستيراد وعرض ومعالجة وتحليل البيانات والخروج بأستنتاجات حولها (وهذا هو جوهر علم البيانات اي تحويل البيانات الى استنتاجات وقيمة للشركة او المؤسسة) وفي ادناه قائمة بأهم المكتبات التي تستخدم لهذا الغرض:

1- مكتبة (NumPy) وقد تحدثنا عنها في الدروس السابقة.

2- مكتبة (SciPy) وقد ذكرنا اساسياتها في الدروس السابقة ايضاً.

3- مكتبة (Matplotlib) وتستخدم لأغراض رسم البيانات بطرق متعددة بدءاً من الهستوغرام (histogram) الى الرسم البياني بخط واحد الى الرسومات الحرارية وهكذا. في حالة اردنا تضمين الرسومات في نفس بيئة الاناكوندا (التي تحدثنا عنها سابقاً وقلنا انها البيئة التي سنعتمدها في الشرح) فيمكن عمل ذلك بكتابة الايعاز التالي قبل البدء بالرسم:

ipython notebook –pylab = inline

واما ان لم نستخدم هذا الايعاز فبمجرد تنفيذ اي ايعاز رسم من هذه المكتبة فستتحول بيئة الاناكوندا الى بيئة مشابهة للماتلاب وعندها قد تختلف بعض الواجهات التي تعودنا عليها ولكنها قد تصبح اكثر ملائمة للمحترفين بأستخدام الماتلاب وهنا يبقى الخيار لكم في عمل ما يناسبكم. يجدر بالاشارة اننا نستطيع استخدام المحرر العلمي (Latex) لأضافة المعادلات المعقدة الى بيئة اناكوندا لرسمها بأستخدام هذه المكتبة.

4- مكتبة (Pandas): وتستخدم بشكل رئيسي لمعالجة والتلاعب بالبيانات المهيكلة (المرتبة في جداول) وسنقوم بأستخدامها بكثرة لتهيأة وتحضير البيانات للخطوات اللاحقة.

5- مكتبة (Scikit Learn): والتي تختص بأدوات تعليم الماكنة (machine learning) بلغة بايثون وقد تم بنائها بأستخدام المكتبات الثلاثة الاولى في هذه القائمة. وتحتوي الكثير من الادوات للتعامل مع البيانات مقل التصنيف والتجميع وتقليل الابعاد وغيرها من خطوات معالجة البيانات.

6- مكتبة (Statmodels) للنمذجة الاحصائية.

7- مكتبة (Seaborn): لعرض البيانات الاحصائية. وقد تم بنائها بأستخدام المكتبة الرابعة اعلاه.

8- مكتبة (Bokeh): لأنشاء الرسومات التفاعلية ولوحات التحكم وتطبيقات البيانات للمتصفحات الحديثة حيث انها تمكن المستخدم من انشاء رسومات دقيقة بصيغة (D3.js) ويمكنها ايضاً التعامل بسرعة كبيرة مع كميات هائلة من البيانات حيث انها توفر اداؤ تفاعلي عالي (high-performance interactivity).

9- مكتبة (Blaze): لزيادة فعالية مكتبة (numpy) ومكتبة (pandas) للتعامل مع البيانات الموزعة وبيانات الزمن الحقيقي حيث انها تسمح بالوصول الى البيانات من عدة مصادر ومنها قواعد البيانات مثل (Bcloz, MongoDB, SQLAlchemy, Apache, Spark, PyTables, …etc.) وتعمل بالتعاون مع بقية المكتبات لأنشاء لوحات تحكم وعروض دقيقة للبيانات.

10- مكتبة (Scrapy): للتحليل الشبكي (web crawling) حيث انها تعتبر اطار عمل فعال للحصول على انماط معينة من البيانات ويمكنها ان تبدأ من الصفحة الرئيسية لأي موقع انترنت للبحث عن بيانات معينة بداخل ذلك الموقع ولكل صفحاته.

11- مكتبة (SymPy): للحسابات الرمزية وتحتوي ادوات كثيرة تبدأ من الرياضيات البسيطة الى الجبر الى الرياضيات المتقطعة والفيزياء الكمية وايضاً يمكن استخدامها مع محرر النصوص العلمي (Latex).

12- مكتبة (Requests): للوصول الى الويب وتعمل بشكل مشابه لمكتبة بايثون القياسية (urllib2) ولكنها اسهل كثيراً من ناحية البرمجة.

من المكتبات الاخرى التي تتوفر للمبرمجين بلغة بايثون اليوم (والتي قد نحتاجها في بعض الامثلة والمشاريع) هي مكتبة (os) لنظم التشغيل والتعامل مع الملفات ومكتبة (networkx) و (igraph) للتعامل مع البيانات الرسومية ومكتبة (regular expressions) لأيجاد صيغ معينة في البيانات بأستخدام التعابير القياسية التي تحدثنا عنها في الدروس السابقة واخيراً مكتبة (BeautifulSoup) المشابهة لمكتبة (Scrapy) ولكنها تعمل للحصول على البيانات بصيغة معينة من صفحة ويب واحدة بدلاً من موقع كامل.

والان بعد ان عرفنا اساسيات لغة بايثون ومكتباتها القياسية لتحليل البيانات نصل الى المرحلة الاهم وهي تحليل البيانات بأستخدام هذه الادوات ويتم ذلك عموماً بثلاث مراحل:

1- استكشاف البيانات (Data Exploration): ويتم ذلك عادة بعرض البيانات بصيغ وطرق مختلفة لمحاولة فهمها قبل البدء بالتلاعب بها وتحليلها.

2- تنظيف البيانات (Data Cleaning and preparation): ويتم خلال هذه المرحلة تنظيف البيانات لتهيئتها للتحليل الاحصائي.

3- النمذجة التنبؤية (Predictive Modeling): وهنا نقوم بأستخدام الخوارزميات الحقيقية لتحليل البيانات والحصول على استنتاجات وتنبؤات مستقبلية منها. (هنا يبدأ المرح الحقيقي 🙂 )

استكشاف البيانات بأستخدام مكتبة (Pandas):

قبل البدء بأستكشاف البيانات لا بد من معرفة بعض الاساسيات عن مكتبة (Pandas) وكما يلي:

هناك مفهومين اساسيين في مكتبة (Pandas) للتعامل مع البيانات وهما السلسلة (series) وهيكل البيانات (dataframe) حيث تعرف السلسلة على انها صف او عمود من البيانات احادي البعد (1D) ومفهرس بحيث ان كل صف او كل عمود يحتوي عنصر واحد فقط. اما هيكل البيانات فهو يشبه ملف الاكسل (Excel) وهو بصورة عامة بيانات متعددة الابعاد تتكون من صفوف (rows) واعمدة (columns) ويمكن الوصول الى اي عنصر من خلال فهرس الصف وفهرس العمود (row index and column index).

ولمزيد من المعلومات عن هذه المكتبة يمكن زيارة الرابط التالي الذي يشرح اهم ادواتها للمهتمين (انقر هنا).

والان لتنزيل البيانات التي سنعمل عليها يمكن ببساطة النقر على الرابط التالي (انقر هنا لتنزيل البيانات)

حيث من المفترض ان تجدوا الملفات التالية في المجلد المضغوط في الرابط اعلاه:

train.csv

وهو ملف البيانات المستخدمة للتدريب وامتداده (.csv) مختصر لعبارة

comma separated values او القيم المفصولة بفارزة وهو امتداد شائع جداً في عالم البيانات

test.csv

وهو الملف المستخدم لأختبار النموذج الذي سنقوم بتطويره في مشروعنا

sample submission.csv

وهو مثال لشكل الملف الذي يفترض ان نقوم بتسليمه في نهاية المشروع

والسبب وراء وجود ملف مثال للتسليم هو ان مشروعنا هذا هو جزء من مسابقة عالمية لتحليل البيانات ويمكن الوصول اليه من الرابط التالي:

Analytics Vidhya Loan Prediction Practice Problem

حيث يمكن الدخول للموقع اعلاه والتسجيل فيه للأشتراك في المسابقة وربما نيل الجوائز في حالة الفوز 🙂

وبعد التسجيل في الموقع يمكن مشاهدة النافذة التالية والخاص بمشروعنا:

data

والان وبعد ان قمنا بتنزيل ملفات المشروع والتعرف على الموقع الذي نستطيع من خلاله الحصول على البيانات لهذا المشروع (والمشاريع المستقبلية ان شاء الله) نترككم برعاية الله وحفظه ونكمل معكم ان شاء الله في الدرس القادم حيث سنبدأ الخطوة الاولى في مشروعنا وهي استكشاف البيانات

ملاحظة اخيرة: اتمنى من الاخوة والاخوات المهتمين بالموضوع والراغبين بأكمال الكورس معنا ان يبلغونا ذلك في التعليقات لنعرف كم متابع معنا وكم مهتم فعلاً بأكمال هذا الكورس.

تحياتي للجميع وانتظرونا في الدروس القادمة ان شاء الله.

اخوكم

مصطفى صادق

هذا الدرس والدروس القادمة هي ترجمة (بتصرف وتبسيط) للموضوع في الرابط التالي

انقر هنا

3 Comments

اترك رد

إملأ الحقول أدناه بالمعلومات المناسبة أو إضغط على إحدى الأيقونات لتسجيل الدخول:

شعار وردبرس.كوم

أنت تعلق بإستخدام حساب WordPress.com. تسجيل خروج   /  تغيير )

Google+ photo

أنت تعلق بإستخدام حساب Google+. تسجيل خروج   /  تغيير )

صورة تويتر

أنت تعلق بإستخدام حساب Twitter. تسجيل خروج   /  تغيير )

Facebook photo

أنت تعلق بإستخدام حساب Facebook. تسجيل خروج   /  تغيير )

w

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.