أنواع البيانات للمسوقين: الأرقام والسلاسل والمنطقية
نشرت: 2017-08-10ملاحظة: هذه المدونة هي الثالثة في سلسلة كتبها محلل الويب الأب ، Adrian Palacios ، وهي مصممة لتزويد المسوقين بالمعلومات والتعليمات المطلوبة لتثبيت لغة البرمجة ، Python. في حالة فاتتك ، يشرح المنشور الأول لـ Adrian لماذا يجب على المسوقين التفكير في القيام بذلك في المقام الأول ويشرح المنشور الثاني كيفية تثبيت Python.
عندما بدأت في تعلم كيفية البرمجة ، واجهت الكثير من المتاعب مع مفهوم "أنواع البيانات". لقد كان دائمًا أحد الموضوعات الأولى التي تمت مناقشتها ، ولكنه أيضًا أحد أكثر الموضوعات مجردة. بدافع الإحباط من عدم الفهم ، عادةً ما أتخطى أي مناقشة لأنواع البيانات وأبرر ذلك من خلال إخبار نفسي ، "ما الذي يهمهم حتى؟" ولكن بعد بضع سنوات من جعل البرمجة جزءًا من عملي اليومي ، بدأت أنواع البيانات (ببطء) تصبح منطقية.
ما هي أنواع البيانات؟
أنواع البيانات هي مجموعة من القواعد التي تحكم ما يمكنك (وما لا يمكنك) فعله ببايثون. تواجه قيودًا مماثلة في العالم الحقيقي كل يوم: حاول الدفع مقابل وجبة ببطاقة ائتمان عندما يقبل المطعم الدفع نقدًا فقط. جرب ركوب الدراجة في النهر بدلاً من استخدام الزورق أو الكاياك. أو جرب خبز كعكة بالملح بدلاً من السكر. يمكنك تجربة هذه الأشياء إذا كنت تريد ذلك حقًا ، لكنني أشك في أنك ستكون سعيدًا بالنتيجة.
وبالمثل ، إذا كنت تفكر في البرمجة على أنها خبز ، فإن أنواع البيانات هي المكونات الرئيسية لأي كود Python ، تمامًا مثل البيض والدقيق والزبدة ومسحوق الخبز والسكر ، وهي مكونات أساسية لصنع كعكة. أو ربما تريد فطيرة؟ استخدم كمية أقل من الدقيق ، وقم بإسقاط مسحوق الخبز تمامًا ، وربما أضف حشوة الفاكهة وفويلا ، فأنت في طريقك إلى صنع فطيرة. انظر الى اين ستذهب هذه؟ يعد فهم ما يمكن لكل نوع بيانات فعله وكيفية مزجها معًا أمرًا أساسيًا لكونك مبرمجًا أفضل.
فيما يلي بعض أنواع البيانات الشائعة في Python:
الأرقام ، والتي تنقسم إلى أنواع أخرى ، مثل:
الأعداد الصحيحة: 0، 1، 2، 3
يطفو: 0.0 ، 1.0 ، 2.5 ، 3.145
الأوتار: "فكر بشكل مختلف" و "Netflix and Chill"
القيم المنطقية: صحيح ، خطأ
هناك العديد من أنواع البيانات في Python ، لكن في الوقت الحالي سنركز على هذه الأنواع الثلاثة.
في هذا المنشور ، ستتعرف على بعض الأشياء التي يمكنك القيام بها باستخدام أنواع البيانات الأساسية في Python وسبب أهمية أنواع البيانات.
من واقع خبرتي ، يميل هذا إلى أن يكون الجزء الأكثر مملًا في أي كتاب / فيديو / دورة تدريبية عبر الإنترنت بعنوان "Learn How To Program" ، ولكن نظرًا لأن أنواع البيانات بالغة الأهمية للبرمجة ، فإنني أوصي بشدة بعدم تخطي هذا المنشور.
أعداد
النوعان الرئيسيان من الأرقام في بايثون هما الأعداد الصحيحة (الأعداد الصحيحة) والأرقام العائمة. يمكن اعتبار العوامات على أنها أرقام عشرية ، ولكن هناك بعض الاختلافات الكبيرة ، أحدها سيتم مناقشته لاحقًا.
أوضح شيء يمكننا فعله بالأرقام هو ... الرياضيات! فيما يلي بعض الأحرف الخاصة المستخدمة في الرياضيات في بايثون:
مع هذه العمليات الأساسية ، يمكننا الآن العمل من خلال بعض السيناريوهات.
السيناريو 1
أبلغ فريق المحتوى الخاص بك أن المدونة أنتجت 80000 مشاهدة للصفحة قبل أسبوعين ، وقد حققت هذا الأسبوع 105000 مشاهدة للصفحة ؛ ما هو النمو الأسبوعي في مشاهدات الصفحة؟ تذكر أنه لحساب النسبة المئوية للتغيير الذي يمكنك القيام به (رقم جديد - رقم قديم) رقم قديم:
حسنًا ، هذا لا يبدو صحيحًا تمامًا. لما لا؟ مثل أي عالم رياضيات جيد ، اتبعت Python ترتيب العمليات في البيان الذي كتبناه. هنا يمكننا استخدام الأقواس لإخبار بايثون بالترتيب الذي نريده حقًا:
هذا أفضل. تذكر أننا ننظر إلى النسبة المئوية ، لذا في هذه الحالة ، فإن تحريك العلامة العشرية مرتين إلى اليمين سيعطينا ما نحتاج إليه. يبدو أن حركة المرور إلى المدونة قد زادت بنسبة 31.25٪ على أساس أسبوعي.
السيناريو 2
أنت تعمل مع ناشر عبر الإنترنت لتشغيل حملة خاصة تتضمن إعلان بانر كبير الحجم وإعلانات فيديو. أرسل الناشر عرضًا ينص على أن تكلفة الحزمة ثابتة قدرها 15000 دولار ويتوقعون أن تولد 550 ألف ظهور ؛ كنت ترغب في حساب التكلفة لكل ألف ظهور لمقارنة هذا الاقتراح بشكل أفضل مع الخيارات الأخرى.
للعثور على التكلفة لكل ألف ظهور ، نستخدم صيغة تكلفة الحملة ÷ (إجمالي مرات الظهور ÷ 1000):
هذه المرة حصلنا على ترتيب العمليات الصحيح ؛ يبدو أن التكلفة لكل ألف ظهور للحملة تبلغ 27.27 دولارًا تقريبًا.
يعد استخدام Python مثل هذا أمرًا مملًا حقًا ، خاصةً عند الكتابة في الصيغ الطويلة لإرجاع مقياس واحد فقط. في حين أن هذه الأمثلة مبسطة ، إلا أن هناك طرقًا لتطبيق عمليات حسابية أكثر تعقيدًا على مئات الآلاف (أو حتى الملايين) من صفوف البيانات.
تقدم الإصدارات القديمة من Python (الإصدار 2.7 والإصدارات الأقل) بعض الإجابات الغريبة عندما يتعلق الأمر بتقسيم الأعداد الصحيحة التي قد ينتج عنها عدد عشري ، مثل قسمة 1 ÷ 3. في هذين المثالين ، كنا نقسم الأعداد الصحيحة وينتهي بنا الأمر بعوامات بدون أي مشاكل ، وهو جزء من سحر استخدام إصدار أحدث من Python. إنه يطرح السؤال التالي: لماذا يُشار إلى الأرقام ذات الفاصلة العشرية بالأرقام العشرية بدلاً من الكسور العشرية؟ جاكي كازيل وكاثرين جارمول لديهما مثال رائع في كتابهما Data Wrangling With Python : في العديد من لغات البرمجة ، 0.1 + 0.2 لا يساوي 0.3. جربه بنفسك: اكتب 0.3 في جهازك ، ثم اتبعه بمقدار 0.1 + 0.2
الحق غريب؟ يتعمق مارك لوتز في مزيد من العمق حول هذه الغرابة في كتابه ، تعلم بايثون ، ولكن نظرًا لأن المسوقين لا يحتاجون عادةً إلى حساب الأرقام إلى الدرجة المليون ، فليس من الضروري فهم هذه المشكلة تمامًا ومن الجيد أن تعرف ببساطة أنها موجودة. ولكن إذا كنت مهتمًا حقًا بالفضول ، فإليك بعض المنشورات التي تشرح المزيد:
- النقطة العائمة مبهمة ، الجزء 1
- النقطة العائمة مبهمة ، الجزء 2
سلاسل
يمكن اعتبار السلاسل أحرفًا محاطة بعلامات اقتباس. هذا تعريف مفرط التبسيط لأنه يتجاهل الفروق الدقيقة بين bytearrays و Unicode و ASCII وما إلى ذلك ، لكنني أعتقد أن الخوض في هذا النوع من التفاصيل غير ضروري في الوقت الحالي.
كيف يمكن إدخال الأحرف بشكل صحيح داخل علامات الاقتباس؟ تبين أن هناك أكثر من عدة طرق مختلفة. على سبيل المثال ، في معظم الأوقات ، لا يهم إذا كنت تستخدم علامات الاقتباس الفردية أو علامات الاقتباس المزدوجة ، طالما أنك لا تزال متسقة:
بالبدء بعلامة اقتباس مزدوجة في السلسلة الثالثة وانتهاءً بعلامة اقتباس مفردة ، واجهنا خطأً. ربما لن تخلط بين علامات الاقتباس الفردية والمزدوجة عن قصد ، ولكن هناك شيء واحد يجب الانتباه إليه وهو الفواصل العليا:
لاحظ أن السلسلة الأولى ، التي تم تضمينها بين علامتي اقتباس ، تعاملت مع الفاصلة العليا جيدًا ، في حين أن السلسلة الثانية لم تتعامل معها. لماذا ا؟ بمجرد أن واجهت Python الاقتباس الفردي الثاني ، توقعت أن تنتهي السلسلة ، لكن الحروف استمرت. يؤدي قطع الجملة إلى إسكات الخطأ:
لكن وجود جزء فقط من الجملة ليس مفيدًا. إذا كنت تريد حقًا استخدام علامات الاقتباس المفردة ، فإن أحد الخيارات هو "الهروب" من الفاصلة العليا. يمكن القيام بذلك عن طريق وضع شرطة مائلة للخلف (\) مباشرة قبل الفاصلة العليا في الجملة. هذا يخبر بايثون أن تعامل الشخصية التالية بطريقة خاصة:
أتاح لنا الهروب من الفاصلة العليا الاستمرار في استخدام علامات الاقتباس المفردة والفاصلة العليا في نفس السلسلة.
هناك طريقة أخرى يمكنك من خلالها إنشاء سلاسل في بايثون: علامات الاقتباس الثلاثية. لاحظ أنه عندما تكتب سلسلة متعددة الأسطر ، يجب أن تضغط على Enter لبدء السطر التالي ؛ يؤدي هذا أيضًا إلى تغيير Terminal لعرض…: على يسار الخط الجديد. سيظهر هذا مرة أخرى عندما نبدأ في كتابة أسطر متعددة من التعليمات البرمجية.
أخيرًا ، قد تلاحظ بعض الأحرف غير التقليدية في السلسلة: \ n. هذا يخبر الكمبيوتر أين أدخلت سطرًا جديدًا ؛ من المفيد إذا كنت بحاجة إلى طباعة السلسلة مرة أخرى وتريد أن تكون دقيقًا بشأن التنسيق.
حسنًا ، الآن بعد أن أمضينا كل هذا الوقت في النظر في كيفية إدخال سلسلة بشكل صحيح (أعلم ، أليس كذلك؟ الكثير من العمل لشيء بهذه البساطة ...) ، حان الوقت للانتقال إلى الجزء الممتع: معالجة السلاسل.
هناك العديد والعديد من الطرق للسلاسل. هناك أيضًا موضوعات أخرى كاملة مثل مطابقة النمط والتقطيع سنتناولها لاحقًا. مع استبعاد الأساسيات ، دعنا نعمل من خلال مثال حقيقي.
السيناريو 1
لنفترض أن لديك نسخة جديدة يجب تحميلها إلى AdWords ، ولكن كل النسخة مكتوبة بأحرف صغيرة ولست متأكدًا مما إذا كانت العناوين في حدود 30 حرفًا. دعنا نتحقق من الطول ونطبع العنوان "أرخص الرحلات إلى باريس" لحالة العنوان:
المثال الأول من الناحية الفنية دالة ، في حين أن الثاني عبارة عن طريقة. الشيء الوحيد الذي نهتم به الآن هو أن كل واحدة تتم كتابتها بشكل مختلف: باستخدام الوظيفة ، نكتب أولاً "len (" ، ثم السلسلة نفسها ، وأخيراً القوس الأخير ")". الخبر السار هو أن العنوان في حدود 30 حرفًا التي يفرضها AdWords.
بعد ذلك ، باستخدام الطريقة ، نكتب السلسلة أولاً ، ثم نضيف .title () بعد علامة الاقتباس الختامية (بدون مسافات!).
أخيرًا ، قد تسأل نفسك "لماذا أفعل هذا في Python عندما تكون الصيغ نفسها متاحة في Excel؟" هذه نقطة عادلة.
في حين أن العبث بالعناوين هو مثال سخيف ، آمل أن تكون النقطة واضحة: هناك العديد من الخيارات المتاحة لمعالجة النص باستخدام Python. وعلى غرار السيناريو السابق مع حساب التكلفة لكل ألف ظهور أو النسبة المئوية للتغيير ، فإن القدرة على معالجة آلاف الأحرف من النص في بضعة أسطر من التعليمات البرمجية هي أداة قوية جدًا في متناول اليد.
على سبيل المثال ، أكبر مشكلة أنقذني هذا الأمر هي تنظيف الملايين من صفوف عناوين URL من Google Analytics. النقطة الثانية من هذا التمرين هي الإشارة إلى شيء قد يوفر ألمًا آخر في المستقبل: إذا كنت تعرف كيفية استخدام الصيغ في Excel أو محرر مستندات Google ، فأنت بالفعل خطوة للأمام في فهم كيفية البرمجة. هناك الكثير من أوجه التشابه التي ستترجم من Excel إلى Python.
قيمة منطقية
المنطقتان الرئيسيتان في بايثون هما True و False. معناها مباشر حقًا: صحيح يعني صحيح والخطأ يعني خطأ.
حتى نتعمق في استخدام المنطق في بايثون ، من الأفضل شرح القيم المنطقية من خلال القياس. عندما تقوم بإنشاء حملة إعلان فيديو على Facebook ، فأنت بحاجة إلى تحديد التصميم الذي تريد استخدامه. هل يجب أن يكون مقطع الفيديو الجديد الذي يهدف إلى زيادة الوعي بالعلامة التجارية ، أم يجب أن تلتزم بالفيديو القديم الذي تم اختباره في المعركة والذي يحتوي على عبارة واضحة تحث المستخدم على اتخاذ إجراء؟ هذا يعتمد على ما تحاول تحقيقه ، أليس كذلك؟ وبالمثل ، ستكون هناك نقطة ستحتاج فيها إلى إنشاء بعض المنطق لإخبار جهاز الكمبيوتر الخاص بك بالمسار الذي يجب اتباعه ، وستكون هناك طريقة واحدة لإنجاز هذه المهمة.
هناك كائنات أخرى في بايثون يمكن أن تتصرف مثل القيم المنطقية ، ولكن في الوقت الحالي يكفي إدخال الصواب والخطأ. سنتعامل مع هذا الموضوع بمزيد من التعمق مع منشور مستقبلي.
وماذا في ذلك؟
في بداية هذا المنشور ، ذكرت أنه عندما حاولت التعرف على أنواع البيانات لأول مرة ، كانت العملية مملة وموضوعها باهت. تمامًا مثل المراهق الذي نفد صبره في فصل الهندسة بالمدرسة الثانوية وهو يحث المعلم بسؤال "متى سأحتاج يومًا إلى معرفة هذه الرسائل غير المرغوب فيها؟"
شعرت أن كل هذه القواعد حول أنواع البيانات لا طائل من ورائها. لكنني أصبحت أقدر القواعد لأنه عندما تحاول كسر هذه القواعد (معظم الوقت) ، سيحدث خطأ. إذا كنت مبرمجًا مسؤولًا واختبرت الكود الخاص بك مسبقًا ، فإن الوقوع في هذه الأخطاء يمكن أن يحميك من ارتكاب أخطاء فادحة في التعليمات البرمجية عندما يكون الأمر مهمًا حقًا. دعنا نستكشف بعض الطرق التي يمكن أن تظهر بها الأخطاء.
في السيناريوهات التي مارست فيها الرياضيات مع أنواع الأرقام ، هل لاحظت عدم استخدام فواصل عند إجراء هذه الحسابات؟ ربما تكون معتادًا على كتابة الأرقام بفاصلات (أو الكسور العشرية لأصدقائنا الأوروبيين!) ، ولكن إذا جربت ذلك في بايثون ، فستواجه بعض السلوكيات الغريبة:
أمم؛ ليس على الإطلاق ما كنت تتوقعه. بوضع فاصلة في هذا الرقم ، أنشأنا بدون قصد "tuple" ؛ ليس من الضروري معرفة ما هي المجموعة في الوقت الحالي ، ولكن من المهم أن نرى أن الفاصلة قسمت الرقم إلى 500 و 0 ، وهو ما يختلف كثيرًا عن خمسمائة ألف.
يسلط هذا المثال الضوء أيضًا على جانب مهم في كتابة الكود: مجرد حرف واحد خاطئ يمكن أن يسبب مشاكل كبيرة. كود التدقيق اللغوي صعب في البداية ، ولكن مع الممارسة ، سوف تتحسن. النتائج أو الأخطاء غير المتوقعة لا داعي للذعر ؛ يمكن أن يكون الأمر مخيفًا ، لكن هذا يعني عادةً فقط ضياع شيء ما في الترجمة.
إحدى القواعد التي ربما تتوقعها هي أنه عند محاولة إضافة عدد صحيح وسلسلة ، ستحصل على خطأ:
وأنك سوف تكون الصحيح. في السطر الثاني من التعليمات البرمجية ، حاولنا إضافة العدد الصحيح 1 إلى السلسلة "1" مما أدى إلى حدوث خطأ. قد تفكر في نفسك "هذا مثال ضعيف ؛ متى سيحاول شخص ما إضافة عدد صحيح إلى سلسلة؟ " ستندهش من عدد واجهات برمجة التطبيقات التي تعرض الأرقام كسلسلة. هناك أسباب وجيهة جدًا للقيام بذلك ، ولكن عندما تتعامل مع واجهة برمجة تطبيقات ، فإن افتراض أن الرقم سيكون رقمًا ليس رهانًا آمنًا. أحد الأمثلة الرائعة هو أحدث واجهة برمجة تطبيقات لإعداد التقارير في Google Analytics. ألق نظرة على لقطة شاشة البيانات التي يقدمها لك Google Analytics عندما تطلب تقريرًا. مفاجئة! كل الأرقام (انظر إلى حقول "القيم") محاطة بعلامات اقتباس.
هذا النوع من يلقي مفتاح ربط في الأشياء ، أليس كذلك؟ سيكون الأمر كذلك ، ولكن إذا قرأت وثائق API في وقت مبكر ، فستتوقع هذه المشكلة. لحسن الحظ ، هناك أيضًا بعض الأدوات في Python التي يمكن أن تساعدنا ، مثل دالة int ():
بوضع السلسلة '1' داخل دالة int () ، فإننا نخبر Python أننا نريد أن نتعامل مع هذا كعدد صحيح ؛ يمكنك الآن جمع هذه الأرقام معًا والاستمرار في حياتك.
هذه مجرد احتمالات قليلة لكيفية تحديد أنواع البيانات لما يمكنك القيام به في Python ، لكنها توضح أيضًا أن هناك دائمًا طريقة لحل هذه المشكلات. يرجى التواصل معي على تويتر إذا كان لديك أي أسئلة حول أنواع البيانات.