ژوپیتر پایتون 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 امکان گام برداشتن فراتر از ساخت متداول آن را به کاربر میدهند. افزونههای 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 عمل کند.
2. افزونه Snippets برای ژوپیتر نوتبوک
این افزونه یک «منو کشویی» (Drop-down Menu) برای نوار ابزار Notebook فراهم میکند که امکان درج آسان قطعه کدها در نوتبوک کنونی را فراهم میکند.
۳. افزونه Split Cells Notebook
این افزونه سلولهای نوتبوک را تقسیم میکند و آنها را در مجاورت یکدیگر قرار میدهد.
4. افزونه Table of Contents
این افزونه امکان گردآوری همه «سرآیندهای» (Headers) در حال اجرا را فراهم میکند و آنها را در یک پنجره شناور به عنوان نوار کناری یا منو گردش نمایش میدهد.
افزونه همچنین قابل «درگ» (Draggable)، «تغییر اندازه» (Resizable)، «منعطف» (Collapsible) و «قابل حمل» (Dockable) است.
۵. افزونه Collapsible Headings برای ژوپیتر نوتبوک
این افزونه امکان داشتن بخشهای جمعشونده (دارای زیر بخش) که با «عنوانها» (headings) از هم جدا شدهاند را فراهم میکند. بنابراین، افرادی که حجم زیادی کد کثیف در نوتبوک خود دارند، میتوانند به سادگی آن را برای اجتناب از اسکرولهای دوباره و دوباره جمع کنند.
6. Autopep8
Autopep8 به قالببندی مجدد/زیباسازی محتوای سلولها تنها با یک کلیک کمک میکند. این افزونه ناجی کاربرانی است که از فشردن مداوم «کلید فاصله» (Spacebar) برای فرمت کردن کد خسته شدهاند.
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,);
1# Booleans generate check-boxes
2interact(f, x=True);
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)
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
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. در دایرکتوری تولید خواهد شد و میتوان به اسلایدها از آنجا دسترسی داشت.
استفاده از یک تم پسزمینه به جذابیت هرچه بیشتر و درجه یک شدن کار کمک میکند. در ادامه، تم «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)
1from IPython.display import IFrame
2IFrame('https://arxiv.org/pdf/1406.2661.pdf', width=800, height=450)
ویدئوهای یوتیوب
1from IPython.display import YouTubeVideo
2YouTubeVideo('mJeNghZXtMo', width=800, height=300)
جمعبندی
موارد بیان شده تعدادی از ویژگیهای Jupyter Notebook هستند. برخی از این موارد برای بسیاری از کاربران نوتبوک ژوپیتر شناخته شدهاند. با آزمودن موارد بیان شده در بالا و دیگر افزونهها و قابلیتهای محیط محاسبات تعاملی مبتنی بر وب ژوپیتر نوتبوک، میتوان هر چه بیشتر از مزایای آن بهرهمند شد.
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- گنجینه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
^^
سلام ، برنامه ژوپیتر رو آموزش ببینم خوبه بعد ها به دردم میخوره؟
ممنون خیلی خیلی ممنون مشکلم حل شد
من دو ورژن از پایتون روی سیستم دارم اما ژوپیتر نوتیوک با ورژن قدیمی کار میکنه چطور میتونم ورژن ژوپیتر رو آپدیت کنم
سلام وقت بخیر
من با jupyter سعی کردم یه کد رو اجرا کنم ولی به محض اینکه matplotlib رو فراخوانی میکنم کرنل از کار میفته.
میشه راهنماییم کنید
توی تم های دیگه بجز تم اصلی و پیشفرض، اون دکمه های زیرِ تولبار کجا میرن؟همون به علاوه و قیچی و دکمه ران و اینا. چجور میتونیم ظاهرشون کنیم توی تم های دیگه؟؟
سلام خسته نباشید من این افزونه روی سیستم خودم نصب کردم از طریق cmd حالا چطور باید ازش استفاد کنم؟pip install jupyter_contrib_nbextension منظورم این افزونه هست
سلام آیا دز زمینه machine learning در کولب آموزش هایی دارید؟
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزاریم. در حال حاضر آموزشهایی در این راستا در دست تهیه است که هنوز منتشر نشدهاند. پیشنهاد میشود اگر دلیل ویژهای برای استفاده از کولب وجود ندارد، از ابزارهای دیگر و به طور خاص پایتون استفاده کنید که هم به لحاظ توانمندی و قدرت در حوزه یادگیری ماشین یکهتاز است و هم به لحاظ محتوای آموزشی پشتوانه خوبی دارد.
پیروز، شاد و تندرست باشید.
چقدر خوب بود
سلام….
برای افزایش سایز فونت بدون تغییر تم در ژوپیتر باید چیکار کنیم؟؟؟؟
در نصب تم ها با این مشکل روبرو شدن:
Reset css and font defaults in
خیلی مفید بود. سپاسگذارم