ترفندهای ژوپیتر نوت بوک — راهنمای کاربردی

۱۷۵۵ بازدید
آخرین به‌روزرسانی: ۱۰ اردیبهشت ۱۴۰۲
زمان مطالعه: ۷ دقیقه
ترفندهای ژوپیتر نوت بوک — راهنمای کاربردی

در این مطلب، ترفندهای ژوپیتر نوت بوک بیان شده است. پیش از این، در مطلب «ژوپیتر نوت بوک (Jupyter Notebook) و افزونه های آن — راهنمای کاربردی» به افزونه‌های گوناگون ژوپیتر نوت‌بوک، به ویژه مواردی که در حوزه «علم داده» (Data Science) و «یادگیری ماشین» (Machine Learning) بسیار کاربردی هستند، پرداخته شد. در ادامه، نکات، افزونه‌ها و ترفندهایی که ضمن کار با «ژوپیتر نوت بوک» (Jupyter Notebook) کاربردی هستند، مورد بررسی قرار گرفته است.

Gist

Gist یک راهکار ساده برای به اشترا‌ک‌گذاری «تکه-کدهایی» (اسنیپت‌ها | Snippets) است که توسط «گیت‌هاب» (Github) میزبانی می‌شوند. این مورد به کاربر این امکان را می‌دهد تا یک Gist از کدهای موجود در یک سلول ژوپیتر نوت‌بوک، بسازد.

فرض می‌شود که کاربر یک اکانت گیت‌هاب دارد. ابتدا باید Gist را نصب کند. افرادی که از brew استفاده می‌کنند، می‌توانند دستورات زیر را در ترمینال اجرا کنند.

1brew update
2brew outdated
3brew upgrade
4brew cleanup
5brew install gist

اکنون، کاربر نیاز به آن دارد که وارد گیت‌هاب شود (Github).

1gist --login
2Obtaining OAuth2 access_token from GitHub.
3GitHub username: your-github-name
4GitHub password: your-github-pw
52-factor auth code:
6Success! https://github.com/settings/tokens

Gist به کاربر این امکان را می‌دهد که محتوا را از یک فایل یا کلیپ‌بورد آپلود و یک نام فایل یا توضیحات به آن اضافه کند. کد زیر را باید در یکی از سلول‌های ژوپیتر نوت بوک وارد کرد. کاربر نیاز به تغییر دادن myfile.py و my description دارد.

1%%bash
2gist -P -f myfile.py -d "my description"

اکنون، کاربر باید کدهای یک سلول را که می‌خواهد به Gist بدهد، به کلیپ‌بورد بفرستد و در واقع کپی کند (در گنو/لینوکس و ویندوز CTRL+C و در مک ⌘C). با اجرای سلول بالا، محتوای کلیپ‌بورد به Gist منتقل خواهد شد. در نهایت، URL مربوط به Gist، به کاربر بازگردانده می‌شود.

https://gist.github.com/b9e4b509cb6ed80631b617b53a65f0b9

هنگامی که کاربر قصد دارد Gist خود را به روز رسانی کند، نیاز به استفاده از نام محلی فایل خود دارد. در ادامه این مطلب، دیگر ترفندهای ژوپیتر نوت بوک مورد بررسی قرار می‌گیرد.

1%%bash
2gist -u your-gist-id your-filename-with-extension

استفاده از متدهای display()‎ و print()‎ برای چارچوب داده

IPython.display در حال حاضر در ژوپیتر نوت‌بوک نصب شده است. اگر کاربر یک عنصر را چاپ کند، نیازی به استفاده از متد print()‎ ندارد. اگر هدف چاپ کردن بیش از یک عنصر باشد، متد display()‎ خروجی‌های بهتری را ارائه می‌کند.

این یکی از ترفندهای ژوپیتر نوت بوک است که برای «دانشمندان علم داده» (Data Scientist)، کاربردی خواهد بود.

1import pandas as pd
2df = pd.DataFrame(
3    [
4        [48,22,33,47],
5        [35,36,42,27]
6    ],
7    index=["Male","Female"],
8    columns=["Balck","White","Red","Blue"])
9print(df)
10display(df)
11df

خروجی بدون استفاده از دستور print()‎

اگر کاربر تمایلی به تایپ کردن عبارت print()‎ برای همه خروجی‌ها ندارد، می‌تواند از روشی که در ادامه بیان شده است، استفاده کند. کاربران «کوندا» (Conda) باید کد زیر را در سلول وارد کنند.

این یکی از ترفندهای ژوپیتر نوت بوک است که برای برنامه‌نویسانی که حوصله تایپ کردن زیاد را ندارند، کاربردی خواهد بود.

1from IPython.core.interactiveshell import InteractiveShell
2InteractiveShell.ast_node_interactivity = "all"

اکنون، قطعه کد بالا تست می‌شود. ابتدا، کدهای زیر وارد می‌شوند.

1testvar=2
2testvar
3testvar

خروجی به صورت زیر است.

2
2

کاربرانی که ژوپیتر نوت بوک را با PIP نصب کرده‌اند، می‌توانند این مورد را بدون استفاده از کد بالا، به عنوان حالت پیش‌فرض قرار دهند. ابتدا باید ipython/profile_default/ipython_config.py‎./~ را با یک ویرایشگر باز و متن زیر را در آن چسباند (Paste).

1c = get_config()
2c.InteractiveShell.ast_node_interactivity = "all"

سپس، باید ژوپیتر نوت بوک را بازنشانی (Restart) کرد تا تغییرات به طور کامل اعمال شوند.

دستورات بش بدون !

کاربر می‌تواند از دستورات بش، بدون ! استفاده کند. از جمله مثال‌هایی که در این رابطه می‌توان بیان کرد، موارد زیر هستند.

1ls -al
2pwd
3cat Readme.md
4man ls
5mkdir newfolder

دیگر کلیدهای میان‌بر مفید و کاربردی در ژوپیتر نوت بوک

تابعکلید میانبر
شکستن (جداسازی) یک سلول- + CTRL + SHIFT
ادغام سلول‌هاSHIFT + M
حذف یک سلولDD
تعریف تیترهای H3 ،H2 ،H1 و H4۱، ۲، ۳، ۴

افزونه‌های Nbextensions

پیشنهاد می‌شود که کاربر، پیش از استفاده از افزونه‌هایی که در ادامه بیان خواهند شد، Nbextensions را نصب کند. بسته jupyter_contrib_nbextensions حاوی مجموعه‌ای از بسته‌های غیر رسمی ساخته شده به وسیله جامعه کاربران ژوپیتر نوت بوک است که عملکرد ژوپیتر نوت بوک را بهبود می‌بخشند.

روش نصب jupyter_contrib_nbextensions در ادامه بیان شده است. برای نصب افزونه jupyter_contrib_nbextensions در ژوپیتر نوت بوک، سه گام وجود دارد. ابتدا باید بسته pip پایتون نصب شود. سپس، خود افزونه‌های نوت بوک باید به پوشه داده ژوپیتر کپی شوند. در نهایت، افزونه‌های نصب شده نوت بوک را می‌توان با استفاده از دستورات توکار ژوپیتر و یا به راحتی، با بهره‌گیری از افزونه سرور jupyter_nbextensions_configurator نصب کرد که به عنوان یک وابستگی این مخزن، نصب شده است.  گام نصب بسته پایتون برای انجام نصب بدون مشکل با عناصر اضافی مانند قالب‌های pre-/postprocessors ،nbconvert  و exporters الزامی است.

۱. نصب بسته پایتون

در ادامه، گام‌های مربوط به نصب بسته پایتون بیان شده است.

PIP

همه nbextensions موجود در مخزن به عنوان بخشی از یک بسته پایتون فراهم شده‌اند که به صورت معمول با استفاده از pip و یا setup.py قابل نصب هستند. برای نصب نسخه کنونی از PyPi، کافی است که کد زیر نوشته شود.

pip install jupyter_contrib_nbextensions

به طور جایگزین، می‌توان از انشعاب اصلی مخزن، نصب را انجام داد.

