EduFlow
Python لتحليل البيانات
⁦0%⁩

الوحدة 5 · الإجابة عن أسئلة حقيقية

دراسة حالة: لماذا قفز الإيراد في الربع الرابع من 2025؟

26 دقراءة 4 دتمرين Python

الدرس في لمحة

أجب عن سؤال عمل حقيقي من البداية إلى النهاية - عرّف المقياس، وافحص البيانات، وفكّك الإيراد إلى طلبات وعملاء وقيمة طلب، واختبر كل تفسير، واكتب استنتاجًا مع تحفّظاته.

  1. 1الخطوة 1: عرّف المقياس وافحص البيانات
  2. 2الخطوة 2: فكّك التغيّر
  3. 3الخطوة 3: ضعه بجانب العام الماضي
  4. 4الخطوة 4: اختبر التفسيرات الشائعة
  5. 5الخطوة 5: اكتب الإجابة

لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.

رسالة رئيس النمو تنتظر منذ الدرس 1.1: “كان إيراد الربع الرابع من 2025 أعلى بكثير من أي ربع قبله. هل السبب الجمعة السوداء، أم عملاء أكثر، أم سلال أكبر، أم خطأ في البيانات؟ أحتاج إجابة أستطيع تكرارها أمام مجلس الإدارة.” يعمل هذا الدرس على الإجابة كما كنت ستفعل في العمل: عرّف، وافحص، وفكّك، واختبر التفسيرات، واستنتج. كل خطوة تستخدم أداة تعرفها مسبقًا.

الخطوة 1: عرّف المقياس وافحص البيانات

المقياس هو تعريف الإيراد في الدورة من الدرس 4.2: إيراد البنود بعد الخصومات، دون الشحن ودون الطلبات الملغاة. ابنِ صفًا لكل طلب، وأكّد بـ assert الحقائق التي يعتمد عليها التحليل قبل أن تثق برقم واحد:

Python
import pandas as pd

items = pd.read_csv("order_items.csv")
orders = pd.read_csv("orders.csv", parse_dates=["order_date"])
items["revenue"] = items["quantity"] * items["unit_price"] * (1 - items["discount"])
per_order = items.groupby("order_id", as_index=False)["revenue"].sum()
df = orders.merge(per_order, on="order_id", how="left", validate="one_to_one")

assert df["order_id"].is_unique
assert df["revenue"].notna().all(), "an order has no items"
df = df[df["status"] != "cancelled"].copy()
df["quarter"] = df["order_date"].dt.to_period("Q")

print(df.groupby("quarter")["revenue"].sum().round(0))
print(df.loc[df["quarter"] == "2025Q4", "status"].value_counts())

انتقل الإيراد من 80,523 دولارًا في الربع الثالث من 2025 إلى 146,825 في الربع الرابع، بزيادة 82%. لا مكرّرات، ولا طلبات بلا بنود. ويظهر تحفّظ واحد فورًا: 63 طلبًا من الربع الرابع قيمتها 11,321 دولارًا، أي نحو 8% من الربع، ما زالت processing أو shipped. إنها تُحسب إيرادًا بحسب التعريف، لكن بعضها قد يُلغى. سجّل ذلك الآن؛ فمكانه في الإجابة النهائية.

الخطوة 2: فكّك التغيّر

الإيراد هو الطلبات مضروبة في متوسط قيمة الطلب (AOV)، والطلبات هي العملاء النشطون مضروبين في الطلبات لكل عميل. حساب كل عامل يُظهر أيّها تحرّك:

Python
import pandas as pd

items = pd.read_csv("order_items.csv")
orders = pd.read_csv("orders.csv", parse_dates=["order_date"])
items["revenue"] = items["quantity"] * items["unit_price"] * (1 - items["discount"])
df = orders.merge(items.groupby("order_id", as_index=False)["revenue"].sum(), on="order_id", validate="one_to_one")
df = df[df["status"] != "cancelled"].copy()
df["quarter"] = df["order_date"].dt.to_period("Q")

