«نتفلیکس» (Netflix) برای یکی از پروژه‌های خود که قصد دارد طی آن محتوای سفارشی‌سازی شده را برای بیش از ۱۳۰ میلیون بازدیدکننده خود ارائه کند از «علم داده» (Data Science) و «یادگیری ماشین» (Machine Learning) بهره می‌برد. یکی از راهکارهای قابل توجهی که «دانشمندان داده» (Data Scientist) و «مهندسان داده» (Data Engineer) در نتفلیکس با بهره‌گیری از آن به تعامل با داده‌های خود می‌پردازند استفاده از «ژوپیتر نوت‌بوک» (Jupyter Notebook) است. ژوپیتر نوت‌بوک، امکان استفاده مشارکتی، گسترده، مقیاس‌پذیر و قابل بازتولید را فراهم می‌کند. هنگامی که صحبت از ساخت «نمونه اولیه» (prototyping) سریع و تحلیل اکتشافی می‌شود، ژوپیتر نوت‌بوک برای بسیاری از افراد یک پلتفرم بالفعل واقعی به شمار می‌آید. اگرچه، بسیاری از قابلیت‌های ژوپیتر از نظرها دورمانده است. در ادامه، به بررسی برخی از ویژگی‌های ژوپیتر پرداخته می‌شود که می‌تواند بهره‌وری را ضمن کار با این پلتفرم افزایش دهد.

۱. اجرای دستورهای شِل

«شِل» (Shell) راهکاری برای تعامل متنی با کامپیوتر است. محبوب‌ترین شل یونیکس، «بَش» (Bash) نام دارد. بَش، شل پیش‌فرض بسیاری از پیاده‌سازی‌های مدرن یونیکس و بسیاری از بسته‌هایی است که ابزارهای یونیکس مانند را برای ویندوز فراهم می‌کنند. هنگام کار با مفسر پایتون، در شرایطی که نیاز به استفاده از ابزارهای خط فرمان باشد نیاز به جا‌به‌جایی مرتب بین شل و IDLE است. اگرچه، Jupyter Notebook سهولت اجرای دستورات شل را از نوت‌بوک با قرار دادن یک «!» اضافی پیش از دستورات فراهم می‌کند. هر دستوری که در خط فرمان کار کند در IPython نیز با قرار دادن کاراکتر پیش‌وند «!» کار می‌کند.

In [1]: !ls
example.jpeg list tmp
In [2]: !pwd
/home/Parul/Desktop/Hello World Folder'
In [3]: !echo "Hello World"
Hello World

می‌توان مقادیر را به صورت زیر به شل پاس داد و از آن تحویل گرفت.

In [4]: files= !ls
In [5]: print(files)
['example.jpeg', 'list', 'tmp']
In [6]: directory = !pwd
In [7]: print(directory)
['/Users/Parul/Desktop/Hello World Folder']
In [8]: type(directory)
IPython.utils.text.SList

توجه به این نکته لازم است که نوع داده نتایج بازگردانده شده «لیست» (List) نیست.

2. تم‌های ژوپیتر نوت بوک

خبر خوش برای افرادی که چشم‌هایشان موقع زل زدن به پس‌زمینه سفید ژوپیتر خسته می‌شود آن است که تم‌های متعددی برای این پلتفرم موجود هستند. این تم‌ها ارائه کد را نیز بهبود می‌بخشند. در ادامه به چگونگی نصب تم‌های ژوپیتر پرداخته خواهد شد.

نصب

pip install jupyterthemes

لیست تم‌های موجود

jt -l

در حال حاضر، تم‌های موجود برای نوت‌بوک ژوپیتر عبارتند از: chesterish ،grade3 ،gruvboxd ،gruvboxl ،monokai ،oceans16 ،onedork ،solarizedd و solarizedl.

# selecting a particular theme
jt -t <name of the theme>
# reverting to original Theme
jt -r

هر بار که تم تغییر می‌کند، نیاز به بارگذاری مجدد نوت‌بوک ژوپیتر به منظور بررسی اعمال تغییرات است. دستور مشابهی قابل اجرا از درون خود ژوپیتر با قرار دادن «!» پیش از دستور است.

Jupyter Notebook
تم اصلی
Jupyter Themes
تم Chesterish
Jupyter Notebook
تم solarizedl

نوت‌بوک ژوپیتر

۳. افزونه‌های نوت‌بوک

افزونه‌های Jupyter Notebook امکان گام برداشتن فراتر از ساخت متداول آن را به کاربر می‌دهند. افزونه‌های Notebook یا nbextensions، ماژول‌های «جاوا اسکریپت» (JavaScript) هستند که می‌توانند روی اغلب View‌های فرانت-اند نوت‌بوک بارگذاری شوند. این افزونه‌ها تجربه کاربری و رابط کاربری را ویرایش می‌کنند.

نصب

نصب با conda:

conda install -c conda-forge jupyter_nbextensions_configurator

و یا با pip:

pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
#incase you get permission errors on MacOS,
pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install --user

اکنون، با راه‌اندازی نوت‌بوک ژوپیتر، می‌توان «تب» (Tab) مربوط به NBextensions را با گزینه‌های بسیار زیاد مشاهده کرد. کاربران بسته به نیاز، علایق و سلایق خود می‌توانند آن‌ها را نصب و از قابلیت‌های فوق‌العاده آن‌ها بهره‌مند شوند.

افزونه‌های ژوپیتر

کاربرانی که بعد از انجام مراحل بیان شده در بالا نتوانند تب بیان شده را پیدا کنند، می‌توانند به منو Edit مراجعه کنند.

نوت‌بوک ژوپیتر

در ادامه برخی از افزونه‌های کاربردی مورد بررسی قرار می‌گیرند.

۱. افزونه Hinterland برای ژوپیتر نوت‌بوک

Hinterland قابلیت تکمیل خودکار منو برای هر کلیدی که در سلول کد فشرده می‌شود را فراهم می‌کند، بدون آنکه آن را فقط بh کلید Tab بتوان فراخوانی کرد. این امر موجب می‌شود قابلیت تکمیل خودکار Jupyter مانند دیگر «محیط‌های توسعه یکپارچه» (IDE)، از جمله PyCharm عمل کند.

افزونه Hinterland

2. افزونه Snippets برای ژوپیتر نوت‌بوک

این افزونه یک «منو کشویی» (Drop-down Menu) برای نوار ابزار Notebook فراهم می‌کند که امکان درج آسان قطعه کدها در نوت‌بوک کنونی را فراهم می‌کند.

افزونه‌های ژوپیتر

۳. افزونه Split Cells Notebook

این افزونه سلول‌های نوت‌بوک را تقسیم می‌کند و آن‌ها را در مجاورت یکدیگر قرار می‌دهد.

افزونه‌های Jupyter Notebook

4. افزونه Table of Contents

این افزونه امکان گردآوری همه «سرآیندهای» (Headers) در حال اجرا را فراهم می‌کند و آن‌ها را در یک پنجره شناور به عنوان نوار کناری یا منو گردش نمایش می‌دهد. افزونه همچنین قابل «درگ» (Draggable)، «تغییر اندازه» (Resizable)، «منعطف» (Collapsible) و «قابل حمل» (Dockable) است.

افزونه‌های ژوپیتر نوت‌بوک

۵. افزونه Collapsible Headings برای ژوپیتر نوت‌بوک

این افزونه امکان داشتن بخش‌های جمع‌شونده (دارای زیر بخش) که با «عنوان‌ها» (headings) از هم جدا شده‌اند را فراهم می‌کند. بنابراین، افرادی که حجم زیادی کد کثیف در نوت‌بوک خود دارند، می‌توانند به سادگی آن را برای اجتناب از اسکرول‌های دوباره و دوباره جمع کنند.

Jupyter Notebook Extensions

6. Autopep8

Autopep8 به قالب‌بندی مجدد/زیباسازی محتوای سلول‌ها تنها با یک کلیک کمک می‌کند. این افزونه ناجی کاربرانی است که از فشردن مداوم «کلید فاصله» (Spacebar) برای فرمت کردن کد خسته شده‌اند.

افزونه‌های Jupyter Notebook

4. ویجت‌های Jupyter

ویجت‌ها اشیای پایتونی هستند که اغلب در مرورگر به عنوان یک کنترل مانند «لغزنده» (Slider)، «جعبه متن» (textbox) و دیگر موارد ارائه می‌شوند. ویجت‌ها قابل استفاده برای ساخت «رابط کاربری گرافیگی» برای نوت‌بوک هستند.

نصب

# pip
pip install ipywidgets
jupyter nbextension enable --py widgetsnbextension
# Conda
conda install -c conda-forge ipywidgets
#Installing ipywidgets with conda automatically enables the extension

