Jupyter: دفاتر Notebook وJupyterLab لعلم البيانات
دليل شامل لـ Jupyter Notebook وJupyterLab: التثبيت، وإعداد الـ kernels، والأوامر السحرية، والإضافات، وأفضل الممارسات لعلم البيانات باستخدام Python.
InSkillCoach
Jupyter: دفاتر Notebook وJupyterLab لعلم البيانات
يُعدّ Jupyter Notebook الأداة المفضلة لدى علماء البيانات والباحثين في Python. فهو يجمع بين الشيفرة القابلة للتنفيذ والتوثيق بصيغة Markdown والتصورات المرئية والنتائج النصية في مستند تفاعلي واحد. أما JupyterLab، وهي الواجهة الحديثة لـ Jupyter، فتوسّع هذه التجربة بإضافة مدير للملفات وطرفية مدمجة وقابلية كاملة للتوسّع. يوضح لك هذا الدليل كيفية تثبيت Jupyter وإعداده وإتقانه لتطوير تحليلات بياناتك وتوثيقها.
1. التثبيت والإعداد
التثبيت باستخدام pip
# Installation de base
# pip install jupyter
# Installation avec support complet
# pip install jupyterlab
# Vérifier l'installation
# jupyter --version
# jupyter kernelspec list
يُوصى بالتثبيت عبر pip داخل بيئة افتراضية مخصصة، وذلك لتجنّب تعارضات الاعتماديات.
# Créer un environnement virtuel
# python -m venv env_jupyter
# source env_jupyter/bin/activate # Sur Linux/macOS
# env_jupyter\Scripts\activate # Sur Windows
# Installer Jupyter dans cet environnement
# pip install jupyterlab numpy pandas matplotlib
البيئات الافتراضية والـ Kernels
يجب أن يكون لكل بيئة Python الـ kernel الخاص بها في Jupyter. والـ kernel هو العملية التي تنفّذ الشيفرة في دفتر Notebook الخاص بك.
# Créer un environnement pour data science
# python -m venv ds_env
# source ds_env/bin/activate
# pip install ipykernel
# Enregistrer ce kernel auprès de Jupyter
# python -m ipykernel install --user --name ds_env --display-name "Python (DS)"
# Créer un autre environnement pour du développement web
# python -m venv web_env
# source web_env/bin/activate
# pip install ipykernel flask django
# Enregistrer ce kernel
# python -m ipykernel install --user --name web_env --display-name "Python (Web)"
# Lister tous les kernels disponibles
# jupyter kernelspec list
بعد تسجيل الـ kernels، يمكنك التبديل بينها في Jupyter عبر قائمة «Kernel» أو من أسفل يمين الدفتر.
2. Notebook مقابل JupyterLab
Notebook الكلاسيكي
Jupyter Notebook واجهة بسيطة وخفيفة. يتم تشغيله بالأمر:
# jupyter notebook
# Cette commande ouvre une interface web à http://localhost:8888
مزايا Notebook الكلاسيكي:
- خفيف ويستهلك موارد قليلة
- بسيط وقليل المشتتات
- سريع الإقلاع
JupyterLab
JupyterLab هو الجيل التالي من Jupyter، بواجهة معيارية وقابلة للتوسّع.
# jupyter lab
# Cette commande ouvre JupyterLab à http://localhost:8888
مزايا JupyterLab:
- عدة ملفات مفتوحة في تبويبات
- مدير ملفات مدمج على اليسار
- طرفية ووحدة تحكم (console) مدمجتان
- عارض صور أصلي
- قابلية التوسّع عبر إضافات TypeScript/JavaScript
- شريط جانبي قابل للطي
3. بنية الخلايا
خلية الشيفرة
تحتوي خلية الشيفرة على شيفرة Python قابلة للتنفيذ. تُنفَّذ بالضغط على Ctrl+Entrée (أو Cmd+Entrée على Mac).
# Cellule de code
import numpy as np
data = np.array([1, 2, 3, 4, 5])
moyenne = data.mean()
print(f"Moyenne : {moyenne}")
# Affichage : Moyenne : 3.0
يتحدد ترتيب التنفيذ بالرقم الموجود بين قوسين معقوفين: [1] و[2] وهكذا. يمكنك إعادة تنفيذ خلية قدر ما تشاء، وعندئذٍ يتغير ترتيب التنفيذ.
خلية Markdown
تتيح لك خلايا Markdown توثيق تحليلاتك بنص منسّق وعناوين وقوائم ومعادلات رياضية.
# Titre principal
## Sous-titre
Ceci est un paragraphe contenant du texte en **gras** et en *italique*.
- Élément 1
- Élément 2
- Élément 3
### Formules LaTeX
Voici une formule inline : $y = mx + b$
Et une formule centrée :
$$\sum_{i=1}^{n} x_i = \frac{n(n+1)}{2}$$
نصيحة: اضغط على Ctrl+Entrée لتنفيذ (عرض) خلية Markdown، أو Esc ثم M لتحويل خلية شيفرة إلى Markdown.
4. اختصارات لوحة المفاتيح الأساسية
| الاختصار | الوضع | الإجراء |
|---|---|---|
Ctrl+Entrée | تحرير/أوامر | تنفيذ الخلية |
Shift+Entrée | تحرير | التنفيذ والانتقال إلى الخلية التالية |
Alt+Entrée | تحرير | التنفيذ وإدراج خلية جديدة |
Esc | تحرير | الانتقال إلى وضع الأوامر |
Entrée | أوامر | الانتقال إلى وضع التحرير |
A | أوامر | إدراج خلية أعلاه |
B | أوامر | إدراج خلية أدناه |
D D | أوامر | حذف الخلية (الضغط على D مرتين) |
M | أوامر | التحويل إلى Markdown |
Y | أوامر | التحويل إلى Code |
Ctrl+Shift+P | أوامر | لوحة الأوامر |
H | أوامر | عرض مساعدة الاختصارات |
5. الأوامر السحرية
الأوامر السحرية (Magic Commands) اختصارات خاصة تبدأ بالرمز % (للسطر) أو %% (للخلية). وهي تسهّل تصحيح الأخطاء والتحسين.
%timeit: قياس زمن التنفيذ
# Mesurer le temps d'une ligne
%timeit sum(range(100))
# Résultat : 1.25 µs ± 41.2 ns per loop (mean ± std. dev. of 7 runs)
%%time: قياس زمن خلية كاملة
%%time
# Calcul complet de la cellule
resultat = sum(range(1_000_000))
print(resultat)
# CPU times: user 23.4 ms, sys: 1.23 ms, total: 24.6 ms
# Wall time: 25.1 ms
%matplotlib inline
لعرض رسوم Matplotlib مباشرة داخل الدفتر (إلزامي قبل أي استخدام لـ Matplotlib).
%matplotlib inline
import matplotlib.pyplot as plt
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y)
plt.xlabel("X")
plt.ylabel("Y")
plt.title("Courbe simple")
plt.show()
# Le graphique s'affiche directement sous la cellule
%run: تنفيذ ملف Python خارجي
# Supposons que vous ayez un fichier helper.py
# contenant des fonctions réutilisables
%run helper.py
# Les fonctions et variables du fichier sont maintenant disponibles
print(ma_fonction(5))
%pip: تثبيت الحزم مباشرة داخل الدفتر
# Installer une bibliothèque sans quitter le notebook
%pip install requests
import requests
# Utiliser la bibliothèque immédiatement
%pwd و%cd: التنقل في نظام الملفات
%pwd
# Affiche le répertoire courant
# /Users/utilisateur/projects/analysis
%cd ../data
# Change le répertoire courant
%ls
# Liste les fichiers du répertoire courant
6. العرض الغني والمخرجات
يستطيع Jupyter عرض ما هو أكثر بكثير من النص: صور وجداول DataFrame منسّقة وHTML وLaTeX وغيرها.
from IPython.display import display, HTML, Image, DataFrame
import pandas as pd
# Afficher du HTML
display(HTML("<h3 style='color:red;'>Attention!</h3>"))
# Résultat : Attention! (en rouge et gros)
# Afficher une image depuis une URL
display(Image(url="https://example.com/image.png"))
# DataFrame Pandas avec formatage automatique
df = pd.DataFrame({
'Nom': ['Alice', 'Bob', 'Charlie'],
'Age': [25, 30, 35],
'Ville': ['Paris', 'Lyon', 'Marseille']
})
display(df)
# Affiche un tableau formaté et interactif
7. الإضافات والملحقات المفيدة
تمتلك JupyterLab منظومة غنية من الإضافات لتحسين التجربة.
إدارة الإضافات
# Lister les extensions installées
# jupyter labextension list
# Installer une extension
# jupyter labextension install @jupyter-widgets/jupyterlab-manager
# Vérifier les extensions depuis la ligne de commande
# pip install jupyterlab_execute_time
# pip install jupyterlab-code-formatter
# pip install jupyterlab-lsp
الإضافات الشائعة
| الإضافة | الفائدة |
|---|---|
jupyterlab-execute-time | تعرض زمن تنفيذ كل خلية |
jupyterlab-code-formatter | تنسّق شيفرة Python (Black وAutopep8 وغيرهما) |
jupyterlab-lsp | دعم خوادم Language Server Protocol (إكمال تلقائي متقدم) |
ipywidgets | عناصر واجهة تفاعلية (منزلقات وأزرار وغيرها) |
jupyterlab-git | تكامل Git مباشرة داخل JupyterLab |
8. التصدير والتحويل باستخدام nbconvert
ملف Notebook بصيغة .ipynb ليس سوى ملف JSON. يمكنك تصدير عملك إلى صيغ أخرى.
# Exporter en PDF (nécessite pandoc et LaTeX)
# jupyter nbconvert --to pdf notebook.ipynb
# Exporter en HTML statique
# jupyter nbconvert --to html notebook.ipynb
# Résultat : notebook.html
# Exporter en Python pur (cellules code uniquement)
# jupyter nbconvert --to python notebook.ipynb
# Résultat : notebook.py
# Exporter en Markdown
# jupyter nbconvert --to markdown notebook.ipynb
# Exporter en slides (révélation.js)
# jupyter nbconvert --to slides notebook.ipynb --post serve
9. إدارة إصدارات الدفاتر باستخدام Git
من المعقّد إدارة إصدارات ملفات .ipynb باستخدام Git. توجد عدة استراتيجيات:
المشكلة الأصلية
// notebook.ipynb est un JSON avec des sorties, métadonnées, etc.
{
"cells": [...],
"metadata": {...},
"nbformat": 4,
"nbformat_minor": 5
}
// Les diffs sont illisibles, les fusions sont impossibles
الحل الأول: تنظيف المخرجات قبل الإيداع (commit)
# nbstripout : enlève les sorties et métadonnées superflues
# pip install nbstripout
# git config filter.strip-notebook.clean "nbstripout"
# Ajouter à .gitattributes :
# *.ipynb filter=strip-notebook
الحل الثاني: الاحتفاظ بشيفرة Python إلى جانب الدفتر
# Exporter régulièrement en Python
# jupyter nbconvert --to python notebook.ipynb
# Versionner notebook.py au lieu de notebook.ipynb
# Les diffs sont clairs et les fusions faciles
الحل الثالث: استخدام Jupyter Book أو Quarto
للمشاريع الجادة، انتقل إلى Jupyter Book (.md + شيفرة) أو Quarto (صيغة عامة)، فهما أنسب لإدارة الإصدارات.
10. أفضل الممارسات
- قسم واحد = دفتر واحد: احتفظ بدفتر واحد لكل موضوع تحليل. فالدفاتر الطويلة جدًا يصعب التنقل فيها.
- خلايا قصيرة ومركّزة: ينبغي أن تؤدي كل خلية مهمة واحدة فقط. فهذا يسهّل تصحيح الأخطاء وإعادة الاستخدام.
- وثّق باستخدام Markdown: لا تتردد في كتابة خلايا Markdown تشرح خطواتك. فالدفاتر تُستخدم أيضًا لسرد قصة.
- نظّف قبل المشاركة: احذف خلايا الاختبار والمتغيرات المؤقتة والمخرجات القديمة. وصدّر العمل أو أعد تشغيله بالكامل قبل التسليم.
- استخدم متغيرات بأسماء واضحة:
df_sales_2024بدلًا منdf1. - احفظ بانتظام: يحفظ Jupyter تلقائيًا، لكن الحفظ اليدوي (
Ctrl+S) لا يضر. - أعد تهيئة الـ kernel قبل المشاركة: من قائمة «Kernel» ← «Restart & Run All» للتحقق من أن كل شيء يُنفَّذ بالترتيب.
11. بدائل ومكمّلات
| الأداة | حالة الاستخدام |
|---|---|
| VS Code + Jupyter | إن كنت تفضّل VS Code على واجهة الويب |
| Google Colab | دفاتر مجانية في السحابة، مع GPUs/TPUs مجانية |
| Kaggle Notebooks | مسابقات علم البيانات والدفاتر التعاونية |
| Pluto.jl | دفاتر تفاعلية تفاعلية الاستجابة (reactive) للغة Julia (مفهوم مشابه) |
| Observable | دفاتر JavaScript لتصور البيانات على الويب |
الخاتمة
أصبح Jupyter Notebook وJupyterLab أداتين لا غنى عنهما في منظومة Python لعلم البيانات والتعلم الآلي والبحث. فجمعهما بين الشيفرة القابلة للتنفيذ والتوثيق والتصور التفاعلي يجعلهما البيئة المثالية لاستكشاف البيانات ونمذجة النماذج الأولية ونقل نتائجك إلى الآخرين. وبإتقان الأوامر السحرية واختصارات لوحة المفاتيح والإضافات، سترتفع إنتاجيتك ارتفاعًا ملحوظًا. ولا تنسَ أن Jupyter ليس أداة إنتاج: فبالنسبة إلى خطوط تحليل متينة، فضّل نصوص Python البرمجية المنظَّمة والمختبَرة والمُدارة إصداراتها بشكل سليم.
نبذة عن InSkillCoach
خبير في التدريب والتقنيات
مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.
الشهادات:
- AWS Certified Solutions Architect – Professional
- شهادات Google Cloud
- Microsoft Certified: DevOps Engineer Expert
- Certified Kubernetes Administrator (CKA)
- CompTIA Security+
التعليقات
التعليقات مدعومة عبر GitHub Discussions
سجّل الدخول باستخدام GitHub للمشاركة في النقاش