Џупитер радна свеска

Историјски преглед

Досад сте учећи Пајтон програмски језик приликом програмирања користили графичко развојно окружење (енгл. integrated development environment, IDE).

PyCharm.jpg

Данас ћете научити како да користите Џупитер интерактивну радну свеску (енгл. Jupyter Notebook).

jupyterpreview.png

Као што можете да видите на сликама, то су два потпуно различита свијета. Сада ћемо направити историјски преглед, објаснити шта су то Џупитер радне свеске и како су настале.

Литерално програмирање (Donald Ervin Knuth, 1984)

Литерално програмирање је парадигма програмирања коју је увео Доналд Кнут 1984. године. Његова идеја је била да се рачунарски програм посматра као литерално дјело у циљу његове боље документованости. Сматрао је да не треба да мислимо да нам је главни циљ да дајемо инструкције рачунару шта да ради, него да радије треба да се сконцентришемо на то да објаснимо људима шта желимо рачунар да уради. Тако долазимо до тога да се програмски код налази унутар описног текста, што је потпуно супротно од онога са чиме сте се до сада сусретали (текст унутар кода).

Mathematica (Stephen Wolfram, 1988)

Идејни творац програма Mathematica за симболичка математичка израчунавања је Стивен Волфрам, британски физичар, математичар, програмер, аутор и бизнисмен, познат по бројним радовима из подручја физике елементарних честица, математике, космологије, теорије сложености, као и по сајту Волфрам алфа. Wolfram Mathematica се састоји из два дијела, из језгра и предњег краја. Језгро интерпретира код писан у Волфрам језику и враћа резултат а предњи крај посједује графичко радно окружење које је у облику интерактивне радне свеске. Дизајнирао га је Theodore Gray и оно је уједно први историјски примјер радних свески. Радне свеске се састоје од низа ћелија које садрже програмски код са аутоматском бојом за истицање синтаксе, форматирани текст заједно са излазним резултатима, укључујући математичке изразе, графику, графичке компоненте, табеле и звук. Сви садржаји и форматирање су генерисани аутоматски или мијењани интерактивно. Такође су подржане стандардне могућности обраде ријечи. Радне свеске са њиховим садржајима се могу презентовати као изрази који могу бити креирани, мијењани или анализирани у програму Математика или конвертовани у друге формате. Документи се такође могли приказати као „слајдшоу“ за презентације.

Maple (1992)

Прва верзија програме Maple за симболична и бројчана израчунавања са графичким корисничким окружењем је изашла 1989. године (прва верзија Мејпла изашла 7 година раније) док је прва верзија са интерактивном радном свеском изашла 1992. године. И овдје се такође комбинују код, текст и излазни резултати извршеног кода. Подржана је и графика. Док се у програму Математика (као и у осталим програмима са радним окружењем облика радне свеске које ћемо набројати, па и у самој Џупајтер радној свесци) код извршава комбинацијом тастера \< Shift > и \< Enter >, у програму Мејпл се извршава притиском на тастер \< Enter >.

Sage (William Stein, 2005)

Појавом софтвера отвореног кода (1998), доводе до развоја многих бесплатних програма отвореног кода као и до раста популарности Пајтон научних алата отвореног кода.

Пајтон је у деведесетим годинама прошлог вијека проширен тако да му је додан тип низова за нумеричка израчунавања под називом Numeric. У 2001. години Травис Олифант, Перу Питерсон и Ерик Џонс су заједничким напорима направили стандардну Пајтон библиотеку нумеричких операција на врху Numeric структуре низа података и назвали добијену библиотеку SciPy. SciPy користе научници, аналитичари и инжењери за разна научна и техничка израчунавања. Иначе, Травис Олифант је човјек који је 2006. године написао библиотеку NumPy као мјешавину модула Numeric и Numarray. NumPy је Пајтон библиотека са великим колекцијом математичких функција која подржава рад са великим, вишедимензионалним низовима и матрицама.

Убрзо након тога, Фернандо Перез објавио је IPython (интерактивни Пајтон), окружење командне линије за интерактивна израчунавања у Пајтону, са подршком за визуализацију података те паралелно и дистрибуирано израчунавање. На тај начин је себи направио mini-Mathematica Пајтон програм над типовима Numeric и Gnuplot са неких 250+ линија кода.

John Hunter је 2003. године објавио прву верзију Matplotlib-а, 2D Пајтон библиотеке за цртање графикона. Оно што је занимљиво је то да је Matplotlib настао као закрпа за IPython, коју Фернандо Перез није имао времена да прегледа и одобри због рада на докторату.

Sage је бесплатан програм отвореног кода за симболична рачунарска израчунавања који је настао 2005. године као алтернатива за програме Magma, Maple, Mathematica и MATLAB. Велика предност му је та што је бесплатан, за разлику од ова четири набројана програма. Базиран је на горе набројаним Пајтон типовима и библиотекама као и још многим другим, а написан је у програмским језицима Python и Cython. Сејџ је интерактивна радна свеска а корисниково радно окружење је интернет прегледач.

IPython (Fernando Pérez, 2011)

IPython је постао интерактивна радна свеска 2011. године. Корисниково радно окружење је такође интернет прегледач. Fernando Pérez и Robert Kern су радили на интерактивној радној радној свесци истовремено док је развијана Сејџ радна свеска. Fernando Pérez и William Stein били су у контакту од 2005. године па надаље и заједно су сарађивали с обзиром да је IPython коришћен у Sage окружењу командне линије.

Jupyter Notebook (2015)

Пројекат Jupyter је настао 2014. године. Пројекат одржава рад у науци о подацима (енгл. data science) као и научна израчунавања у више програмских језика те развој програма отвореног кода. Базиран је на IPython-у који чини задњи крај тј. језгро Џупитер интерактивне радне свеске. Као задњи крај Џупитер радне свеске подржана су језгра за педесетак програмских језика. Назив Jupyter потиче од три основна програмска језика која су била подржана у пројекту: *Julia, **Python и R**. Назив је такође дат у част Галилејових радних свесака у којима је описао открића Јупитерових мјесеца. О предњем крају тј. интерактивној IPython радној свесци смо већ причали. IPython радно окружење је преименовано у Jupyter notebook* 2015. године (IPython 4.0 – Jupyter 1.0). Врло брзо је Џупитер радна свеска по популарности престигла Математика радну свеску.

Инсталација

Користићемо Anaconda-у, бесплатну водећу платформу за научна израчунавања (науку о подацима, практицирање машинског учења...), дистрибуцију високих перфоманси за Python и R у коју је укључен скуп алата који нам омогућава рад са хиљадама пакета и библиотека отвореног кода. Ми ћемо користити тренутно доступну верзију платформе Anaconda Individual Edition у коју су укључени Anaconda Navigator 1.9.2, Python 3.8 и Jupyter Notebook 3.0.6. Сматрам да је инсталација дистрибуције Anaconda најлакши начин да се инсталира и покрене Jupyter Notebook. Платформа је одлична за учење и лакши приступ програмирању у Пајтону. На сљедећем линку имате упутство за инсталацију и покретање Jupyter Notebook-а:

https://youtu.be/uOwCiZKj2rg

Jupyter Notebook такође можемо инсталирати преко алата pip3 и покренути га преко командне линије:

pip3 install --upgrade pip
pip3 install jupyter
jupyter notebook

Упутство за рад

Упознавање радног окружења

Идите у подмени User Interface Tour менија Help и стрелицама вршите навигацију како би сте се упознали за радним окружењем. Такође можете погледати сљедећи дигитални шалабахтер (пушкице) са прегледом најважнијих команди.

In [1]:
from IPython.display import IFrame
IFrame('https://www.edureka.co/blog/wp-content/uploads/2018/10/Jupyter_Notebook_CheatSheet_Edureka.pdf', width=800, height=500)
Out[1]:

Рад са ћелијама

Свака ћелија Џупитер радне свеске може да садржи текст, математички израз или низ Пајтон наредби. Ова ћелија садржи текст док наредне ћелије садрже математичке изразе или низове Пајтон наредби.

Ћелију можемо уређивати након што притиснемо тастер \< Enter > (видјећете зелени оквир око ћелије).

Ћелију можемо извршавати након што притиснемо тастер \< Esc > (видјећете плави оквир око ћелије). Ћелије извршавамо притиском на тастере \< Shift > и \< Enter > истовремено.

In [2]:
2+2
Out[2]:
4
In [3]:
(1/2+0.75+(-0.25))*4
Out[3]:
4.0
In [4]:
7//2
Out[4]:
3
In [5]:
7%2
Out[5]:
1
In [6]:
3**4
Out[6]:
81
In [7]:
print('Здраво свијете!')
Здраво свијете!
In [8]:
x=2
y=2
print(x+y)
4
In [9]:
from math import pi

r = float(input("Унесите дужину полупречника круга: "))
obim = 2 * r * pi
print("Обим круга је:", obim)
Унесите дужину полупречника круга: 5
Обим круга је: 31.41592653589793
In [10]:
from math import sqrt

def hipotenuza(a, b):    
    c = sqrt(a**2 + b**2)
    return c;

a = float(input("Унесите дужину катете a правоуглог троугла: "))
b = float(input("Унесите дужину b, друге катете правоуглчог троугла: "))
print("Дужина хипотенузе c је:", hipotenuza(a,b))
Унесите дужину катете a правоуглог троугла: 3
Унесите дужину b, друге катете правоуглчог троугла: 4
Дужина хипотенузе c је: 5.0
In [11]:
from math import sqrt

print(sqrt(2))
1.4142135623730951
In [12]:
for n in range(1,11):
    print(n**2)
1
4
9
16
25
36
49
64
81
100
In [13]:
import matplotlib
import matplotlib.pyplot as plt
import numpy as np

%matplotlib inline

# Data for plotting
t = np.arange(0.0, 2.0, 0.01)
s = 1 + np.sin(2 * np.pi * t)

fig, ax = plt.subplots()
ax.plot(t, s)

ax.set(xlabel='вријеме (s)', ylabel='напон (mV)',
       title='График')
ax.grid()

fig.savefig("test.png")
plt.show()
In [14]:
from IPython.display import HTML
import warnings

warnings.filterwarnings('ignore')

HTML('<iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/7jiPeIFXb6U" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>')
Out[14]:
In [15]:
from IPython.display import YouTubeVideo
YouTubeVideo('QR7gR3njNWw', width=800, height=300)
Out[15]:

Форматирање текста

Markdown је једноставан језик за означавање који нам помаже да обичан текст форматирамо тако да изгледа много боље. Markdown су креирали John Gruber и Aaron Swartz 2004. године.

Када пишемо текст у ћелију који форматирамо са Markdown синтаксом, ми додајемо атрибуте на ријечи, а изглед текста видимо тек након извршавања ћелије. Да бисмо припремили ћелију за писање текста са Markdown синтаксом, треба да притиснемо комбинацију тастера \< Esc > и \< M >. Ако желимо да ћелија поново буде спремна за писање и извршавање кода, треба да притиснемо комбинацију тастера \< Esc > и \< Y >.

Markdown ћелије могу да садрже:

  • markdown
  • HTML
  • LaTeX
  • обичан текст
  • слике
  • видео
  • било шта шта интернет прегледач може да разумије и прикаже

Сада ћемо навести неке примјере markdown форматирања текста. Моћи ћете упоредо да пратите markdown синтаксу и изглед форматираног текста.

Наслови

# Наслов 1
## Наслов 2
### Наслов 3
#### Наслов 4
##### Наслов 5
###### Наслов 6

Наслов 1

Наслов 2

Наслов 3

Наслов 4

Наслов 5
Наслов 6

Подебљани текст

**Ово је подебљани текст**
__Ово је подебљани текст__

Ово је подебљани текст
Ово је подебљани текст

Укошени текст

*Ово је укошени текст*
_Ово је укошени текст_

Ово је укошени текст
Ово је укошени текст

Прекрижени текст

~~Ово је прекрижени текст~~

Ово је прекрижени текст

Приказивање специјалних знакова

\# Ово није наслов

# Ово није наслов

Параграф (пасус) текста

Ово је први пасус.

Ово је други пасус.

Пасусе раздвајамо тако да притиснемо два или више пута тастер ентер.

Прелазак у нови ред

Ово је први ред.
Ово је други ред.
У нови ред прелазимо тако што на крају првог рета притиснемо два пута размакницу текста и на крају тастер ентер.

Цитати

>Ово је цитат

Ово је цитат

>Ово су
>>угњеждени
>>>цитати

Ово су

угњеждени

цитати

Хоризонтална линија

---
___
***




Уређена листа

  1. Cheese
  2. Carrot
  3. Coconut

Неуређена листа

- Cheese
- Carrot
- Coconut

  • Cheese
  • Carrot
  • Coconut

Убацивање слика

Слике које се налазе на рачунару можемо убацивати превлачењем мишем или отварањем подменија Insert Image менија Edit.

Такође можемо убацивати слике путем линка на сљедећи начин:

![](https://www.python.org/static/community_logos/python-logo-master-v3-TM.png)

Слике које се налазе на интернету можемо у ћелије убацивати путем линка на сљедећа два начина.

Први начин:

![](https://www.python.org/static/community_logos/python-logo-master-v3-TM.png "Пајтон лого 1")

Други начин:

![][logo]

[logo]: https://www.python.org/static/community_logos/python-logo-master-v3-TM.png "Пајтон лого 2"

Аутоматски линкови

Аутоматске линкове постављамо тако да их копирамо и налијепимо у ћелију.

https://www.python.org/

Стандардни линкови

[Овдје кликни](https://www.python.org/)

[Овдје кликни](https://www.python.org/ "Пајтон")

Линк на сидро

У овој ћелији ћемо поставити сидро.

<a id="sidro"></a>

У овој ћелији постављамо линк на сидро.

[линк на сидро](#sidro)

линк на сидро

У овој ћелији ћемо поставити наслов:

Наслов

У овој ћелији постављамо линк на наслов.

[линк на наслов](#Наслов)

линк на наслов

Листа задатака

- [x] Задатак 1
- [ ] Задатак 2

  • [x] Задатак 1
  • [ ] Задатак 2

Програмски код

`линија кода`

```овдје може да се напише име програмског језика
блок кода ```

print("Здраво свијете!")

s = "Здраво свијете!"
print s

Табеле

|Назив колоне 1|Назив колоне 1|Назив колоне 1|
|------|------|------|
|А |Б |В |
|1 |2 |3 |

Назив колоне 1 Назив колоне 1 Назив колоне 1
А Б В
1 2 3

HTML код

<span style="color:red">Ово је текст</span>

Ово је текст

<span style="font-family:Comic Sans MS">Ово је текст</span>

Ово је текст

<p style="background:black">
<code style="background:black;color:white">C:\Users\YOUR_USERNAME> pip3 install jupyter
</code>
</p>

C:\Users\YOUR_USERNAME> pip3 install jupyter

<div class="alert alert-block alert-success">
<b>Success:</b> Акција је успјешно проведена.
</div>
Success: Акција је успјешно проведена.

LaTeX код

$\sqrt{k}$

$\sqrt{k}$

Геометријски облици

&#reference_number;

&#9712;

IPython magic команде

magic команде су направљене са циљем да се ријеше разни проблеми који се јављају приликом анализе података уз помоћ програмског језика Пајтон. Разликујемо magic команде са префиксом % које заузимају један ред и magic команде са префиксом %% које заузимају више редова.

У наредним редовима можете видјети листу свих magic команди, као и линк са примјерима и објашњењима.

In [16]:
%lsmagic
Out[16]:
Available line magics:
%alias  %alias_magic  %autoawait  %autocall  %automagic  %autosave  %bookmark  %cd  %clear  %cls  %colors  %conda  %config  %connect_info  %copy  %ddir  %debug  %dhist  %dirs  %doctest_mode  %echo  %ed  %edit  %env  %gui  %hist  %history  %killbgscripts  %ldir  %less  %load  %load_ext  %loadpy  %logoff  %logon  %logstart  %logstate  %logstop  %ls  %lsmagic  %macro  %magic  %matplotlib  %mkdir  %more  %notebook  %page  %pastebin  %pdb  %pdef  %pdoc  %pfile  %pinfo  %pinfo2  %pip  %popd  %pprint  %precision  %prun  %psearch  %psource  %pushd  %pwd  %pycat  %pylab  %qtconsole  %quickref  %recall  %rehashx  %reload_ext  %ren  %rep  %rerun  %reset  %reset_selective  %rmdir  %run  %save  %sc  %set_env  %store  %sx  %system  %tb  %time  %timeit  %unalias  %unload_ext  %who  %who_ls  %whos  %xdel  %xmode

Available cell magics:
%%!  %%HTML  %%SVG  %%bash  %%capture  %%cmd  %%debug  %%file  %%html  %%javascript  %%js  %%latex  %%markdown  %%perl  %%prun  %%pypy  %%python  %%python2  %%python3  %%ruby  %%script  %%sh  %%svg  %%sx  %%system  %%time  %%timeit  %%writefile

Automagic is ON, % prefix IS NOT needed for line magics.

Командна линијa

У Џупајтер радним свескама можемо извршавати и команде са командне линије (CMD у Windows-у; Bourne shell у Linux-у). Сада ћемо извршити команду која излистава фајлове и фолдере који су видљиви и налазе се у текућем фолдеру. Ако сте тренутно у Windows-у извршите команду 'dir', а ако сте у Linux-у извршите команду 'ls'. На линковима испод можете погледати документацију за командну линију.

In [17]:
!dir
 Volume in drive C has no label.
 Volume Serial Number is 5C10-E97B

 Directory of C:\Users\sbWIN\anaconda3\envs\myenv

12/26/2020  06:24 PM    <DIR>          .
12/26/2020  06:24 PM    <DIR>          ..
12/26/2020  04:12 PM                43 .condarc
12/26/2020  06:24 PM    <DIR>          .ipynb_checkpoints
12/26/2020  06:21 PM                 0 .nonadmin
12/26/2020  05:41 PM         2,555,757 Analiza i vizualizacija podataka.ipynb
12/26/2020  06:21 PM    <DIR>          conda-meta
12/01/2020  08:50 PM           309,767 IMDB-Movie-Data.csv
12/26/2020  05:24 PM           628,026 Jupyter Notebook.ipynb
12/15/2020  12:06 AM           970,826 jupyternotebook.png
12/26/2020  05:35 PM                63 nova_kupovina.csv
12/26/2020  05:35 PM             5,632 nova_kupovina.xls
12/15/2020  12:06 AM           326,772 pycharm.jpg
12/26/2020  06:24 PM            18,128 test.png
              10 File(s)      4,815,014 bytes
               4 Dir(s)  81,783,791,616 bytes free

Колекција Џупајтер радних свески

Овдје можете прегледати Џупајтер радне свеске из колекције.