Co to jest notatnik Jupyter? Analiza danych stała się łatwiejsza

W pewnym momencie wszyscy musimy pokazać naszą pracę. Większość prac programistycznych jest udostępniana jako surowy kod źródłowy lub jako skompilowany plik wykonywalny. Kod źródłowy dostarcza kompletnych informacji, ale w sposób bardziej „mówiący” niż „pokaż”. Plik wykonywalny pokazuje nam, co robi oprogramowanie, ale nawet gdy jest dostarczany z kodem źródłowym, może być trudno zrozumieć, jak dokładnie działa.

Wyobraź sobie, że możesz przeglądać kod i uruchamiać go w tym samym interfejsie użytkownika, aby móc wprowadzać zmiany w kodzie i wyświetlać wyniki tych zmian natychmiast, w czasie rzeczywistym? Właśnie to oferuje Jupyter Notebook. 

Notatnik Jupyter został stworzony, aby ułatwić pokazanie swojej pracy programistycznej i pozwolić innym dołączyć. Notatnik Jupyter umożliwia łączenie kodu, komentarzy, multimediów i wizualizacji w interaktywnym dokumencie - zwanym oczywiście notatnikiem - który można udostępniać , ponownie użyte i przerobione. 

A ponieważ Jupyter Notebook działa przez przeglądarkę internetową, sam notebook może być hostowany na komputerze lokalnym lub na serwerze zdalnym. 

Zalety notebooka Jupyter

Notatnik Jupyter, pierwotnie opracowany dla aplikacji do nauki danych napisanych w językach Python, R i Julia, jest przydatny na wiele sposobów we wszelkiego rodzaju projektach:

  • Wizualizacje danych.  Większość ludzi po raz pierwszy widzi Jupyter Notebook poprzez wizualizację danych, udostępniony notatnik, który obejmuje renderowanie niektórych zestawów danych jako grafikę. Notatnik Jupyter umożliwia tworzenie wizualizacji, ale także udostępnianie ich i zezwalanie na interaktywne zmiany w udostępnionym kodzie i zestawie danych.
  • Udostępnianie kodu.  Usługi w chmurze, takie jak GitHub i Pastebin, zapewniają sposoby udostępniania kodu, ale w większości nie są interaktywne. Za pomocą notatnika Jupyter możesz przeglądać kod, wykonywać go i wyświetlać wyniki bezpośrednio w przeglądarce internetowej.
  • Interakcje na żywo z kodem.  Kod notesu Jupyter nie jest statyczny; można go edytować i ponownie uruchamiać przyrostowo w czasie rzeczywistym, a informacje zwrotne są dostarczane bezpośrednio w przeglądarce. Notebooki mogą również osadzać kontrolki użytkownika (np. Suwaki lub pola wprowadzania tekstu), które mogą być używane jako źródła wprowadzania kodu.
  • Dokumentowanie próbek kodu. Jeśli masz fragment kodu i chcesz wyjaśnić, wiersz po wierszu, jak to działa, z informacjami zwrotnymi na żywo przez cały czas, możesz osadzić go w notatniku Jupyter. Co najlepsze, kod pozostanie w pełni funkcjonalny - możesz dodać interaktywność wraz z objaśnieniami, pokazując i opowiadając w tym samym czasie.

Komponenty notebooka Jupyter

Notatniki Jupyter mogą zawierać kilka rodzajów składników, każdy zorganizowany w oddzielne bloki:

  • Tekst i HTML.  Zwykły tekst lub tekst z adnotacjami w składni Markdown w celu wygenerowania kodu HTML można wstawić do dokumentu w dowolnym momencie. Style CSS mogą być również zawarte w tekście lub dodane do szablonu używanego do generowania notatnika.
  • Kod i wyjście. Kod w notatnikach Jupyter Notebook jest zwykle kodem Python, chociaż możesz dodać obsługę w swoim środowisku Jupyter dla innych języków, takich jak R lub Julia. Wyniki wykonanego kodu pojawiają się natychmiast po blokach kodu, a bloki kodu mogą być wykonywane i ponownie wykonywane w dowolnej kolejności i tak często, jak chcesz. 
  • Wizualizacje. Grafiki i wykresy można generować z kodu za pomocą modułów takich jak Matplotlib, Plotly lub Bokeh. Podobnie jak dane wyjściowe, te wizualizacje pojawiają się w tekście obok kodu, który je generuje. Jednak kod można również skonfigurować tak, aby w razie potrzeby zapisywał je do plików zewnętrznych.
  • Multimedia. Ponieważ Jupyter Notebook jest oparty na technologii internetowej, może wyświetlać wszystkie typy multimediów obsługiwane na stronie internetowej. Możesz umieścić je w notatniku jako elementy HTML lub wygenerować je programowo za pomocą IPython.displaymodułu.
  • Dane. Dane można dostarczyć w osobnym pliku obok .ipynb pliku, który stanowi notatnik Jupyter Notebook, lub można je zaimportować programowo - na przykład poprzez włączenie kodu do notatnika w celu pobrania danych z publicznego repozytorium internetowego lub uzyskania do nich dostępu za pośrednictwem bazy danych połączenie.

Przypadki użycia Jupyter Notebook

Najczęstsze przypadki użycia Notatnika Jupyter to nauka o danych, matematyka i inne projekty badawcze, które obejmują wizualizacje danych lub formuł. Oprócz nich istnieje jednak wiele innych przypadków użycia:

  • Udostępnianie wizualizacji z interaktywnością lub bez.  Ludzie często udostępniają wyniki wizualizacji danych jako statyczny obraz, ale jest to przydatne tylko do pewnego momentu. Dzieląc się notatnikiem Jupyter, pozwalasz docelowym odbiorcom na zanurzenie się i zabawę. Mogą uzyskać dokładne zrozumienie danych w sposób interaktywny.
  • Dokumentowanie procesu za pomocą kodu. Wielu programistów, którzy blogują o swoich doświadczeniach w programowaniu, pisze swoje posty w notatniku Jupyter. Inni mogą pobrać swój notatnik i odtworzyć ćwiczenie.
  • Dokumentacja na żywo dla biblioteki lub modułu. Większość dokumentacji modułów Pythona jest statyczna; Notatnik Jupyter może służyć jako interaktywna piaskownica do nauki działania modułu. Każdy moduł Pythona, który działa dobrze w interfejsie notebooka (w zasadzie wszystko, co zapisuje stdoutjako część jego zachowania) jest dobrym kandydatem do tego.
  • Ogólne udostępnianie kodu i danych.  Wszystko, co musisz zrobić, aby udostępnić notatnik Jupyter i powiązane z nim pliki danych, to spakować go do archiwum.

JupyterLab

Interfejs użytkownika nowej generacji dla Jupyter Notebook, zwany JupyterLab, jest teraz dostępny i uważany za gotowy do użytku produkcyjnego.

Jak wyjaśniono w poście na blogu ogłaszającym ogólną dostępność, JupyterLab jest bardziej plastyczny niż konwencjonalny notatnik Jupyter, umożliwiając użytkownikom przeciąganie i upuszczanie komórek w notatnikach i między nimi oraz rozmieszczenie obszaru roboczego w osobnych zakładkach i podsekcjach. Kod można uruchamiać bezpośrednio z plików tekstowych, a także plików Jupyter Notebook, a wiele popularnych formatów plików zarówno dla kodu, jak i danych można renderować za pomocą podglądów na żywo.

JupyterLab można również dostosować za pomocą rozszerzeń, aby dodać obsługę nowych formatów plików, wzbogacić interfejs lub zapewnić dowolną liczbę innych dodatkowych funkcji, umożliwiając znacznie szerszą gamę aplikacji do notebooków niż Jupyter Notebook. Plan długoterminowy zakłada zastąpienie obecnego interfejsu Jupyter Notebook na JupyterLab, ale dopiero po tym, jak JupyterLab okaże się wystarczająco stabilny i niezawodny.

Ograniczenia notebooka Jupyter

Tak potężny i użyteczny, jak może być Jupyter Notebook, ma pewne ograniczenia, które należy wziąć pod uwagę.

  • Notebooki nie są samodzielne. To jest największa wada korzystania z notebooka Jupyter: notebooki wymagają środowiska wykonawczego Jupyter oraz wszelkich bibliotek, których planujesz używać. Istnieje kilka strategii tworzenia samodzielnych notebooków Jupyter, ale żadna z nich nie jest oficjalnie obsługiwana. Najlepiej jest dystrybuować notebooki do osób, które mają już infrastrukturę do ich uruchamiania lub nie mają nic przeciwko konfiguracji (na przykład za pomocą Anacondy).
  • Stan sesji nie może być łatwo zapisany.  Stan dowolnego kodu działającego w notatniku Jupyter nie może zostać zachowany i przywrócony za pomocą domyślnego zestawu narzędzi Jupyter Notebook. Za każdym razem, gdy ładujesz notatnik, będziesz musiał ponownie uruchomić w nim kod, aby przywrócić jego stan.
  • Brak interaktywnego debugowania lub innych funkcji IDE.  Notatnik Jupyter nie jest pełnowartościowym środowiskiem programistycznym dla Pythona. Wiele funkcji, których można się spodziewać w środowisku IDE - np. Debugowanie interaktywne, uzupełnianie kodu i zarządzanie modułami - nie jest tam dostępnych.