الإحصاء الوصفي
إزاي توصف داتا كبيرة بكام رقم.
المتوسط والوسيط
المتوسط (Mean): اجمع كله واقسم على العدد. الوسيط (Median): رتّب الأرقام وخد اللي في النص. المنوال (Mode): الرقم الأكتر تكرار.
import statistics as st salaries = [7000, 8000, 8500, 9000, 9500, 250000] print("Mean: ", round(st.mean(salaries))) print("Median:", st.median(salaries))
رقم واحد شاذ (اسمه outlier) رفع المتوسط لأكتر من ٥ أضعاف المرتب اللي أغلب الموظفين بياخدوه. الوسيط مااتأثرش. عشان كده الأخبار بتقول «متوسط الدخل» و «وسيط الدخل» وكل واحد بيحكي قصة مختلفة.
الانتشار: التباين والانحراف المعياري
فصلين متوسطهم ٧٠ من ١٠٠. في الأول الكل جايب بين ٦٥ و ٧٥. في التاني ناس جايبة ٢٠ وناس ١٠٠. نفس المتوسط وحكاية مختلفة خالص. الانحراف المعياري (Standard Deviation) بيقيس الأرقام متفرقة عن المتوسط قد إيه.
import statistics as st class_a = [65, 68, 70, 72, 75] class_b = [20, 55, 75, 100, 100] for name, scores in [("A", class_a), ("B", class_b)]: print(f"Class {name}: mean={st.mean(scores)}, std={st.pstdev(scores):.1f}")
variance متوسط مربع البعد عن المتوسط.std الجذر التربيعي للـ variance، وبيبقى بنفس وحدة الداتا.outlier قيمة شاذة بعيدة جداً عن الباقي.التطبيع: كل الأرقام على نفس المقياس
فاكر مشكلة الشقق؟ المساحة بالمية والأوض بالواحد، فالمساحة كانت مغطية على كل حاجة. الحل اسمه Standardization (أو z-score): بنطرح المتوسط ونقسم على الانحراف المعياري، فكل عمود يبقى متوسطه صفر وانتشاره واحد.
import statistics as st areas = [75, 90, 120, 150] rooms = [2, 2, 3, 4] def standardize(values): m, s = st.mean(values), st.pstdev(values) return [round((v - m) / s, 2) for v in values] print("areas:", standardize(areas)) print("rooms:", standardize(rooms))
دلوقتي الاتنين أرقامهم حوالين الصفر، ومحدش بيغطي على التاني.
StandardScaler من scikit-learn.