در ادامه نگاهی به برخی از ویجت‌ها انداخته می‌شود. برای جزئیات بیشتر می‌توان به مخزن گیت‌هاب آن‌ها (+) مراجعه کرد.

Interact

تابع interact به صورت خودکار یک «رابط کاربری» (User Interface | UI) می‌سازد که کاوش در کد و داده‌ها به صورت تعاملی را کنترل می‌کند. این ساده‌ترین راه برای آغاز به کار با ویجت‌های IPython است.

# Start with some imports!
from ipywidgets import interact
import ipywidgets as widgets

۱. ویجت‌های پایه‌ای

def f(x):
    return x
# Generate a slider 
interact(f, x=10,);

ویجت‌های Jupyter Notebook

# Booleans generate check-boxes
interact(f, x=True);

ویجت‌های Jupyter Notebook

# Strings generate text areas
interact(f, x='Hi there!');

ویجت‌های ژوپیتر

۲. ویجت‌های پیشرفته

در ادامه، لیستی از ویجت‌های پیشرفته و کاربردی ارائه شده است.

Play Widget

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

play = widgets.Play(
    # interval=10,
    value=50,
    min=0,
    max=100,
    step=1,
    description="Press play",
    disabled=False
)
slider = widgets.IntSlider()
widgets.jslink((play, 'value'), (slider, 'value'))
widgets.HBox([play, slider])

ویجت‌های ژوپیتر نوت‌بوک

Date picker

ویجت date picker در مرورگرهای Chrome و IE Edge کار می‌کند، اما در حال حاضر در «فایرفاکس» (Firefox) و «سافاری» (Safari) کار نمی‌کند، زیرا این مرورگرها از فیلد ورودی تاریخ HTML (یا HTML date input field) پشتیبانی نمی‌کنند.

widgets.DatePicker(
    description='Pick a Date',
    disabled=False
)

ویجت Jupyter Notebook

Color picker

widgets.ColorPicker(
    concise=False,
    description='Pick a color',
    value='blue',
    disabled=False
)

ویجت‌های ژوپیتر نوت‌بوک

Tabs

tab_contents = ['P0', 'P1', 'P2', 'P3', 'P4']
children = [widgets.Text(description=name) for name in tab_contents]
tab = widgets.Tab()
tab.children = children
for i in range(len(children)):
    tab.set_title(i, str(i))
tab

ویجت‌های Jupyter Notebook

Qgrid

Qgrid نیز یک ویجت برای Jupyter Notebook محسوب می‌شود که تمرکز اصلی آن روی «دیتافریم‌ها» (Dataframes) است. این ویجت از SlickGrid برای رندر کردن دیتافریم‌های Pandas در ژوپیتر نوت‌بوک استفاده می‌کند. این کار، امکان کاوش دیتافریم‌ها با کنترل‌های «پیمایش» (scrolling)، «مرتب‌سازی» (sorting) و «پالایش» (filtering) بصری و همچنین ویرایش دیتافریم‌ها را با دو بار کلیک کردن روی سلول‌ها فراهم می‌کند. مخزن گیت‌هاب (+) دارای جزئیات و مثال‌های بیشتری در این رابطه است.

نصب

نصب با pip:

pip install qgrid
jupyter nbextension enable --py --sys-prefix qgrid
# only required if you have not enabled the ipywidgets nbextension yet
jupyter nbextension enable --py --sys-prefix widgetsnbextension

نصب با conda:

# only required if you have not added conda-forge to your channels yet
conda config --add channels conda-forge
conda install qgrid

ویجت‌های ژوپیتر نوت‌بوک

Slideshow

نوت‌بوک ابزاری موثر برای تدریس و نوشتن کدهای قابل توصیف است. اگرچه، هنگامی که کاربر قصد داشته باشد کار خود را ارائه کند، کل نوت‌بوک خود را (با همه کدها) نشان می‌دهد و یا از «پاورپوینت» (Powerpoint) کمک می‌گیرد. نوت‌بوک ژوپیتر به سادگی قابل تبدیل به اسلایدها است و کاربر می‌تواند به سادگی انتخاب کند که چه چیزهایی در نوت‌بوک نمایش داده شوند و چه چیزهایی پنهان باشند. دو راه برای تبدیل نوت‌بوک به اسلاید وجود دارد.

گزینه اسلاید توکار در نوت‌بوک ژوپیتر