q = df.groupby("quarter").agg(
    revenue=("revenue", "sum"),
    orders=("order_id", "count"),
    customers=("customer_id", "nunique"),
)
q["aov"] = q["revenue"] / q["orders"]
q["orders_per_customer"] = q["orders"] / q["customers"]
print(q.round(2).tail(5))
print((q.loc["2025Q4"] / q.loc["2025Q3"] - 1).round(3))

أمر الطباعة الثاني هو التفكيك في سطر واحد. ارتفعت الطلبات 98% بينما انخفض متوسط قيمة الطلب 8%: كان الربع الرابع مسألة حجم مبيعات لا سلال أكبر، وهذا يطابق الوسيطات التي رأيتها في الدرس 5.1. وجاءت الطلبات الإضافية من الاتجاهين: عملاء نشطون أكثر بنسبة 54%، وكل منهم طلب أكثر (2.28 طلب لكل عميل مقابل 1.77).

الخطوة 3: ضعه بجانب العام الماضي

القفزة لا تكون مفاجئة إلا مقارنةً بما يحدث عادةً. وقد أظهر الدرس 4.4 بالفعل المقارنة المهمة:

النمو من الربع الثالث إلى الرابع النمو السنوي في الربع الرابع
2024 ‎+73% (لا بيانات لعام 2023)
2025 ‎+82% ‎+180%

كان الربع الرابع أعلى بنسبة 73% من الثالث في 2024 أيضًا، وكان نوفمبر أكبر شهر في السنتين. ارتفاع 2025 من الربع الثالث إلى الرابع أقوى بعض الشيء فقط من الدفعة الموسمية المعتادة، ونمو الربع الرابع بنسبة 180% على العام السابق يقع ضمن نطاق أرباع 2025 الأخرى (من 145% إلى 200%). وتبدأ رسالة مجلس الإدارة بالتشكّل: العمل نما إلى نحو ثلاثة أضعاف حجمه سنة مقابل سنة (إذ بلغ إيراد 2025 نحو 2.7 ضعف إيراد 2024)، والربع الرابع هو ذلك العمل الأكبر وهو يبلغ ذروة موسم الأعياد المعتادة.

الخطوة 4: اختبر التفسيرات الشائعة

كل تفسير يحصل على رقم محدّد:

Python
import pandas as pd

items = pd.read_csv("order_items.csv")
orders = pd.read_csv("orders.csv", parse_dates=["order_date"])
items["revenue"] = items["quantity"] * items["unit_price"] * (1 - items["discount"])
df = orders.merge(items.groupby("order_id", as_index=False)["revenue"].sum(), on="order_id", validate="one_to_one")
df = df[df["status"] != "cancelled"].copy()
df["quarter"] = df["order_date"].dt.to_period("Q")

first_q = df.groupby("customer_id")["order_date"].min().dt.to_period("Q").rename("first_quarter")
df = df.merge(first_q, on="customer_id", validate="many_to_one")
df["customer_type"] = (df["quarter"] == df["first_quarter"]).map({True: "new", False: "returning"})

q4 = df[df["quarter"] == "2025Q4"]
total = q4["revenue"].sum()
print(q4.groupby("customer_type")["revenue"].sum().div(total).round(3))
bf = q4["coupon_code"] == "BLACKFRIDAY25"
print("Black Friday coupon orders:", bf.sum(), "| share of Q4 revenue:", round(q4.loc[bf, "revenue"].sum() / total, 3))
print(q4.groupby(q4["order_date"].dt.month)["revenue"].sum().round(0))

