0%
Jupyter: دفاتر Notebook وJupyterLab لعلم البيانات

Jupyter: دفاتر Notebook وJupyterLab لعلم البيانات

دليل شامل لـ Jupyter Notebook وJupyterLab: التثبيت، وإعداد الـ kernels، والأوامر السحرية، والإضافات، وأفضل الممارسات لعلم البيانات باستخدام Python.

I

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

نبذة عن InSkillCoach

خبير في التدريب والتقنيات

مدرّب متخصص في التقنيات المتقدمة والذكاء الاصطناعي، تدعمه شركة GNeurone Inc.

الشهادات:

  • AWS Certified Solutions Architect – Professional
  • شهادات Google Cloud
  • Microsoft Certified: DevOps Engineer Expert
  • Certified Kubernetes Administrator (CKA)
  • CompTIA Security+
1.9k
255

التعليقات

التعليقات مدعومة عبر GitHub Discussions

سجّل الدخول باستخدام GitHub للمشاركة في النقاش

تم نسخ الرابط!