تحليل البياناتعلم البيانات

لغات تحليل البيانات

نظرة شاملة

دائماً ما يرد هذا السؤال: ما هي أفضل لغة برمجة؟ عند البشر نزعة إلى التصنيف والاختزال نجدها في الكثير من اختياراتنا في الحياة اليومية، ما هو أفضل جوال؟ ما هي أفضل سيارة؟ ما هو أفضل تخصص، أو جامعة؟ … ولكن هناك مشكلة تكمن في السؤال نفسه. ليس هناك شيء يصلح لكل شخص أو زمان أو مكان، فالأسلوب المناسب للسؤال يفترض أن يحتوي ما يدل على سياق الحاجة. وحيث أننا مهتمون بتحليل ومعالجة البيانات، اسمحوا لي بتغيير السؤال إلى: ما هي أفضل لغة برمجة لتحليل البيانات؟ وسأطرح سؤالين إضافيين سيحددان خصائص اللغات المناسبة لتحليل البيانات:

كيف يتم التعامل مع البيانات؟

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

كيف تتم عملية تحليل البيانات؟

هل عملت في السابق على تحليل بيانات؟ في الغالب عملية تحليل البيانات تكون استكشافية (على الأقل قبل أتمتة العملية)، حيث تحتاج أن ترى النتائج بعد كل مجموعة من الأوامر، وبناءاً عليها تقرر ما هي الخطوة التالية. هذا يختلف عن الطريقة المعتادة في كتابة البرنامج، بحيث تكون تعرف بالضبط ما تحتاجه، ثم تكتبه كاملاً وتقوم بعمل compile له. تحليل البيانات ستكون فعاليته أكبر إذا استخدمت لغة تفاعلية، أو ما يطلق عليها لغة سكربت (Scripting language).


بعد أن عرفنا خصائص لغات تحليل البيانات، سأستعرض هنا بعض اللغات التي لها علاقة بذلك، سواء كانت مباشرة أم من بعيد. الهدف معرفة مزايا كل لغة بما يتعلق بمهمة تحليل البيانات. هناك العديد من لغات البرمجة تختلف نقاط قوتها، فبعضها ممتازة لتحليل البيانات تحديداً، وبعضها لتصميم مواقع الانترنت وأخرى للسرعة. بعضها مجاني وبعضها برسوم. سيكون الاستعراض موضوعياً قدر الإمكان، وبعد ذلك أناقش كيف يمكنك اختيار اللغة المناسبة لك.

ملاحظة: حاولت قدر الاستطاعة أن أكون دقيقاً، ولكن قد تتغير هذه اللغات أو مجتمعاتها مع الوقت، أو يضاف إليها خصائص أخرى لم يتم ذكرها.

أولاً: لغات تحليل البيانات

كما ذكرت، فإن لغات تحليل البيانات المفضلة تمتاز بتعاملها الجيد مع المصفوفات، وبأنها تفاعلية. في التالي أشهر اللغات التي تمتاز لهذا.

ماتلاب (Matlab) و أوكتيف (Octave)

ماتلاب، أحد منتجات شركة MathWorks، مشتق من كلمتي (matrix laboratory)، معمل المصفوفات. تكمن قوة ماتلاب (كما هو واضح من اسمه) بقدرته على التعامل مع المصفوفات بسهولة كبيرة، لذا فهو خيار مفضل للعديد من المجالات، وبخاصة العلمية والأكاديمية التي تحتاج للتعامل معها، ومن ضمنها تحليل البيانات. ويمكن عرض البيانات وتصويرها بشكل جيد باستخدام ماتلاب.

ماتلاب عبارة عن بيئة برمجية سهلة التعلم، وتكمن قوتها في المكتبات الإضافية (toolboxes) التي يمكن شراؤها، والتي تتيح لك المزيد من المميزات. تتيح لك هذه المكتبات التعامل مع وقراءة البيانات من مصادر مختلفة، التعامل مع الإشارات والصور، التحاليل المالية، خوارزميات تعلم الآلة، وغيرها.