pip install https://github.com/ipython-contrib/jupyter_contrib_nbextensions/tarball/master

همه گزینه‌های متداول نصب اعمال می‌شود، برای مثال، می‌توان از پرچم (Flag | فلگ) upgrade‎-- برای انجام یک ارتقا یا e- برای یک نصب قابل ویرایش استفاده کرد.

کوندا

بسته‌های کوندا برای افزونه‌های نوت‌بوک و jupyter_nbextensions_configurator از conda-forge در دسترس هستند. کاربر می‌تواند هر دو را با استفاده از دستور زیر نصب کند.

1conda install -c conda-forge jupyter_contrib_nbextensions

این دستور به طور خودکار فایل‌های «جاوا اسکریپت» (JavaScript | JS) و CSS را (با استفاده از jupyter contrib nbextension install --sys-prefix) نصب می‌کند، بنابراین گام دوم نصب که در ادامه آمده است، قابل چشم‌پوشی محسوب می‌شود.

نصب از یک مخزن کلون شده

کاربر می‌تواند نصب را از یک مخزن کلون شده نیز انجام دهد که برای توسعه می‌تواند مفید واقع شود. کاربر می‌تواند مخزن را با استفاده از دستور زیر کلون کند.

1git clone https://github.com/ipython-contrib/jupyter_contrib_nbextensions.git

سپس، باید یک نصب فایل ویرایش از pip را به صورت زیر انجام داد.

1pip install -e jupyter_contrib_nbextensions

۲. نصب فایل‌های جاوا اسکریپت و CSS

در این گام، فایل‌های جاوا اسکریپت و CSS مربوط به nbextensions در پوشه جستجوی سرور ژوپیتر کپی و برخی از فایل‌های پیکربندی (Config) ویرایش می‌شوند.

یک زیردستور jupyter در ادامه ارائه شده است.

1jupyter contrib nbextension install --user

این دستور، دو کار انجام می‌دهد: نصب فایل‌های nbextension و ویرایش فایل‌های پیکربندی nbconvert. بخش اول اساسا یک پوشش (Wrapper) حول محور jupyter nbextension install فراهم شده توسط نوت‌بوک است و فایل‌های جاوا اسکریپت و CSS مربوط را به پوشه داده مناسب کپی می‌کند. بخش دوم، فایل‌های پیکربندی jupyter_nbconvert_config.json و jupyter_notebook_config.json را به صورتی که در ادامه و در قسمت گزینه‌ها بیان شده است، ویرایش می‌کند. این دستور می‌تواند بیشتر گزینه‌های فراهم شده در ژوپیتر را شامل مواردی که در ادامه بیان شده‌اند، بگیرد.

  • user--: برای نصب در پوشه‌های خانگی ژوپیتر کاربر است.
  • -system--: برای انجام نصب در پوشه‌های ژوپیتر در گستره سیستم است.
  • --sys-prefix برای نصبت در sys.prefix پایتون و نمونه‌ها در محیط مجازی است.
  • symlink-- برای symlink کردن nbextensions به جای کپی کردن هر فایل است (برای پلتفرم‌های غیر ویندوزی توصیه شده است).
  • -debug--: برای داشتن خروجی‌های کلامی‌تر مورد استفاده قرار می‌گیرد.
  • علاوه بر این موارد، دو پرچم (Flag) گزینه‌های دیگر فراهم شده‌اند تا فقط عملیات config-editing یا صرفا file-copy انجام شود.
  • only-files--: برای ویرایش فایل‌های پیکربندی بدون ویرایش کردن هر فایل پیکربندی مورد استفاده قرار می‌گیرد.
  • only-config--: برای ویرایش فایل‌های پیکربندی بدون کپی‌کردن/سیم‌لینکینگ هر فایل nbextension مورد استفاده قرار می‌گیرد. این کار، موجب ویرایش فایل‌هایی که در ادامه می‌آیند در پوشه پیکربندی ژوپیتر نوت بوک می‌شود.
    • jupyter_nbconvert_config.json برای استفاده از برخی از کلاس‌های فراهم شده در ماژول پایتون jupyter_contrib_nbextensions.nbconvert_support است.
    • jupyter_notebook_config.json برای فعال کردن افزونه سرور (serverextension) است.

در نهایت، فلگ گزینه perform-running-check-- به منظور جلوگیری از اقدام نصب در صورتی است که به نظر برسد سرور نوت‌بوک در حال حاضر در حال اجرا است (به طور پیش‌فرض، نصب همچنان انجام خواهد شد، حتی اگر یک سرور نوت‌بوک در حال اجرا به نظر برسد). به طور مشابه، یک دستور uninstall نیز فراهم شده است که همه فایل‌های nbextension را از پوشه‌های ژوپیتر حذف می‌کند.

۳. فعال/غیرفعال کردن افزونه‌ها

برای استفاده از یک nbextension، کاربر نیاز به فعال‌سازی آن دارد. این کار به رابط نوت‌بوک می‌گوید که آن را بارگذاری کند. برای انجام این کار، می‌توان از دستور فرعی ژوپیتر استفاده کرد که در ادامه آمده است.

1jupyter nbextension enable <nbextension require path>

برای مثال:

1jupyter nbextension enable codefolding/main

برای غیر فعال کردن مجدد افزونه، می‌توان از دستور زیر استفاده کرد.

1jupyter nbextension disable <nbextension require path>

به طور جایگزین و البته ساده‌تر، می‌توان از افزونه سرور jupyter_nbextensions_configurator استفاده کرد که به عنوان وابستگی برای این مخزن نصب شده است و برای فعال و غیر فعال کردن nbextensions منحصر به فرد، همچون پیکربندی گزینه‌های آن‌ها، قابل استفاده است. سپس، می‌توان سربرگ nbextensions را روی صفحه نوت‌بوک درخت (داشبورد/داشبورد) فعال کرد تا امکان پیکربندی nbextensions فراهم شود. در آنجا، کاربر به داشبوردی دسترسی دارد که افزونه‌ها با استفاد از چک‌باکس‌ها قابل فعال/غیرفعال شدن هستند. علاوه بر آن، مستندات کوتاهی برای هر افزونه نمایش داده می‌شود و گزینه‌های پیکربندی ارائه می‌شوند.

۴. نصب‌های پیچیده‌تر

اغلب nbextensions در اینجا، باید به خوبی با jupyterhub کار کنند (زیرا jupyterhub  برای هر کاربر منحصر به فرد، سرورهای معمول نوت‌بوک را می‌سازد)، اما با jupyterlab کار نخواهد کرد (زیرا چارچوب جاوا اسکریپت jupyterlab برای نوت‌بوک متفاوت و همچنان با سرعت، در حال توسعه است).

Move Selected Cells

پیشنهاد می‌شود که کاربر Move Selected Cells را با فعال کردن آن از سربرگ Nbextensions نصب کند.

این ترفند از مجموعه ترفندهای ژوپیتر نوت بوک، هنگامی که کاربر سلول‌ها را سازمان‌دهی می‌کند، بسیار مفید واقع می‌شود. می‌توان یک سلول یا سلول‌های انتخاب شده را با گزینه Option/Alt + Up/Down جا به جا کرد.

Tabnine

jupyter-tabnine امکان استفاده از تکمیل خودکار کد با استفاده از «یادگیری عمیق» (Deep Learning)، را فعال می‌کند.

با استفاده از دستورات زیر، می‌توان آن را نصب کرد.

1pip install jupyter-tabnine
2jupyter nbextension install --py jupyter_tabnine
3jupyter nbextension enable --py jupyter_tabnine
4jupyter serverextension enable --py jupyter_tabnine

گاهی نیاز است که ژوپیتر نوت بوک را چندین بار بازنشانی کرد تا دستورات بالا به درستی عمل کنند. کاربر می‌تواند Tabnine را در عمل، در انیمیشین زیر مشاهده کند.

اگر نوشته بالا برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

^^

بر اساس رای ۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
Towards Data ScienceJupyter Contrib Nbextensions
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *