Instalacja środowiska Jupyter Notebook

Co to jest notatnik Jupyter?

Notatnik Jupyter to narzędzie do interaktywnego opracowywania i prezentowania projektów - zwłaszcza tych z analizy danych. W tym artykule dowiesz się, jak używać notatnika Jupyter do projektów i jak skonfigurować go na komputerze.

Notebook integruje kod i jego dane wyjściowe w jednym dokumencie, który łączy wizualizacje, opis, równania matematyczne i inne multimedia. Innymi słowy: jest to pojedynczy dokument, w którym można uruchamiać kod, wyświetlać dane wyjściowe, a także dodawać objaśnienia, formuły, wykresy i sprawić, że praca będzie bardziej przejrzysta, zrozumiała, powtarzalna i udostępniana.

Korzystanie z notebooków stanowi obecnie główną część przepływu pracy w analizach danych w firmach na całym świecie. Jeśli Twoim celem jest praca z danymi, korzystanie z Notatnika przyspieszy przepływ pracy i ułatwi komunikację i udostępnianie wyników.

Co najważniejsze, jako część otwartego  projektu Jupyter , notebooki Jupyter są całkowicie bezpłatne. Oprogramowanie można pobrać  samodzielnie lub jako część zestawu narzędzi do analizy danych Anaconda (lub jako samodzielny pakiet).

Czy w Jupyter Notebook uruchamiam tylko kod Python?

System Jupyter obsługuje ponad 100 języków programowania (zwanych „kernels” w ekosystemie Jupyter), w tym Python, Java, R, Julia, Matlab, Octave, Scheme, Processing, Scala i wiele innych. Domyślnie Jupyter uruchomi tylko jądro IPython, ale mogą zostać zainstalowane dodatkowe jądra. Chociaż w notebookach Jupyter można używać wielu różnych języków programowania, ten artykuł skupi się na Pythonie, ponieważ Python wykorzystywany jest najczęściej.

Instalacja

Jeśli właśnie korzystasz z jezyka Python, pobierz pakiet jupyterlab organizacji/projektu Jupyter. Tam to wszystko co nazywamy teraz 'notatnikami' się zaczeło. Jeśli korzystasz ze środowiska "Anaconda" lub "Miniconda" [lepszym pomysłem jest porzucić haos "wszystkomającego środowiska" i użyć czysty Python], skorzystaj z poleceń dla tych środowisk. 

Masz wybór; możesz korzystać z klasycznego, minimalistycznego notebooka lub użyc wersji 'JupyterLab'.  JupyterLab (polecamy tę wersję) posiada bardziej rozbudowane możliwości zarządzania plikami, co pozwala na łatwiejsze przeglądanie, kopiowanie i przenoszenie plików.
Jupyter Notebook jest bardziej ograniczony pod względem zarządzania plikami, skupiając się głównie na pracy w jednym notatniku. 

Jeśli natomiast, jak my, preferujesz Python bez tych narzutów i wolisz ręcznie zarządzać swoimi pakietami, notebook JupyterLab instalujesz po prostu komendą pip:

pip install jupyterlab

Jeśli masz jakieś wątpliwości co do instalacji, zapoznaj sie z tutorialem instalacji na stronie projektu jupyter notebook.

Jupyter Notebook występuje też w wersjach online - nie musisz instalować tego środowiska na swoim komputerze. Istnieje kilka serwisów online oferujących funkcje notatnika. Jednym z nich jest serwis Google, Colab, opisany w tym artykule.

Uruchomienie Jupyter notebook

Notatnik JupyterLab uruchamiasz poleceniem jak niżej w linii komend. Zanim to zrobisz, musisz wiedzieć jedno; katalogiem startowym będzie katalog z którego poziomu uruchomisz notatnik. Zatem jeśli przechowujesz swoje prace w katalogu C:\Python\JupyterLab wejdź z poziomu linii komend do tego katalogu i wykonaj polecenie:

python -m jupyterlab

W wyniku tego w Twojej domyślnej przeglądarce otworzy się nowa karta z zawartością podobną jak ta na obrazku poniżej. W niektórych wersjach okno może się nie pojawić w przeglądarce automatycznie. Zamiast tego program poinformuje cię jaki URL otworzyć w przeglądarce by uruchomić Notebook.

To jeszcze nie jest notatnik. To jest pulpit nawigacyjny notebooków, zaprojektowany specjalnie do zarządzania notatnikami Jupyter. Potraktuj to jako platformę startową do eksplorowania, edytowania i tworzenia notatników. Należy pamiętać, że pulpit nawigacyjny daje dostęp tylko do plików i podfolderów zawartych w katalogu startowym Jupyter (tj. katalog z którego uruchomiliśmy polecenie 'pip -m jupyterlab'). Jednak katalog startowy można zmienić by był ten sam niezależnie skąd uruchomisz serwer notatników.

Tworzymy pierwszy notatnik

Aby uruchomić pierwszy notatnik, wybierz z menu File=>New=>Notebook lub kliknij kafelek „Python 3” w prawej części ekranu, w sekcji "Workspace". W nowej karcie pojawi się nowy notatnik. Jeśli wybierzesz pierwszą opcję, menu, zostaniesz poproszony(a) o wybranie Kernel, środowiska, dla Twojego notatnika - wybierz Python.

Jeśli przełączysz się z powrotem do pulpitu nawigacyjnego, zobaczysz nowy plik Untitled.ipynb (lub inaczej nazwany plik jeśli nazwała(e)ś swój notatnik) i powinieneś zobaczyć zielony tekst, który oznacza, że ​​notebook jest uruchomiony. Co to jest plik ipynb? Każdy  .ipynbplik to jeden notatnik, więc za każdym razem, gdy tworzysz nowy notatnik, .ipynbzostanie utworzony nowy plik.

Jak powiedzieliśmy na wstępie, Notebook pozwala Ci zorganizować sekwencje kodów/poleceń w jedną całość; wykonujesz polecenie A, następnie polecenie B, C... Jak widzisz na obrazku powyżej, nowo-utworzony notatnik domyślnie prezentuje jedną aktywną komórkę ("cell") do wstawienia polecenia. To jest ta linia zaczynająca się od "In [ ]". Wstaw tam np. trywialną komendę "print('Hello World!')"

Następnie dodaj kolejną komórkę - po prostu kliknij "+" na pasku narzędzi. Jeśli masz już kilka poleceń/kilka komórek w notatniku, możesz świadomie decydować czy nowo umieszczana komórka znajdzie sie poniżej czy powyżej istniejącej. W takim przypadku z menu "Insert" wybierasz "insert cell above" lub "insert cell below". Zawsze możesz skasować niechcianą komórkę wybierając ikonę nożyczek.

W Jupyter Notebook mamy trzy rodzaje komórek: Code, Markdown, Raw NBConvert. Code - po prostu kod programu. Markdown służy do opisów, tytułów (Twoj notatnik może być całkiem rozbudowany - dobrze jest oznaczać co robią poszczególne sekcje kodu w notatniku). Typ komórki Raw przeznaczony jest tylko do specjalnych przypadków użycia podczas korzystania z narzędzia wiersza polecenia nbconvert. 

Tworzenie opisów

Przetestuj tworzenie opisów wybierając komórkę a następnie z menu "Cell" wybierz "Cell Type => Markdown". Wpisz jakikolwiek tekst.  W tym typie komórki możesz używać składni podobnej do tworzenia tekstu w Wiki. Np. by uzyskać tekst Italic używasz '*' (przed i po tekscie), do tworzenia nagłówków H1 użyjesz "#" (spacja po # i przed tekstem), dla H2 wstawisz dwa razy "##". Przykłady:

# To jest nagłówek H1

## To jest nagłówek H2

To jest zwykły tekst tworzący akapit. Dodaj wyróżnienie za pomocą pogrubienia **bold** and __bold__, albo *italic* i _italic_. 

Akapity muszą być oddzielone pustą linią. 

* Czasami potrzebujemy dołączyć listy. 
* Które mogą być wypunktowane gwiazdkami. 

1. Listy można również numerować. 
2. Jeśli chcemy uporządkowaną listę.

[Można też dołączyć hyperlinki](https://www.example.com)

W kodzie inline używane są pojedyńcze cudzysłowy: `foo()`, a bloki kodu używają potrójnych pojedyńczych cudzysłowów: 
```
bar()
``` 
Lub możemy użyć 4 spacje by osiągnąć to samo: 

    foo()
    
Dodawanie obrazków jest łatwe: ![Alt text](https://www.example.com/image.jpg)

Uruchamianie kodu w notatniku

Uruchamianie kodu w pojedynczej komórce polega na wybraniu danej komórki a następnie kliknięcie na ikonę "run". To samo możesz uzyskać wybierając na klawiaturze "Ctrl + Enter". Jeśli wykonasz kod danej komórki, zauważysz że liczba obok "In" (In jak "input") zmieni się. Zostanie podwyższona o jeden. Ta liczba oznacza ilość uruchomień danej komórki (kodu w tej komórce).

Komórki w Jupyter Notebook mają dwa stany: są w trybie edycji lub w trybie poleceń. Jeśli klikniesz na obszar kodu w komórce, zauważysz że komórka i dodatkowe o niej informacje po lewej zostanie obramowana zieloną ramką. To jest tryb edycji. Jeśli klikniesz po lewej stronie komórki, poza obszarem kodu, zauważysz że komórka i jej dodatkowe informacje zostanie obramowana niebieską ramką. To jest tryb poleceń.

Będąc w trybie poleceń  możesz wybrać więcej niż jedną komórkę. Robisz to wybierając na klawiaturze "Ctrl + A" lub klikając na pierwszą komórkę a następnie trzymając Ctrl klikając na następne. By uruchomić zaznaczone komórki, wybierasz "Ctrl + Enter" na klawiaturze lub klikasz na ikonę "Run".

Zapisywanie notatnika

Jeśli zapisujesz notatnik, przechowywany jest on w Twojej instalacji Jupyter Notebook. Jęsli chcesz przenieść go na inną maszynę lub udostępnić, wybierz z menu "File" opcję "Download as => Notebook". Zapisz plik. Jest to po prostu zwykły plik tekstowy.

Więcej o użyciu Jupyter Notebook dowiesz się na stronie jupyter.org

Ograniczenia Jupyter Notebook

Jupyter Notebook jest dobrym pomysłem jak zarządzać prostymi skryptami. Jednak często lepszym pomysłem jest wyjść poza skrypty i użyć gotowych narzędzi które dają wygodę użytkowania, szybkość wykonania zadania. Jupyter Notebook i Python (czy inny język) zatem będzie dobrym pomysłem jako uzupełnienie lub tam gdzie trzeba użyć niestandardowych funkcji, algorytmów ale jeszcze lepszym kiedy rozpoczynasz pracę nad kodem, poszukujesz.  Oto największe ograniczenia Jupyter Notebook.

Wersjonowanie jest trudne i niedostępne w samym narzędziu. Możliwe za pomocą pewnych 'sztuczek'. Ta wada jest szczególnie dotkliwa jeśli pracujesz w grupie z innymi.

Potencjalny chaos w komórkach. Łatwość dodawania kolejnych komórek kodu jest także dużą wadą notatnika. Łatwo zniszczyć efekty swojej pracy wykonują je przypadkiem w niewłaściwej kolejności.

Jupyter Notebook nie uczy dobrych zachowań inżynierii oprogramowania. Tworzenie i wykonywanie funkcji, proces testowania, odpowiednia jakość kodu - gotowy, produkcyjny kod powinien być pisany w innym środowisku.