Jupyter - wprowadzenie

W pierwszym blogowym wpisie będę chciał przedstawić znakomity program do prowadzenia statystycznych anliz danych. Dodam, że wykorzystuję go równocześnie do napisania tego postu. Mowa oczywiście o tytułowym Jupyterze, czyli przeglądarkowej aplikacji pozwalającej na interaktywną analizę danych z wykorzystaniem wielu skryptowych języków programowania. Wśród nich znajdziemy popularne języki Python czy R, jak i te mniej popularne w zastosowaniach analitycznych jak Ruby, czy Javascript.

Jupyter Notebook

Jupter to w pierwszej kolejności przeglądarkowe środowisko do pisania skryptów. Pierwotnym projektem na bazie którego powstał Jupyter jest IPython, którego ostatnim wydaniem jako osobnego programu była wersja 3.0. Od wersji 4.0 IPython funkcjonuje już jako podstawowy kernel Jupytera, o czym przeczytamy dalej.

Samym Jupyterem możemy pobawić się na try.jupyter.org

W czym kodziłby Galileusz?

Ogólnie notatnik Jupytera możemy określić jako połączenie graficznego IDE z konsolą. Chociaż mi przypomina trochę Worda z możliwością pisania i wykonywania kodu.

Przyznać należy, że twórcy Jupytera byli również kreatywni co do samej nazwy. Z jednej strony jest to akronim od nazw trzech języków programowania wykorzystywanych do obliczeń naukowych: nieco mniej popularnej Julii, jak także znanych szerzej Pythona i eRa. Druga ciekawostka ukryta w nazwie to nawiązanie do notatnika Galileusza w którym Uczony zapisywał wyniki swoich obserwacji plam słonecznych, czy księżyców Jowisza. Do tych ostatnich badań nawiązuje również logo projektu.

Sam Jupyter Notebook przypomina notatnik Galileusza, co możemy ocenić sami. Skany i przedruki notatnika znajdziemy TU [505kB], TU [180kB] lub TU [42MB].

Działanie notatnika opiera się na komórkach, w których możemy pisać polecenia. Wykonanie polecenia przeważnie zwraca wynik lub komunikat pod komórką.

Funkcja print w Python 3.5:

In [1]:
print("Witaj Świecie")
Witaj Świecie

Jupyter wspiera również obiekty ramek danych takich jak na przykład DataFrame w pythonowej bibliotece Pandas. Jest to spore ułatwienie pozwalające na interaktywny wgląd w analizowane dane.

Tabela Pandas w Python 2.7:

In [2]:
import pandas as pd
tabela = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]], columns = ["jeden", "dwa", "trzy"])
tabela
Out[2]:
jeden dwa trzy
0 1 2 3
1 4 5 6
2 7 8 9

Podobnie jak w przypadku tabel, poniżej kodu możemy również wykonać wykresy i wizualizacje danych wygenerowane z wykorzystaniem takich bibliotek jak matplotlib, bokeh czy ggplot.

Kernele do ponad 40 języków

W sumie nie znalazłem dobrego tłumaczenia dla słowa kernel. W przypadku Jupytera "kernele" to interpretery różnych języków, które można dograć do podstawowej wersji. Z drugiej strony takie środowiska zawierają również dodatkowe funkcje ułatwiające pracę w Jupyterze, stąd też trudno określić je jedynie jako interpreter.

Listę dostępnych kerneli znajdziemy pod tym adresem LINK

Markdown

Komórki notesowe mają swoje typy. Domyślnym typem jest oczywiście komórka na wpisanie kodu. Drugim ciekawym typem jest komórka interpretująca Markdown. Dzięki temu w Jupyterze można ładnie komentować kod, jak także obiekty wynikowe i poczuć się właśnie jak Galielusz ponad 400 lat temu.

Fakty z Jupytera

  • Jupyter posiada swoją serwerową wersję Jupyter Hub umożliwiającą stworzenie środowiska do zespołowej pracy nad analizą.
  • Istnieje kernel integrujący Jupytera ze Sparkiem
  • Jupyterowy notatnik w formacie *.ipynb zapisywany jest jako JSON. Dzięki temu może być wykorzystany do wygenerowania wpisu na blogu :). W Pelicanie wystarczy doinstalować plugin pelican-ipynb, co sprawia, że Jupyter staje się również świetnym CMSem.
  • Wbudowany w program NBConverter pozwala na przerobienie notatnika na prezentację w formacie HTML, z wykorzystaniem biblioteki reveal.js. Robi się to jedną komendą!
  • Jupyterowy notatnik może być wyeksportowany do formatu HTML lub PDF z wykorzystaniem LaTeXa.
  • Domyślny kernel Jupytera (IPython) rozszerza dodatkowo możliwości biblioteki rpy2 pozwalającej na łączenie kodu Pythona i R. O czym będzie kolejny wpis.
  • Jupyter zbudowany jest w oparciu o pythonowy framework Tornado
  • W notatniku jest podpowiadanie składni

  • Niestety małą bolączką jest jeszcze wersjonowanie notatników. Przeważnie zalecane jest korzystanie z bookstore. Alteratywne rozwiązanie to przeformatowanie JSONa na Markdowna z pomocą wtyczki ipymd i wykorzystanie gita. Pod flagą IPythona program trochę lepiej sobie z tym radził. Może ktoś zna jakiś lepszy sposób?
  • Krytyka Jupytera: r-bloggers.com

Instalacja

Instrukcje instalacji znajdziemy w dokumentacji LINK

Jupyter tak samo jak Python działa na trzech najpopularnijszych systemach operacyjnych.



Komentarze