
- بواسطة 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 هما السلاح السهل والفعال.
- رتب بياناتك، احسب التراكمي، ارسم الأعمدة والخط، وحلل النتائج عمليًا.
- ضيف تحسينات بصرية وتصدّر الرسم لو هتشاركه في تقرير.
التعديل الأخير: