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

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

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

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

«شِل» (Shell) راهکاری برای تعامل متنی با کامپیوتر است. محبوب‌ترین شل یونیکس، «بَش» (Bash) نام دارد. بَش، شل پیش‌فرض بسیاری از پیاده‌سازی‌های مدرن یونیکس و بسیاری از بسته‌هایی است که ابزارهای یونیکس مانند را برای ویندوز فراهم می‌کنند.

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

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

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

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

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

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

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

این تم‌ها ارائه کد را نیز بهبود می‌بخشند. در ادامه به چگونگی نصب تم‌های ژوپیتر پرداخته خواهد شد.

نصب

1pip install jupyterthemes

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

1jt -l

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

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

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

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

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

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

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

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

نصب

نصب با conda:

1conda install -c conda-forge jupyter_nbextensions_configurator

و یا با pip:

1pip install jupyter_contrib_nbextensions && jupyter contrib nbextension install
2#incase you get permission errors on MacOS,
3pip 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) و دیگر موارد ارائه می‌شوند.

ویجت‌ها قابل استفاده برای ساخت «رابط کاربری گرافیگی» برای نوت‌بوک هستند.

نصب

1# pip
2pip install ipywidgets
3jupyter nbextension enable --py widgetsnbextension
4# Conda
5conda install -c conda-forge ipywidgets
6#Installing ipywidgets with conda automatically enables the extension

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

Interact

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

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

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

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

ویجت‌های Jupyter Notebook

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

ویجت‌های Jupyter Notebook

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

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

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

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

Play Widget

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

1play = widgets.Play(
2    # interval=10,
3    value=50,
4    min=0,
5    max=100,
6    step=1,
7    description="Press play",
8    disabled=False
9)
10slider = widgets.IntSlider()
11widgets.jslink((play, 'value'), (slider, 'value'))
12widgets.HBox([play, slider])

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

Date picker

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

1widgets.DatePicker(
2    description='Pick a Date',
3    disabled=False
4)

ویجت Jupyter Notebook

Color picker

1widgets.ColorPicker(
2    concise=False,
3    description='Pick a color',
4    value='blue',
5    disabled=False
6)

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

Tabs

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

ویجت‌های Jupyter Notebook

Qgrid

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

نصب

نصب با pip:

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

نصب با conda:

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

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

Slideshow

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

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

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

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

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

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

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

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

Jupyter Notebook Widgets

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

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

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

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

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

نصب

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

1conda install -c damianavila82 rise

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

1pip install RISE

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

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

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

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

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

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

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

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

URL

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

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

PDF

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

Jupyter Notebook

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

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

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

جمع‌بندی

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

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

^^

بر اساس رای ۳۴ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
towardsdatascience
۱۱ دیدگاه برای «ژوپیتر پایتون Jupyter چیست — راهنمای کاربردی به زبان ساده»

ممنون خیلی خیلی ممنون مشکلم حل شد

من دو ورژن از پایتون روی سیستم دارم اما ژوپیتر نوتیوک با ورژن قدیمی کار میکنه چطور میتونم ورژن ژوپیتر رو آپدیت کنم

سلام وقت بخیر
من با jupyter سعی کردم یه کد رو اجرا کنم ولی به محض اینکه matplotlib رو فراخوانی میکنم کرنل از کار میفته.
میشه راهنماییم کنید

توی تم های دیگه بجز تم اصلی و پیشفرض، اون دکمه های زیرِ تولبار کجا میرن؟همون به علاوه و قیچی و دکمه ران و اینا. چجور میتونیم ظاهرشون کنیم توی تم های دیگه؟؟

سلام خسته نباشید من این افزونه روی سیستم خودم نصب کردم از طریق cmd حالا چطور باید ازش استفاد کنم؟pip install jupyter_contrib_nbextension منظورم این افزونه هست

سلام آیا دز زمینه machine learning در کولب آموزش هایی دارید؟

با سلام؛

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

پیروز، شاد و تندرست باشید.

چقدر خوب بود

سلام….
برای افزایش سایز فونت بدون تغییر تم در ژوپیتر باید چیکار کنیم؟؟؟؟

در نصب تم ها با این مشکل روبرو شدن:
Reset css and font defaults in

خیلی مفید بود. سپاسگذارم

نظر شما چیست؟

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