الجمعة السوداء؟ استُخدم الكوبون BLACKFRIDAY25 في 69 طلبًا من الربع الرابع، جلبت 8.4% من إيراد الربع. كان نوفمبر ضخمًا، 75,334 دولارًا، لكن معظمه جاء من طلبات بلا ذلك الكوبون. ساعدت الجمعة السوداء، لكنها لا تفسّر القفزة. عملاء جدد؟ العملاء الذين قدّموا أول طلب لهم جلبوا 36% من إيراد الربع الرابع، بينما جاء 64% من عملاء عائدين، وهؤلاء أيضًا مصدر ثلثي الزيادة البالغة 66,302 دولار على الربع الثالث. القفزة تقوم في معظمها على قاعدة عملاء قائمة ظلّت تنمو وتعود. سلال أكبر؟ استُبعد هذا في الخطوة 2. زيادة الأسعار؟ دخلت الزيادة بنسبة 5% حيّز التنفيذ في مارس 2025، فهي ترفع الربعين الثالث والرابع بالتساوي ولا تفسّر شيئًا من التغيّر بينهما. خطأ في البيانات؟ لم تجد فحوص الخطوة 1 مكرّرات ولا طلبات يتيمة؛ والخطر الوحيد المفتوح هو الـ 8% التي لم تُسلَّم بعد.

خمس خطوات متتالية: التعريف والفحص، والتفكيك، والمقارنة بالعام الماضي، واختبار التفسيرات، والاستنتاج. وتحت كل خطوة اكتشافها: البيانات نظيفة و 8 بالمئة لم تُسلَّم؛ الطلبات زادت 98 بالمئة وقيمة الطلب انخفضت 8 بالمئة؛ في 2024 كانت قفزة الربع الرابع 73 بالمئة أيضًا؛ كوبونات الجمعة السوداء 8 بالمئة والعملاء العائدون 64 بالمئة؛ ذروة موسمية لعمل نما إلى نحو ثلاثة أضعاف حجمه. افحص فكّك العام الماضي اختبر الأفكار استنتج نظيفة؛8% لم تُسلَّم الطلبات زادت 98%AOV انخفض 8% قفزة الربع الرابعفي 2024: 73% الكوبون 8%؛العائدون 64% ذروة موسميةلعمل بلغ 2.7 ضعف
من السؤال إلى الإجابة: كل خطوة تضيّق التفسير

الخطوة 5: اكتب الإجابة

لا يكتمل التحليل إلا حين يستطيع شخص آخر تكراره في اجتماع. ابدأ بالاستنتاج، وقدّم الأدلة بالأرقام، واختم بالتحفّظات:

كان إيراد الربع الرابع من 2025 (146,825 دولارًا، بزيادة 82% على الربع الثالث) في الأساس ذروة موسم الأعياد المعتادة لدى Cartwheel، لعمل بلغ حجمه 2.7 ضعف ما كان عليه قبل سنة. جاء الارتفاع من حجم الطلبات (زيادة 98%)، لا من حجم الطلب (انخفض متوسط قيمة الطلب 8%)، مع عملاء نشطين أكثر بنسبة 54% طلبوا بوتيرة أعلى. وكان الربع الرابع أعلى بنسبة 73% من الثالث في 2024 أيضًا. أنتج العملاء العائدون 64% من إيراد الربع الرابع؛ وأنتجت طلبات كوبون الجمعة السوداء 8.4%. التحفّظات: 8% من إيراد الربع الرابع من طلبات لم تُسلَّم بعد، وانخفاض قيمة الطلب جزء منه ثمن خصومات الربع الرابع، التي زادت على ثلاثة أضعاف مقارنةً بالربع الثالث (5,581 دولارًا مقابل 1,615).

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

أهم النقاط

  • ابدأ سؤال العمل بكتابة المقياس وتعريفه الدقيق، ثم افحص البيانات التي تغذّيه قبل أي تحليل.
  • فكّك المجموع إلى محرّكاته (الإيراد = الطلبات × متوسط قيمة الطلب؛ والطلبات = العملاء × الطلبات لكل عميل) لترى أيّها تحرّك.
  • قارن بالفترة نفسها من العام الماضي وبالنمط الموسمي، كي لا تظنّ ذروة طبيعية اختراقًا.
  • اختبر كل تفسير شائع برقم محدّد، وقل كم من التغيّر يستطيع تفسيره وكم لا يستطيع.
  • الإجابة المكتملة استنتاج قصير، والأدلة التي خلفه، والتحفّظات التي قد تغيّره.

قراءات إضافية

تحقّق من فهمك

3 أسئلة

السؤال 1 من 3

ارتفع إيراد الربع الرابع بنسبة 82% على الثالث، بينما ارتفعت الطلبات 98% وانخفض متوسط قيمة الطلب 8%. ما الذي قاد الزيادة؟

السؤال 2 من 3

كان الربع الرابع من 2024 أيضًا أعلى بنسبة 73% من الربع الثالث من 2024. لماذا يهم ذلك في قصة الربع الرابع من 2025؟

السؤال 3 من 3

63 طلبًا من الربع الرابع قيمتها 11,321 دولارًا ما زالت processing أو shipped في نهاية البيانات. كيف يجب أن يتعامل التقرير معها؟

تدريب

تمرين Python

فكّك قفزة الربع الرابع

في df صف لكل طلب غير ملغى، مع revenue وcustomer_id وcoupon_code وفترة quarter. ابنِ q، صفًا لكل ربع، بالأعمدة revenue (المجموع) وorders (العدد) وcustomers (العملاء المختلفون) وaov (الإيراد ÷ الطلبات). ثم احسب نمو الإيراد والطلبات ومتوسط قيمة الطلب من الربع الثالث إلى الرابع من 2025 ككسور (revenue_growth وorders_growth وaov_growth)، وحصة إيراد الربع الرابع من 2025 التي جاءت من طلبات BLACKFRIDAY25 (bf_share)، ونمو الإيراد من الربع الثالث إلى الرابع في 2024 (growth_2024). قرّب كل رقم من هذه الأرقام الخمسة إلى 3 منازل عشرية.

ملفات البيانات: order_items.csv, orders.csv

import pandas as pd

items = pd.read_csv("order_items.csv")
orders = pd.read_csv("orders.csv", parse_dates=["order_date"])
items["revenue"] = items["quantity"] * items["unit_price"] * (1 - items["discount"])
df = orders.merge(items.groupby("order_id", as_index=False)["revenue"].sum(), on="order_id", validate="one_to_one")
df = df[df["status"] != "cancelled"].copy()
df["quarter"] = df["order_date"].dt.to_period("Q")

# 1. q: one row per quarter with columns revenue, orders, customers (distinct), aov
q = None

# 2. Growth from 2025Q3 to 2025Q4 as fractions (0.5 = +50%), each rounded to 3 decimals
revenue_growth = None
orders_growth = None
aov_growth = None

# 3. Share of 2025Q4 revenue from orders with the BLACKFRIDAY25 coupon, rounded to 3 decimals
bf_share = None

# 4. Q3-to-Q4 revenue growth in 2024, rounded to 3 decimals (the seasonal baseline)
growth_2024 = None
جارٍ تحميل المحرّر…

Ctrl/⌘ + Enter للتشغيل · يعمل في بيئة معزولة داخل متصفّحك. لا شيء يغادر جهازك.

(لا مخرجات)

الفحوص

  • في q 8 أرباع مع revenue و orders و customers و aov
  • يعرض الربع الرابع من 2025 ما مجموعه 642 طلبًا و282 عميلًا ومتوسط قيمة طلب قدره 228.70
  • نما الإيراد 82.3% والطلبات 98.1%
  • انخفض متوسط قيمة الطلب 8.0%
  • طلبات كوبون الجمعة السوداء 8.4% من إيراد الربع الرابع
  • كان النمو من الربع الثالث إلى الرابع في 2024 بنسبة 72.7%