الإحصاء الوصفي: المركز والانتشار
رقمان يختصران ألف قيمة: أين تتجمّع البيانات، وكم تتباعد؟ ⏱ نحو 40 دقيقة.
- تحسب مقاييس المركز والانتشار.
- تميّز متى يصدق الوسيط أكثر من المتوسط.
- تقرأ ملخّص
describeكاملًا. - تستشعر الشذوذ من فجوة المتوسط والوسيط.
١رقمان يلخّصان عمودًا
قبل الرسم والنمذجة، نلخّص العمود برقمين: مركزه (أين تتجمّع القيم) وانتشاره (كم تتباعد). المركز: المتوسط والوسيط. الانتشار: المدى والانحراف المعياري.
import pandas as pdsessions = pd.DataFrame({ "user": ["u1","u2","u3","u4","u5","u6","u7","u8"], "seconds": [12, 45, 30, 90, 52, 8, 300, 25], "pages": [1, 4, 2, 6, 3, 1, 9, 2],})s = sessions["seconds"]print("المتوسط mean:", round(s.mean(), 1))print("الوسيط median:", s.median())print("الانحراف المعياري std:", round(s.std(), 1))print("الأدنى والأعلى:", s.min(), s.max())
٢المتوسط يكذب أحيانًا: الوسيط
انظر: متوسط seconds مرتفع بسبب جلسةٍ واحدة طولها 300 ثانية (قيمة شاذّة). الوسيط — القيمة الوسطى — لا تتأثّر بالشواذّ، فهو أصدق لوصف «الزائر المعتاد»:
import pandas as pdsessions = pd.DataFrame({ "user": ["u1","u2","u3","u4","u5","u6","u7","u8"], "seconds": [12, 45, 30, 90, 52, 8, 300, 25], "pages": [1, 4, 2, 6, 3, 1, 9, 2],})s = sessions["seconds"]print("المتوسط:", round(s.mean(), 1), "← يجذبه الشاذّ 300")print("الوسيط:", s.median(), "← يصف الزائر المعتاد") # بلا القيمة الشاذّةtypical = s[s < 200]print("المتوسط بلا الشاذّ:", round(typical.mean(), 1))
٣describe: اللقطة الكاملة
describe يعطي ملخّصًا إحصائيًّا لكل الأعمدة الرقمية دفعةً: العدد، والمتوسط، والانحراف، والأدنى، والأرباع، والأعلى:
import pandas as pdsessions = pd.DataFrame({ "user": ["u1","u2","u3","u4","u5","u6","u7","u8"], "seconds": [12, 45, 30, 90, 52, 8, 300, 25], "pages": [1, 4, 2, 6, 3, 1, 9, 2],})print(sessions.describe().round(1)) # الربيعيات يدويًّاprint("الربع الأول Q1:", sessions["seconds"].quantile(0.25))print("الربع الثالث Q3:", sessions["seconds"].quantile(0.75))
describe أول ما تفعله مع جدولٍ جديد بعد head: يكشف المدى والشذوذ المحتمل في نظرة.
توقّع وتحقّق
المقياس الأقل تأثّرًا بالقيم الشاذّة:
مقياس الانتشار:
للملخّص الإحصائي الكامل:
تباعد المتوسط عن الوسيط يدلّ على:
الخلاصة
- لخّص العمود بمركزٍ (متوسط/وسيط) وانتشارٍ (مدى/انحراف معياري).
- الوسيط لا يتأثّر بالشواذّ، فهو أصدق لوصف المعتاد حين تلتوي البيانات.
describeيعطي الملخّص الإحصائي الكامل في نظرة.- فجوة المتوسط والوسيط إشارةُ التواءٍ أو شواذّ تستحقّ البحث.
تحدٍّ برمجي: لخّص عمودًا
متوسطللعمود pages: اطبع المتوسط مقرّبًا لمنزلة واحدة، والوسيط، وعدد الجلسات التي تجاوزت المتوسط.
- اطبع المتوسط (منزلة واحدة) ثم الوسيط.
- اطبع عدد القيم الأكبر من المتوسط.
ابدأ من هذا الكود، واضغط ▶ شغّل هنا لتكتب حلّك وتجرّبه مباشرة:
import pandas as pdsessions = pd.DataFrame({ "user": ["u1","u2","u3","u4","u5","u6","u7","u8"], "seconds": [12, 45, 30, 90, 52, 8, 300, 25], "pages": [1, 4, 2, 6, 3, 1, 9, 2],})# للعمود pages: المتوسط (منزلة واحدة)، الوسيط، وعدد القيم فوق المتوسط
💡 تلميح 1
m = sessions["pages"].mean().💡 تلميح 2
.median()؛ والعدّ: (p > m).sum().حاول بنفسك أولًا؛ للمسألة أكثر من حلّ صحيح.
import pandas as pdsessions = pd.DataFrame({ "user": ["u1","u2","u3","u4","u5","u6","u7","u8"], "seconds": [12, 45, 30, 90, 52, 8, 300, 25], "pages": [1, 4, 2, 6, 3, 1, 9, 2],})p = sessions["pages"]m = p.mean()print(round(m, 1))print(p.median())print(int((p > m).sum()))