تعديل المحتوى الموضوع * -- اختر موضوع --C# CourseCSSHTMLJava ScriptPython Fundamentals اساسياتSQL Serverرواية الفيل الأزرقمواضيع متنوعة الوحدة * -- اختر وحدة --1. الوحدة 1: الانطلاقة (1)2. الوحدة 2: الأساسيات (2)3. الوحدة 3: التحكم في مسار البرنامج (3)4. الوحدة 4: هياكل البيانات (4)5. الوحدة 5: الدوال وتنظيم الكود (5)6. الوحدة 6: الملفات والمدخلات والمخرجات (6)7. الوحدة 7: البرمجة الكائنية OOP (7)8. الوحدة 8: مكتبات Python الأساسية (8)9. الوحدة 9: مقدمة تحليل البيانات (9) ترتيب الدرس ترتيب ظهور الدرس داخل الوحدة عنوان المحتوى * محتوى الدرس * (13103 حرف) <!DOCTYPE html> <html lang="ar" dir="rtl"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>الدرس 9.3: DataFrames — قراءة وعرض البيانات</title> <script src="https://cdn.tailwindcss.com"></script> <link href="https://fonts.googleapis.com/css2?family=Tajawal:wght@300;400;700;800&display=swap" rel="stylesheet"> <style> body { font-family: 'Tajawal', sans-serif; background-color: #f8fafc; color: #1e293b; } .section-card { background: white; border-radius: 1rem; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); padding: 2rem; margin-bottom: 2rem; border-right: 5px solid #10b981; } .icon-box { display: inline-flex; align-items: center; justify-content: center; width: 3rem; height: 3rem; border-radius: 0.5rem; margin-left: 0.75rem; font-size: 1.7rem; } .code-block { position: relative; background-color: #1e293b; color: #e2e8f0; border-radius: 0.75rem; padding: 1.5rem; font-family: 'Courier New', monospace; overflow-x: auto; text-align: left; direction: ltr; margin-top: 1rem; white-space: pre; font-size: 1.05rem; border: 2px solid #0f172a; } .copy-btn { position: absolute; top: 0.5rem; right: 0.5rem; background-color: #334155; color: white; border: 1px solid #475569; padding: 0.3rem 0.9rem; border-radius: 0.25rem; font-size: 0.85rem; cursor: pointer; transition: 0.2s; font-family: 'Tajawal', sans-serif; } .copy-btn:hover { background-color: #475569; } .copy-btn.copied { background-color: #10b981; border-color: #10b981; } .try-btn { margin-top: 0.5rem; background-color: #10b981; color: white; padding: 0.55rem 1.2rem; border-radius: 0.45rem; font-size: 0.95rem; font-weight: 700; display: inline-block; cursor: pointer; transition: 0.2s; box-shadow: 0 3px 5px rgba(16, 185, 129, 0.22); } .try-btn:hover { background-color: #059669; transform: translateY(-1px); box-shadow: 0 4px 8px rgba(16, 185, 129, 0.28); } .py-comment { color:#94a3b8; font-style:italic; } .py-str { color:#4ade80; } .py-func { color:#60a5fa; } .py-num { color:#facc15; } .py-import { color:#a5b4fc; font-weight:bold; } </style> </head> <body> <div class="p-4 md:p-8 max-w-6xl mx-auto"> <!-- Header --> <header class="text-center mb-12"> <h1 class="text-4xl md:text-5xl font-extrabold text-green-700 mb-4"> الدرس 9.3: DataFrames — قراءة وعرض البيانات </h1> <p class="text-2xl text-gray-600"> الجداول في Pandas: الطريقة القياسية للتعامل مع البيانات </p> </header> <!-- Section 1: ما هو DataFrame؟ --> <section class="section-card"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-green-100 text-green-700">📊</span> ما هو DataFrame؟ </h2> <p class="text-xl text-gray-700 mb-4"> <strong>DataFrame</strong> هو أهم كائن في مكتبة Pandas، ويمكن اعتباره: </p> <ul class="list-disc pr-6 text-gray-700 text-xl space-y-3"> <li>جدول بيانات ثنائي الأبعاد (صفوف × أعمدة).</li> <li>كل عمود يمكن أن يكون له نوع بيانات مختلف (أرقام، نصوص، تواريخ...).</li> <li>يشبه الجداول في Excel أو قواعد البيانات، لكنه داخل Python.</li> </ul> <p class="text-xl text-gray-700 mt-4"> معظم مهام تحليل البيانات ستكون باستخدام DataFrames: القراءة، العرض، التصفية، التنظيف، الإحصاء، وغيرها. </p> </section> <!-- Section 2: إنشاء DataFrame من قاموس --> <section class="section-card" style="border-right-color:#0ea5e9;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-blue-100 text-blue-700">🧱</span> إنشاء DataFrame من قاموس (Dictionary) </h2> <p class="text-xl text-gray-700 mb-4"> أسهل طريقة لإنشاء DataFrame هي استخدام قاموس: <strong>المفتاح = اسم العمود، القيمة = قائمة القيم</strong>. </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('df-from-dict', this)">نسخ</button> <code id="df-from-dict"> <span class="py-import">import</span> pandas <span class="py-func">as</span> pd data = { <span class="py-str">"name"</span>: [<span class="py-str">"Ali"</span>, <span class="py-str">"Sara"</span>, <span class="py-str">"Omar"</span>], <span class="py-str">"age"</span>: [<span class="py-num">25</span>, <span class="py-num">22</span>, <span class="py-num">30</span>], <span class="py-str">"city"</span>: [<span class="py-str">"Riyadh"</span>, <span class="py-str">"Jeddah"</span>, <span class="py-str">"Dammam"</span>] } df = pd.DataFrame(data) <span class="py-func">print</span>(df) </code> </div> <button class="try-btn" onclick="runCode('df-from-dict')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> كل مفتاح في القاموس أصبح عمودًا، وكل قائمة أصبحت قيم هذا العمود في الصفوف. </p> </section> <!-- Section 3: قراءة ملف CSV --> <section class="section-card" style="border-right-color:#f97316;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-orange-100 text-orange-700">📥</span> قراءة البيانات من ملف CSV باستخدام read_csv </h2> <p class="text-xl text-gray-700 mb-4"> أكثر صيغة شائعة للبيانات هي <strong>CSV</strong> (قيم مفصولة بفواصل). Pandas تجعل قراءتها في سطر واحد فقط: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('df-read-csv', this)">نسخ</button> <code id="df-read-csv"> <span class="py-import">import</span> pandas <span class="py-func">as</span> pd <span class="py-comment"># يفترض وجود ملف users.csv في نفس المجلد</span> df = pd.read_csv(<span class="py-str">"users.csv"</span) <span class="py-comment"># عرض أول 5 صفوف</span> <span class="py-func">print</span>(df.head()) </code> </div> <button class="try-btn" onclick="runCode('df-read-csv')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> الدالة <strong>head()</strong> مفيدة جدًا لعرض عينة من البيانات بدون إغراق الشاشة. </p> </section> <!-- Section 4: استكشاف DataFrame --> <section class="section-card" style="border-right-color:#6366f1;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-indigo-100 text-indigo-700">🔎</span> أوامر مهمة لاستكشاف الجدول </h2> <p class="text-xl text-gray-700 mb-4"> بعد تحميل البيانات، نحتاج لفهم شكلها ومعلوماتها الأساسية بسرعة: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('df-inspect', this)">نسخ</button> <code id="df-inspect"> <span class="py-import">import</span> pandas <span class="py-func">as</span> pd data = { <span class="py-str">"name"</span>: [<span class="py-str">"Ali"</span>, <span class="py-str">"Sara"</span>, <span class="py-str">"Omar"</span>, <span class="py-str">"Mona"</span>], <span class="py-str">"age"</span>: [<span class="py-num">25</span>, <span class="py-num">22</span>, <span class="py-num">30</span>, <span class="py-num">28</span>], <span class="py-str">"salary"</span>: [<span class="py-num">8000</span>, <span class="py-num">7500</span>, <span class="py-num">9000</span>, <span class="py-num">8500</span>] } df = pd.DataFrame(data) <span class="py-comment"># أول 3 صفوف</span> <span class="py-func">print</span>(df.head(<span class="py-num">3</span>)) <span class="py-comment"># معلومات عن الأعمدة وأنواعها وعدد القيم</span> df.info() <span class="py-comment"># إحصائيات وصفية للأعمدة الرقمية</span> <span class="py-func">print</span>(df.describe()) </code> </div> <button class="try-btn" onclick="runCode('df-inspect')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> <strong>info()</strong> تعطيك نظرة عامة على الأعمدة، و<strong>describe()</strong> تعطيك إحصاءات مثل المتوسط، الانحراف المعياري، القيم الكبرى والصغرى... إلخ. </p> </section> <!-- Section 5: اختيار أعمدة وصفوف --> <section class="section-card" style="border-right-color:#8b5cf6;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-purple-100 text-purple-700">🎯</span> اختيار أعمدة وصفوف من DataFrame </h2> <p class="text-xl text-gray-700 mb-4"> يمكن التعامل مع DataFrame مثل جدول Excel: نختار أعمدة أو صفوف معينة: </p> <div class="code-block"> <button class="copy-btn" onclick="copyCode('df-select', this)">نسخ</button> <code id="df-select"> <span class="py-import">import</span> pandas <span class="py-func">as</span> pd data = { <span class="py-str">"name"</span>: [<span class="py-str">"Ali"</span>, <span class="py-str">"Sara"</span>, <span class="py-str">"Omar"</span>, <span class="py-str">"Mona"</span>], <span class="py-str">"age"</span>: [<span class="py-num">25</span>, <span class="py-num">22</span>, <span class="py-num">30</span>, <span class="py-num">28</span>], <span class="py-str">"city"</span>: [<span class="py-str">"Riyadh"</span>, <span class="py-str">"Jeddah"</span>, <span class="py-str">"Riyadh"</span>, <span class="py-str">"Dammam"</span>] } df = pd.DataFrame(data) <span class="py-comment"># اختيار عمود واحد</span> <span class="py-func">print</span>(df[<span class="py-str">"name"</span>]) <span class="py-comment"># اختيار عدة أعمدة</span> <span class="py-func">print</span>(df[[<span class="py-str">"name"</span>, <span class="py-str">"city"</span>]]) <span class="py-comment"># اختيار الصف الأول (بالفهرس 0)</span> <span class="py-func">print</span>(df.iloc[<span class="py-num">0</span>]) <span class="py-comment"># اختيار أول صفين</span> <span class="py-func">print</span>(df.iloc[<span class="py-num">0</span>:<span class="py-num">2</span>]) </code> </div> <button class="try-btn" onclick="runCode('df-select')">▶️ تجربة الكود</button> <p class="text-xl text-gray-700 mt-4"> لاحقًا ستستخدم هذه الأساليب مع التصفية (filtering) لتنظيف البيانات وتحليلها. </p> </section> <!-- Section 6: تمرين عملي --> <section class="section-card" style="border-right-color:#ec4899;"> <h2 class="text-3xl font-bold mb-6 flex items-center"> <span class="icon-box bg-pink-100 text-pink-700">🧪</span> تمرين عملي (مرقّم) </h2> <div class="bg-pink-50 p-6 rounded-lg border border-pink-200 text-right"> <h3 class="text-pink-900 font-bold mb-4 text-2xl">المطلوب منك:</h3> <ol class="space-y-4 text-gray-700 text-xl list-decimal pr-6"> <li> أنشئ DataFrame يحتوي على بيانات 5 طلاب: <br> الأعمدة: <strong>name, age, grade, city</strong>. </li> <li> استخدم <code>head()</code> لعرض أول 3 صفوف فقط. </li> <li> اطبع معلومات الجدول باستخدام <code>info()</code>، ثم اطبع الإحصائيات الوصفية للأعمدة الرقمية باستخدام <code>describe()</code>. </li> <li> اختر عمود <strong>name</strong> فقط، ثم اختر العمودين <strong>name</strong> و <strong>grade</strong>. </li> <li> استخدم <code>iloc</code> لاختيار: <ul class="list-disc pr-6 mt-2"> <li>الصف الأول فقط.</li> <li>آخر صفين في الجدول.</li> </ul> </li> </ol> </div> </section> <footer class="text-center text-gray-400 text-lg mt-8 pb-8"> الدرس 9.3 — DataFrames: قراءة وعرض البيانات </footer> </div> <script> function copyCode(elementId, btnElement=null) { const text = document.getElementById(elementId).innerText; const textarea = document.createElement('textarea'); textarea.value = text; document.body.appendChild(textarea); textarea.select(); document.execCommand('copy'); textarea.remove(); if (btnElement) { const original = btnElement.innerText; btnElement.innerText = "تم النسخ!"; btnElement.classList.add('copied'); setTimeout(() => { btnElement.innerText = original; btnElement.classList.remove('copied'); }, 1500); } } function runCode(elementId) { copyCode(elementId); window.open("/python/trypython", "_blank"); } </script> </body> </html> حفظ إلغاء حفظ وإضافة جديد