طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 244 · علم البيانات للويب
الدرس 12 · الوحدة 6: تحليل السلوك والاتجاهات على الويب

مقاييس السلوك: الارتداد والجلسة والتحويل

من الزيارات الخام إلى مقاييس تقرأ التجربة: من يرتدّ؟ من يبقى؟ من يشتري؟ ⏱ نحو 45 دقيقة.

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

١مقاييس تقيس التجربة

أرقام الويب الخام (زيارات، ثوانٍ) لا تعني شيئًا وحدها. التحليل يحوّلها إلى مقاييس سلوك تصف التجربة: هل الزائر يتفاعل أم يرحل فورًا؟ هل يشتري؟

المقياستعريفهماذا يكشف
معدّل الارتداد Bounceنسبة الجلسات بصفحة واحدة فقطصفحات تطرد الزوّار
مدة الجلسة Sessionمتوسط زمن البقاءمدى التفاعل
معدّل التحويل Conversionنسبة الجلسات الشرائيةفاعلية الموقع تجاريًّا

٢حساب المقاييس الثلاثة

main.py
import pandas as pdsessions = pd.DataFrame({    "session": [1,2,3,4,5,6,7,8],    "pages":   [1, 4, 1, 6, 2, 1, 3, 5],    "seconds": [8, 120, 5, 240, 40, 3, 90, 180],    "bought":  [False, True, False, True, False, False, False, True],})n = len(sessions)# ارتداد: جلسة بصفحة واحدةbounce = (sessions["pages"] == 1).mean()# متوسط مدة الجلسةavg_session = sessions["seconds"].mean()# تحويل: جلسات شرائيةconversion = sessions["bought"].mean() print("معدّل الارتداد:", round(bounce * 100, 1), "%")print("متوسط الجلسة:", round(avg_session, 1), "ثانية")print("معدّل التحويل:", round(conversion * 100, 1), "%")
Shell×
>>> %Run main.py
معدّل الارتداد: 37.5 %
متوسط الجلسة: 85.8 ثانية
معدّل التحويل: 37.5 %
>>>

حيلةٌ مفيدة: .mean() على عمودٍ منطقي يعطي النسبة مباشرةً (True=1)، فلا تحتاج قسمةً يدوية.

٣قمع التحويل Funnel

الزائر يمرّ بمراحل: دخول ← تصفّح ← سلّة ← شراء. قمع التحويل يقيس كم يتبقّى في كل مرحلة، فيكشف أين يتسرّب الزوّار:

main.py
import pandas as pdfunnel = pd.DataFrame({    "stage": ["دخول", "تصفّح", "سلّة", "شراء"],    "users": [1000, 620, 280, 150],})# نسبة كل مرحلة من السابقةfunnel["keep"] = (funnel["users"] / funnel["users"].shift(1) * 100).round(1)print(funnel)# أكبر تسرّبfunnel["drop"] = 100 - funnel["keep"]worst = funnel.loc[funnel["drop"].idxmax(), "stage"]print("أكبر تسرّب عند:", worst)
Shell×
>>> %Run main.py
stage users keep
0 دخول 1000 NaN
1 تصفّح 620 62.0
2 سلّة 280 45.2
3 شراء 150 53.6
أكبر تسرّب عند: سلّة
>>>

توقّع وتحقّق

معدّل الارتداد هو نسبة الجلسات:

.mean() على عمود منطقي يعطي:

قمع التحويل يكشف:

shift(1) على عمود:

الخلاصة

تحدٍّ برمجي: قِس السلوك

متقدم

من جدول الجلسات، اطبع معدّل الارتداد ومعدّل التحويل (كنسبة مئوية مقرّبة لمنزلة واحدة).

المطلوب:
  • الارتداد: نسبة pages == 1.
  • التحويل: نسبة bought. اطبع كلًّا كنسبة مئوية (منزلة واحدة).

ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:

main.py
import pandas as pdsessions = pd.DataFrame({    "session": [1,2,3,4,5,6,7,8],    "pages":   [1, 4, 1, 6, 2, 1, 3, 5],    "seconds": [8, 120, 5, 240, 40, 3, 90, 180],    "bought":  [False, True, False, True, False, False, False, True],})# اطبع معدّل الارتداد ثم معدّل التحويل كنسبة مئوية (منزلة واحدة)
المطلوب×
37.5
37.5
💡 تلميح 1
الارتداد: (sessions["pages"] == 1).mean().
💡 تلميح 2
التحويل: sessions["bought"].mean()؛ اضرب في 100 وقرّب.

حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.

main.py
import pandas as pdsessions = pd.DataFrame({    "session": [1,2,3,4,5,6,7,8],    "pages":   [1, 4, 1, 6, 2, 1, 3, 5],    "seconds": [8, 120, 5, 240, 40, 3, 90, 180],    "bought":  [False, True, False, True, False, False, False, True],})bounce = (sessions["pages"] == 1).mean()conversion = sessions["bought"].mean()print(round(bounce * 100, 1))print(round(conversion * 100, 1))
انتقل إلى تقييم الدرساختيار من متعدد، وصح وخطأ، وأكمل الفراغ، وتتبّع الناتج.ابدأ التقييم ←

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس