تحليل البيانات باستخدام بايثون: إنشاء مخطط باريتو

x32x01
  • بواسطة 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 هما السلاح السهل والفعال.
  • رتب بياناتك، احسب التراكمي، ارسم الأعمدة والخط، وحلل النتائج عمليًا.
  • ضيف تحسينات بصرية وتصدّر الرسم لو هتشاركه في تقرير.
 
التعديل الأخير:
المواضيع ذات الصلة
x32x01
الردود
0
المشاهدات
339
x32x01
x32x01
x32x01
الردود
0
المشاهدات
360
x32x01
x32x01
x32x01
الردود
0
المشاهدات
326
x32x01
x32x01
x32x01
الردود
0
المشاهدات
419
x32x01
x32x01
x32x01
الردود
0
المشاهدات
361
x32x01
x32x01
x32x01
الردود
0
المشاهدات
358
x32x01
x32x01
x32x01
الردود
0
المشاهدات
630
x32x01
x32x01
x32x01
الردود
0
المشاهدات
851
x32x01
x32x01
الدخول أو التسجيل السريع
نسيت كلمة مرورك؟
إحصائيات المنتدى
المواضيع
1,830
المشاركات
2,027
أعضاء أكتب كود
466
أخر عضو
chaouki
عودة
أعلى