ابتدا باید نوت‌بوک ژوپیتر را باز کرد و به صفحه View → Cell Toolbar → Slideshow رفت. یک نوار خاکستری روشن در بالای هر سلول ظاهر می‌شود و می‌توان با بهره‌گیری از آن اسلایدها را سفارشی‌سازی کرد.

ویجت‌های ژوپیتر نوت‌بوک

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

jupyter nbconvert *.ipynb --to slides --post serve
# insert your notebook name instead of *.ipynb

اسلایدها در پورت ۸۰۰ نمایش داده می‌شوند. همچنین، یک فایل html. در دایرکتوری تولید خواهد شد و می‌توان به اسلایدها از آنجا دسترسی داشت.

Jupyter Notebook Widgets

استفاده از یک تم پس‌زمینه به جذابیت هرچه بیشتر و درجه یک شدن کار کمک می‌کند. در ادامه، تم «onedork» روی نوت‌بوک اعمال می‌شود وسپس آن را به یک اسلایدشو تبدیل می‌کند.

نوت‌بوک ژوپیتر

این اسلایدها دارای یک نقص هستند و آن این است که کاربر کد را می‌بیند ولی نمی‌تواند آن را اصلاح کند. پلاگین RISE برای این مساله یک راهکار ارائه می‌کند.

استفاده از پلاگین RISE

RISE سرنامی برای Reveal.js است. Reveal.js یک افزونه نمایش اسلاید برای  Jupyter/IPython است. این افزونه reveal.js را برای اجرای اسلایدشو به کار می‌گیرد. این قابلیت فوق‌العاده کاربردی است، زیرا امکان اجرای کد بدون خروج از اسلایدشو را فراهم می‌کند.

نصب

استفاده از conda (توصیه می‌شود):

conda install -c damianavila82 rise

استفاده از pip  (کمتر توصیه می‌شود):

pip install RISE

و سپس، دو گام دیگر برای نصب JS و CSS در محل مناسب باید انجام شود:

jupyter-nbextension install rise --py --sys-prefix
#enable the nbextension:
jupyter-nbextension enable rise --py --sys-prefix

اکنون، از RISE برای اسلایدشو تعاملی استفاده می‌شود. باید Jupyter Notebook که پیش‌تر ساخته شده است را مجددا باز کرد. اکنون، یک افزونه جدید اضافه شده که می‌گوید «Enter/Exit RISE Slideshow».

نوت‌بوک ژوپیتر

با کلیک روی گزینه نشان داده شده در تصویر بالا می‌توان به دنیای اسلایدهای تعاملی وارد شد.

نوت‌بوک ژوپیتر

URL‌ها، PDF‌ها و ویدئوهای توکار

چرا باید از لینک‌های صرف استفاده کرد در حالیکه می‌توان به سادگی یک URL، ویدئو و PDF را با استفاده از ماژول display در IPython، در نوت‌بوک ژوپیتر توکار کرد.

URL

#Note that http urls will not be displayed. Only https are allowed inside the Iframe
from IPython.display import IFrame
IFrame('https://en.wikipedia.org/wiki/HTTPS', width=800, height=450)

نوت‌بوک ژوپیتر

PDF

from IPython.display import IFrame
IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)

Jupyter Notebook

ویدئوهای یوتیوب

from IPython.display import YouTubeVideo
YouTubeVideo('mJeNghZXtMo', width=800, height=300)

ویدئوهای توکار یوتیوب در نوت‌بوک ژوپیتر

جمع‌بندی

موارد بیان شده تعدادی از ویژگی‌های Jupyter Notebook هستند. برخی از این موارد برای بسیاری از کاربران نوت‌بوک ژوپیتر شناخته شده‌اند. با آزمودن موارد بیان شده در بالا و دیگر افزونه‌ها و قابلیت‌های محیط محاسبات تعاملی مبتنی بر وب ژوپیتر نوت‌بوک، می‌توان هر چه بیشتر از مزایای آن بهره‌مند شد.

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

^^

بر اساس رای 17 نفر
آیا این مطلب برای شما مفید بود؟
شما قبلا رای داده‌اید!
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.

«الهام حصارکی»، فارغ‌التحصیل مقطع کارشناسی ارشد مهندسی فناوری اطلاعات، گرایش سیستم‌های اطلاعات مدیریت است. او در زمینه هوش مصنوعی و داده‌کاوی، به ویژه تحلیل شبکه‌های اجتماعی، فعالیت می‌کند.

8 نظر در “ژوپیتر پایتون Jupyter چیست — راهنمای کاربردی به زبان ساده

نظر شما چیست؟

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