ما يعيب ماتلاب أنه مغلق المصدر وتكلفة تراخيصه عالية جداً (تحتاج كذلك ترخيص لكل toolbox)، خصوصاً خارج الإطار الأكاديمي. يوجد خيار آخر، وهو أوكتيف (Octave)، بيئة مفتوحة المصدر لنفس لغة ماتلاب، ولكن مشكلته أنه يفتقد لأهم مزايا ماتلاب، وهي مكتباته القوية. كما أن مجتمعه غير نشط مثل بعض اللغات التي سأذكرها. العيب الآخر لماتلاب هو محدودية خيارات النشر (deployment) للأنظمة، كعمل موقع انترنت أو تطبيق ثابت مستقل.

 آر (R)

يطلق على لغة آر “لغة للإحصائيين، بنيت بواسطة الإحصائيون”. وقد طورت عام 1997م من لغة S كخيار بديل عن البرمجيات المكلفة جداً، مثل ماتلاب وساس (SAS)، وهي الآن مفتوحة المصدر ومدعومة من R Foundation for Statistical Computing.

بالرغم من أن بداية لغة آر كانت موجهة للإحصائيين، إلا أنها لاقت القبول من مجتمعات متعددة جامعها المشترك معالجة وتحليل البيانات. وساعد على قبول اللغة وانشارها تطوير مكتبات عديدة تغطي ما يحتاج إلىه كل من هذه المجتمعات. ويتم استخدامها حتى في المؤسسات والشركات الضخمة لتحليل البيانات وتصويرها بطريقة جذابة وجميلة. هناك العديد من المكتبات القوية مفتوحة المصدر التي يمكن استخدامها مجاناً. تحظى لغة آر بمجتمع ممتاز ونشط.

تعلم آر ليس صعباً جداً، ولكنه ليس بسهولة ماتلاب أو بايثون. إضافة إلى أنها تعاني من البطء في بعض المكتبات خصوصاً عند معالجة بيانات كبيرة. كما أن الهدف الأساسي من اللغة تحليل البيانات فقط، فهي ليست لغة عامة مثل بايثون، فلن يكون لديك الحرية لعمل التطبيقات المتنوعة (للحاسب أو الانترنت).

بايثون (Python)

تم تطوير لغة بايثون في عام 1991م بواسطة Guido van Rossum، وهي لغة برمجة عامة تمتاز بسهولة تعلمها، مما أسهم في سرعة انتشارها وتبنيها في العديد من الجهات. ولسهولتها فإن بعض المدارس أضافوها منهجاً لتعليم الطلاب مبادئ البرمجة. كما أنه يتم استخدامها من قبل العديد من الشركات الكبيرة، فأجزاء من مواقع مشهورة تم تطويرها باستخدام بايثون، مثل Youtube، Google، Dropbox، و Reddit.

في الأساس تعتبر بايثون لغة عادية، ولكن بعد تطوير عدد من المكتبات البرمجية لها اكتسبت شعبية كبيرة بين العديد من المجتمعات، ومن ضمنها تحليل البيانات وتعلم الآلة. من أهم المكتبات في هذا المجال، مكتبة NumPy التي تتيح لبايثون التعامل مع المصفوفات، وهي مشابهة بشكل كبير لطريقة ماتلاب مما جعل الانتقال منه إلى بايثون سهلاً. وكذلك هناك مكتبة SciPy للرياضيات والعلوم والهندسة، ومكتبة Matplotlib للرسوم البيانية وتصوير البيانات، وهي كذلك مشابهة جداً لأسلوب ماتلاب. وهناك العديد من المكتبات الأخرى، وكثير منها مبنية على السابق ذكرها مثل مكتبة Pandas لمعالجة البيانات. ساعد على انتشار لغة بايثون وتبنيها مجتمعها القوي والنشط. لأن بايثون لغة عامة، فيمكن تطوير البرامج ومواقع الانترنت مباشرة من خلالها.

من عيوب بايثون، كغيرها من لغات السكريبت مثل ماتلاب وآر، بطئها النسبي مقارنة بغيرها من اللغات. هناك حلول لذلك مثل استخدام Cython أو Pypy وغيرها. كما أن اللغة dynamically typed، مما يعني أنه يجب على المبرمج أن ينتبه جيداً لأنواع المتغيرات أثناء التطوير. هذا يؤثر سلباً على قابلية إعادة الاستخدام (Re-usability)، مما يجعل تطوير الأنظمة الكبيرة مفضلاً باستخدام لغات أكثر صرامة مثل جافا.

أخرى

هناك بعض اللغات الأخرى ضمن بيئات للتعامل مع البيانات، لم يتم ذكرها لغلائها وقلة استخدامها مقارنة بما تم ذكره، مثل IBM SPSS Statistics، و SAS.

ثانياً: لغات مهمة

بعض اللغات ليست هي الأنسب لتحليل ومعالجة البيانات، ولكنها تستخدم في بناء التطبيقات (غالباً الكبيرة)، أو في تحليل البيانات الضخمة، أو في عرض البيانات. سأذكر هنا أبرزها.

جافا (Java)

قد لا تكون لغة جافا الخيار الأمثل لتحليل البيانات، ولكن إذا أردت الانتقال من مرحلة الاستكشاف واختبار الخوارزميات إلى بناء الأنظمة (وبخاصة الكبيرة) فستكون خيار جيد. تمتاز جافا بانتشارها وقبولها لدى العديد من الجهات، وبسهولة إعادة استخدام البرامج المكتوبة بواستطتها. كما أنها لغة صارمة جداً وتتبع منهجية البرمجة الكائناتية (object oriented). من الأمثلة لأنظمة تحليل البيانات التي بنيت باستخدام جافا منصة هدوب (Hadoop) لتخزين ومعالجة وتحليل البيانات الضخمة.

سكالا (Scala)

تشبه لغة سكالا جافا كثيراً، كما تعمل على نفس Java Virtual Machine بعد تحويلها إلى bytecode. وتمتاز بإتاحتها الفرصة بالبرمجة الكائناتية (object oriented) أو الوظيفية (functional). سكالا هي اللغة الأساسية لبرمجة سبارك (Spark) لتحليل البيانات الضخمة على منصة هدوب (هناك أيضاً خيار لاستخدام بايثون). تعلم اللغة أسهل من جافا ولكن أصعب من بايثون.

جافا سكربت (Javascript)

جافا سكربت تستخدم أساساً لتطوير مواقع وبرمجيات الانترنت. وكذلك فهي تستخدم لتصوير البيانات بطريقة تفاعلية جميلة. من أشهر المكتبات لتصوير البيانات مكتبة D3، وهذه الصفحة تشرح 12 مكتبة لتصوير البيانات.

C++\C

لغة سي ليس لها منازع في مجال السرعة (إلّا لغة أسمبلي!). في التطبيقات التي تحتاج سرعة، قد تحتاج التضحية بسهولة البرمجة، وهنا قد يكون خيارك لغة سي. ولكن لا يعني ذلك أن استخدامها محدود جداً. على سبيل المثال، أحد أشهر مكتبات معالجة الصور، openCV، مكتوبة بلغة سي، ولكن يمكن استخدامها بواسطة لغات أخرى مثل بايثون.

ثالثاً: لغات في بداياتها

جوليا (Julia)

تم تطوير لغة جوليا عام 2009 كلغة عامة (مثل بايثون) سهلة التعلم والاستخدام. يمكن استخدام جوليا كلغة سكربت أو للتطوير، وهي أسرع من لغتي آر وبايثون. مشكلة اللغة قلة المجتمعات التي تستخدمها مقارنة مثلاً ببايثون وآر وماتلاب، كما أن مكتباتها المتعلقة بتحليل ومعالجة البيانات تحتاج لمزيد من التطوير.

قو (GO)

قامت قووقل بتطوير وإطلاق لغة قو عام 2007م، وهي لغة تأخذ من لغة سي في طريقة الكتابة، وبايثون في السهولة والاختصار. اللغة ليست سكربت، ولكن compiled، وهي مفتوحة المصدر. هناك بعض المكتبات لتحليل البيانات، ولكن مثل لغة جوليا تحتاج لمزيد من التطوير، كما أن المجتمعات المتبنية لها لا تزال محدودة.

رابعاً: أخرى

هناك بعض اللغات التي يجدر التنويه بها. هذه اللغات لا تعتبر لغات برمجة، ولكنها مفيدة للتعامل مع البيانات. من أشهر هذه اللغات:

SQL: للتحكم وإنشاء قواعد البيانات العلائقية (relational databases)، وإرسال الاستعلامات. تستخدم في منتجات العديد من الشركات، مثل MySQL، Oracle، و Microsoft.

Hive: لغة هايف شبيهة بـ SQL، وهي لـ Apache Hive لإدارة البيانات والإستعلام، أحد مكونات منصة هدوب (Hadoop).

Pig Latin: اللغة التي تتعامل مع Apache Pig لتحليل البيانات الضخمة، كذلك أحد مكونات منصة هدوب.

كيف تختار لغة البرمجة؟

لا توجد إجابة واحدة، ويعتمد ذلك على حاجتك وطبيعة عملك. فإذا كنت تعمل في مرحلة استكشاف البيانات، أو تطوير الخوارزميات واختبارها فلغات تحليل البيانات التي ذكرتها مناسبة لك. قد يكون الأفضل للأفراد والمؤسسات الصغيرة العمل على بايثون أو آر لأنهما مجانيان، ويعتمد الاختيار بينهما على توفر المكتبات التي تحتاجها والمجتمع الذي تريده. فمثلاً الإحصائيون يفضلون آر، والمبرمجون يفضلون بايثون. بعض المؤسسات والشركات لها متطلبات خاصة قد تستلزم العمل على المنصات المدفوعة مثل ماتلاب أو SPSS.

إذا كنت تود العمل على البيانات الضخمة، فقد تكون جافا مناسبة إذا كنت تعمل على منصات هدوب، أو سكالا إذا كنت ستعمل على سبارك (Spark). وكذلك تستطيع العمل باستخدام بايثون عن طريق Hadoop Streaming، كما توجد مكتبة لبايثون لاستخدام سبارك. جافا مناسبة أيضاً لتطوير البرامج الكبيرة غير منصة هدوب.

هل ستنشر البرنامج (deploy)؟ قد لا تكون آر أو اللغات المدفوعة مثل ماتلاب وSPSS الأفضل لمحدودية الخيارات، حيث أنها ليست لغات عامة مثل جافا وبايثون. وإذا كانت السرعة هي أهم المتطلبات عندك، فقد تكون لغة سي خياراً ممتازاً.

هذه بعض الأفكار العامة حول اختيار لغة برمجة لتحليل البيانات، وهي لا تعدو كونها مقترحات تخضع للتفضيلات الشخصية. و قد يتأثر خيارك لأحد اللغات بعوامل شخصية، كدراسة أحدها سابقاً (مثلاً في الجامعة).

آمل أن تكون قد استفدت من هذا الموضوع لتكون فكرة عن اللغات الموجودة في الساحة. وأود أن أسمع منكم: ما هي اللغة/اللغات التي تستخدمها لتحليل البيانات؟ ولماذا اخترتها؟

اظهر المزيد

فارس القنيعير

‏‏‏‏‏‏‏‏‏‏‏‏‏مختص بالذكاء الاصطناعي، تعلم الآلة ورؤية الحاسب. مهتم بتحليل ومعالجة البيانات بشكل عام. ضمن خبراء جووجل في تعلم الآلة (ML GDE).

‫28 تعليقات

  1. بالنسبة لي، كنت أستخدم ماتلاب، ثم انتقلت إلى بايثون ومرتاح معها الآن (افتقدت ماتلاب في معالجة الصور). كنت ممتاز في الجافا، ولكن من زمان ما برمجت باستخدامها، تحتاج نفض غبار 🙂
    استخداماتي: قراءة، وتجهيز، وتحليل، وتصوير البيانات + تعلم الآلة + معالجة الصور.

    1. السلام عليكم للتكرم ممكن تفيدني في شيء معين بخصوص تحليل البيانات … ولكم جزيل الشكر

  2. جزاك الله كل الخير علي هذا المقال الذي وضح لي الصوره العامه للاختيار اللغه حيث اني دراستي الجامعيه في تخصص الرياضيات و اتعلم الان لغه بايثون و لغه R وشغفي تحليل البيانات
    شكرا

  3. شكرا د.فارس على هذا المقال الذي يحتوي العديد من الأشياء الجديدة بالنسبة لي.
    أعتقد أن لغة بايثون تتربع على عرش اللغات في مجال علم البيانات في وقتنا الحاضر بحكم مكتباتها الغنية والسهلة الاستخدام، ولكن بالطبع لها وعليها ولا شئ كامل.
    سياق العمل وظروفه، طبيعة البيانات وحجمها، كل ذلك يلعب دورا مهما في تحديد الأدوات والتقنيات اللازمة في العمل.

    تحياتي العطرة.

    1. عفواً، فعلاً بايثون تنمو بسرعة كما تشير الاستطلاعات السنوية للغات البرمجة لتحليل البيانات.

  4. المقال جميل ويعيد بعض الذكريات من بداياتي في البرمجة، أن الآن لا أستخدم سوى بايثون في تحليل البيانات، وأعرض النتائج والصور في ماتلاب، ولم أحب لغة قط بقدر ما أحببت لغة الجافا لكن قد أكل عليها الدهر وشرب في مجال تحليل البيانات ولم أعد استخدمها للأسف.

    شكرا د. فارس

  5. السلام عليكم ,,

    مقال ممتاز يوضح كثير من الجوانب
    كشخص مبتدئ في عالم البيانات كان البداية مع كورس للغة R بعدها اخذت كورس للبايثون
    عجبتني لغة البايثون بشكل اكبر خصوصا استخدامها اوسع واشمل .

    مدونة ممتازة جدا
    عساكم عالقوة

  6. موضوع مفيد جداا بارك الله فيكم وأتمني المزيد من المقالات العلميةإن شاء الله ويا سلام لو الاقي موضوع بيكلم عن افضل كتب تحليل البيانات
    من المرحلة الابتدائية الي مرحلة متقدم والعمل في هذا المجال او ممكن تقوموا بترشيح بعض الكورسات الاونلاين زي Coursera_edx_udacity
    واتمني اشوف مواضيع فيه تحليل إحصائي ومسائل متعددة وشكراً

  7. موضوع جداً مفيد خاصة للمبتدئين في مجال تحليل البيانات.
    بالنسبة لي استخدمت R وكان اختيار السوبرڤايزر لمشروع تخرجي،جداً مرنة وسهلة خاصة لمن اعتاد البرمجة فتخيل أن تكتب أمر واحد او دالة واحدة عوضاً عن ست أو سبع أسطر مثلاً بلغة جافا.
    و طرق عرض البيانات متعددة و يسيرة.
    حالياً بدأت باستخدام البايثون لتحليل البيانات.
    شاكرة لكم و مقدرة،

  8. جميلة هذه المدونة واصحابها اجمل
    لكن سؤالي الذي يحيرني هل لابد من دراسة مجال تحليل البيانات حتى استفيد منها ام يكفي ان استشير من هو مختص او ماذا احتاج للاستفادة من هذا العلم ،انا لا اريد التخصص فيه فقط احتاج لاستفادة منه فهل هناك طريقة لذلك .

    1. لا يحتاج أن تكون متخصصاً لتستفيد منه، يمكنك بنفسك إجراء بعض العمليات البسيطة باستخدام اكسل، ويمكنك استخدام بعض البرامج التي سهلت كثيراً من عملية تحليل البيانات. كما يمكنك استشارة أو توظيف مختص ليقوم بهذا ويقدم لك نتائج التحاليل على شكل تقارير أو لوحات معلومات.

  9. سؤال لو تكرمتم
    هل تحتاج دراسة تحليل البيانات إلى معلومات مسبقة في الإحصاء أم لا؟
    أي هل يمكن لمن لم يدرس الإحصاء أن يتعلمها بسهولة؟

      1. دراسة الاحصاء اشوفها سهلة وبسيطة ابدء ببرنامج الاحصاء الوصفى ( مبادئ الاحصاء) يوجد على اليوتيوب ومنصة رواق مساق /كورسات فيها …. ثم انتقل الى الاحصاء التحليلىالاستدالى … وهو الذى يخص تحليل البيانات.

        1. شكراً لك أخ حسام على الإجابة.
          الإحصاء الوصفي والاستدلالي كلاهما يستخدمان لتحليل البيانات.

    1. نعم، تحتاج للإحصاء، ولا يحتاج أن تتعمق فيه. هناك بعض الأمور الأساسية التي ستساعدك على فهم البيانات بشكل جيد. المفاهيم الأساسية للأحصاء ليست صعبة، ولكن كمثل غيرها من المواد قد تحتاج لوقت حتى تستوعب مصطلحاتها إذا كانت جديدة عليك. كل ما تحتاجه أن تكون جاداً وتدرسها لهدف التعلم والتطبيق.

      1. معنى هذا يا دكتور مادة الاحصاء ( الاحصاء الوصفى + الاحصاء التحليلى) التى تدرس فى كلية الاعمال بالجامعات السعودية تكفى؟؟ حيث درستها فى جامعة الملك عبد العزيز …. وقبل ذلك درستها فى الثانوية العامة بمصر ( نفس يلى بجامعة الملك عبد العزيز لكنه بتوسع شوى …. اظن هذا يكفينى ؟؟ من الاحصاء؟؟
        علاوة على دراسة مادة الاحصاء الحيوى ايضا خلال برنامج لدراسة المعلوماتية الصحية… ايكفى ذلك؟؟

        سؤالى : عن الجانب التقنى لمحلل البيانات…. اى الى مدى يحتاجه؟؟ اى لازم يكون دراسته فى تخصص تقنى مثل تخصصات علوم الحاسب والمعلومات؟؟؟

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

        1. إن شاء الله تكفي مادة الإحصاء، بشرط فهمها جيداً.
          لا يشترط أن يكون متخصص في الحاسب لكي تكون محلل بيانات. بعض محللي البيانات المبدعين جاءوا من تخصصات أخرى ودرسوا ما يحتاجون لتحليل البيانات. لاي يحتاج استخدام لغات البرمجة دائماً، ممكن اكسل أو بعض البرامج المتخصصة وهي كثيرة.
          قد يكون هناك مقال متقبلاً، عن طريقي أو غيري من الكتاب المبدعين.

  10. أستاذ فارس عندي استفسار ، إذا أردت التدرب وإكتساب خبرة في مجال تحليل البيانات هل ممكن أتدرب بالمركز عندكم ( أنا مقيمة ولست سعودية) وإذا كان مسموح التدرب ماهي الشروط ؟

    1. اخت امنه ابحثي في النت هناك كم هاىل من المعرفه علي شكل مقاطu يوتويوب وملفات pdf ولست مظطره للتدريب المدفوع اما ان كنت مصره على ذالك فانصحك بالتعلم عن بعد وهناك المئات من المواقع موجودة فقط ابحثي

  11. كيف ومن أين يمكن تعلم لغة البايصون او الآر ؟؟ وهل هتسفيدنى فى تحليل بيانات طبية للتعامل معها فى البرمجة ؟؟

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

زر الذهاب إلى الأعلى