- بواسطة x32x01 ||
ايه هو مخطط باريتو (Pareto Chart) وليه بنستخدمه؟ 🎯
مخطط باريتو مبني على فكرة بسيطة لكن قوية: غالبًا حوالي 80% من النتائج بتيجي من 20% من الأسباب - وده اللي الناس بتسميه قاعدة 80/20.يعني لو عندك مبيعات، ممكن تلاقي إن 80% من الإيراد بيجيلك من 20% من المنتجات. لو عندك أخطاء أو شكاوى، 80% منها ممكن تكون بسبب شوية أسباب قليلة.
المخطط بيعرض عمود لكل فئة (بيرمز لتكرار أو قيمة)، ومعاه خط تراكمي (Cumulative %) بيوضح النسبة المتجمعة. الهدف: تعرف أولوياتك بسرعة - عالج الـ20% اللي ليها أكبر تأثير، وهتلاقي نتيجة كبيرة.
إمتى تستخدم مخطط باريتو؟ 📌
- تحليل المبيعات: اعرف المنتجات اللي بتجيب معظم الإيرادات.
- دعم العملاء: اعرف الأسباب الرئيسية للشكاوى.
- تحسين جودة المنتج: حدّد أهم المشاكل اللي بتأثر على الأداء.
- أي حالة فيها ترتيب للأولويات بناءً على التكرار أو القيمة.
ازاي نعمل مخطط باريتو باستخدام بايثون خطوة بخطوة 🐍📊
هنستخدم مكتبتين أساسيتين: Pandas لإدارة البيانات وMatplotlib للرسم.الكود الكامل الأولي
# ١. استيراد المكتبات Python:
import pandas as pd
import matplotlib.pyplot as plt
# ٢. البيانات الأساسية
data = {'Category': ['A', 'B', 'C', 'D', 'E'], 'Frequency': [50, 30, 15, 5, 2]}
# ٣. تحويل البيانات إلى DataFrame
df = pd.DataFrame(data)
# ٤. ترتيب البيانات حسب التكرار
df = df.sort_values('Frequency', ascending=False)
# ٥. حساب النسبة التراكمية
df['Cumulative %'] = df['Frequency'].cumsum() / df['Frequency'].sum() * 100
# ٦. رسم الأعمدة والخط التراكمي
fig, ax1 = plt.subplots()
ax1.bar(df['Category'], df['Frequency'], color='C4') # الأعمدة
ax1.set_ylabel('Frequency') # تسمية المحور الأول
ax2 = ax1.twinx()
ax2.plot(df['Category'], df['Cumulative %'], 'CID') # الخط التراكمي
ax2.set_ylabel('Cumulative %') # تسمية المحور الثاني
# ٧. إضافة العنوان
plt.title('Pareto Chart')
plt.show() شرح الكود خطوة بخطوة وبسطر واحد لكل خطوة 🔍
- استيراد Pandas وMatplotlib.
- جهزنا بيانات تجريبية على شكل قاموس.
- حولنا القاموس لـ DataFrame علشان نقدر نتعامل معاه بسهولة.
- رتبنا الفئات تنازليًا بحسب التكرار (ده مهم عشان الخط التراكمي يكون صح).
- حسبنا النسبة التراكمية باستخدام cumsum() وقسمناها على المجموع الكلي.
- رسمنا الأعمدة وبنفس الوقت رسمنا خط على المحور التاني (twinx) علشان نعرض النسبة المئوية.
- عرضنا الشكل النهائي.
تحسينات عملية على الرسم ✨
عايز المخطط يبقى أقوى بصريًا ويُستخدم فعليًا في تقارير؟ جرب الحاجات دي:
- إضافة تسميات النسبة التراكمية فوق النقاط:
Python:
for i, val in enumerate(df['Cumulative %']):
ax2.text(i, val+1, f"{val:.1f}%", ha='center') - إظهار خط 80% كمرجع:
Python:
ax2.axhline(80, color='r', linestyle='--', linewidth=1) - حفظ الشكل كصورة:
Python:
plt.savefig('pareto_chart.png', dpi=300, bbox_inches='tight') - تغيير ألوان الأعمدة عشان تكون متوافقه مع الماركة بتاعتك (بدل 'C4' حط قائمة ألوان).
لو بياناتك جاية من ملف CSV ازاي تتعامل؟ 🗂️
افترض عندك ملف sales.csv فيه عمود product وعمود qty، تقدر تجمع وتعمل باريتو كده: Python:
df = pd.read_csv('sales.csv')
grouped = df.groupby('product')['qty'].sum().reset_index()
grouped = grouped.sort_values('qty', ascending=False)
grouped['Cumulative %'] = grouped['qty'].cumsum() / grouped['qty'].sum() * 100
# بعد كده ارسم بنفس طريقة المثال تفسير نتائج مخطط باريتو - ازاي تقرأه وتتصرف؟ 🧭
- بص على أول فئات (الأعمدة الأولى): دول اللي بيشكلوا أكبر جزء من التكرار أو القيمة.
- لو خط التراكمي وصل 80% عند أول 2 أو 3 فئات، يبقى عندك تركيز عالي - عالجهم الأول.
- لو التوزيع مسطح والـ80% بتجي متوزعة على كتير فئات، يبقى الحل محتاج يكون عام ومتكامل مش نقطة زي ما ممكن تتعامل.
نصايح عملية ومشاكل شائعة ⚠️
- دايمًا رتب البيانات نزوليًا قبل ما تحسب التراكمي. لو نسيت، النتيجة هتكون خربانة.
- لو عندك قيم سالبة أو صفرية، فكر قبل ما تحطها في الباريتو - لأنه بيعتمد على مجموع موجب.
- خلى التسميات واضحة (Category names) متخليشها اختصارات غريبة لو هتشارك الرسم مع ناس تانية.
- لما تستخدم بيانات وقتية (مثل مبيعات يومية)، فكر تعمل باريتو على مجموعات (مثلاً منتجات خلال شهر) مش على صف واحد.
حالات استخدام واقعية - أمثلة تطبيقية 📈
- تحسين دعم العملاء: عشان تقلل تذاكر الدعم، اعمل باريتو لأسباب الشكاوى - أصلح أهم 20% وهتقل الشكاوى بنسبة كبيرة.
- تحليل مبيعات: اعرف المنتجات اللي بتجيب أغلب الإيراد وركّز عليها في التسويق.
- صيانة معدات: اعرف أجزاء الماكينات اللي بتتسبب في أغلب الأعطال وابدأ بصيانتها بشكل استباقي.
- تحسين جودة البرمجيات: سجّل الأخطاء البرمجية وبريتو على نوعها أو الموديول المسؤول عن الأخطاء.
ازاي تحدد نقطة الـ80% آليًا وتعلم الناس؟ ✅
ممكن تضيف كود يطلعلك مؤشر الـ"vital few" - عدد الفئات اللي بتكوّن 80%:
Python:
threshold = 80
count_vital = (df['Cumulative %'] <= threshold).sum()
print(f"Number of categories making up to {threshold}%: {count_vital}") خلاصة سريعة 🔚
- مخطط باريتو أداة بسيطة وقوية لتحديد الأولويات.
- في بايثون، Pandas + Matplotlib هما السلاح السهل والفعال.
- رتب بياناتك، احسب التراكمي، ارسم الأعمدة والخط، وحلل النتائج عمليًا.
- ضيف تحسينات بصرية وتصدّر الرسم لو هتشاركه في تقرير.
التعديل الأخير: