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

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

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

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

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

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

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

نصب

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

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

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

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

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

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

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

نصب

نصب با conda:

و یا با pip:

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

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

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

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

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

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

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

افزونه Hinterland

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

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

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

3. افزونه 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) و دیگر موارد ارائه می‌شوند. ویجت‌ها قابل استفاده برای ساخت «رابط کاربری گرافیگی» برای نوت‌بوک هستند.

نصب

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

Interact

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

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

ویجت‌های Jupyter Notebook

ویجت‌های Jupyter Notebook

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

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

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

Play Widget

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

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

Date picker

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

ویجت Jupyter Notebook

Color picker

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

Tabs

ویجت‌های Jupyter Notebook

Qgrid

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

نصب

نصب با pip:

نصب با conda:

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

Slideshow

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

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

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

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

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

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

Jupyter Notebook Widgets

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

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

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

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

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

نصب

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

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

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

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

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

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

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

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

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

URL

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

PDF

Jupyter Notebook

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

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

جمع‌بندی

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

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

^^

بر اساس رای 1 نفر

آیا این مطلب برای شما مفید بود؟

نظر شما چیست؟

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