Досад сте учећи Пајтон програмски језик приликом програмирања користили графичко развојно окружење (енгл. integrated development environment, IDE).
Данас ћете научити како да користите Џупитер интерактивну радну свеску (енгл. Jupyter Notebook).
Као што можете да видите на сликама, то су два потпуно различита свијета. Сада ћемо направити историјски преглед, објаснити шта су то Џупитер радне свеске и како су настале.
Литерално програмирање је парадигма програмирања коју је увео Доналд Кнут 1984. године. Његова идеја је била да се рачунарски програм посматра као литерално дјело у циљу његове боље документованости. Сматрао је да не треба да мислимо да нам је главни циљ да дајемо инструкције рачунару шта да ради, него да радије треба да се сконцентришемо на то да објаснимо људима шта желимо рачунар да уради. Тако долазимо до тога да се програмски код налази унутар описног текста, што је потпуно супротно од онога са чиме сте се до сада сусретали (текст унутар кода).
Идејни творац програма Mathematica за симболичка математичка израчунавања је Стивен Волфрам, британски физичар, математичар, програмер, аутор и бизнисмен, познат по бројним радовима из подручја физике елементарних честица, математике, космологије, теорије сложености, као и по сајту Волфрам алфа. Wolfram Mathematica се састоји из два дијела, из језгра и предњег краја. Језгро интерпретира код писан у Волфрам језику и враћа резултат а предњи крај посједује графичко радно окружење које је у облику интерактивне радне свеске. Дизајнирао га је Theodore Gray и оно је уједно први историјски примјер радних свески. Радне свеске се састоје од низа ћелија које садрже програмски код са аутоматском бојом за истицање синтаксе, форматирани текст заједно са излазним резултатима, укључујући математичке изразе, графику, графичке компоненте, табеле и звук. Сви садржаји и форматирање су генерисани аутоматски или мијењани интерактивно. Такође су подржане стандардне могућности обраде ријечи. Радне свеске са њиховим садржајима се могу презентовати као изрази који могу бити креирани, мијењани или анализирани у програму Математика или конвертовани у друге формате. Документи се такође могли приказати као „слајдшоу“ за презентације.
Прва верзија програме Maple за симболична и бројчана израчунавања са графичким корисничким окружењем је изашла 1989. године (прва верзија Мејпла изашла 7 година раније) док је прва верзија са интерактивном радном свеском изашла 1992. године. И овдје се такође комбинују код, текст и излазни резултати извршеног кода. Подржана је и графика. Док се у програму Математика (као и у осталим програмима са радним окружењем облика радне свеске које ћемо набројати, па и у самој Џупајтер радној свесци) код извршава комбинацијом тастера < Shift > и < Enter >, у програму Мејпл се извршава притиском на тастер < Enter >.
Појавом софтвера отвореног кода (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 је постао интерактивна радна свеска 2011. године. Корисниково радно окружење је такође интернет прегледач. Fernando Pérez и Robert Kern су радили на интерактивној радној радној свесци истовремено док је развијана Сејџ радна свеска. Fernando Pérez и William Stein били су у контакту од 2005. године па надаље и заједно су сарађивали с обзиром да је IPython коришћен у Sage окружењу командне линије.
Пројекат 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-а:
Jupyter Notebook такође можемо инсталирати преко алата pip3 и покренути га преко командне линије:
pip3 install --upgrade pip
pip3 install jupyter
jupyter notebook
Идите у подмени User Interface Tour менија Help и стрелицама вршите навигацију како би сте се упознали за радним окружењем. Такође можете погледати сљедећи дигитални шалабахтер (пушкице) са прегледом најважнијих команди.
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)
Свака ћелија Џупитер радне свеске може да садржи текст, математички израз или низ Пајтон наредби. Ова ћелија садржи текст док наредне ћелије садрже математичке изразе или низове Пајтон наредби.
Ћелију можемо уређивати након што притиснемо тастер < Enter > (видјећете зелени оквир око ћелије).
Ћелију можемо извршавати након што притиснемо тастер < Esc > (видјећете плави оквир око ћелије). Ћелије извршавамо притиском на тастере < Shift > и < Enter > истовремено.
2+2
4
(1/2+0.75+(-0.25))*4
4.0
7//2
3
7%2
1
3**4
81
print('Здраво свијете!')
Здраво свијете!
x=2
y=2
print(x+y)
4
from math import pi
r = float(input("Унесите дужину полупречника круга: "))
obim = 2 * r * pi
print("Обим круга је:", obim)
Унесите дужину полупречника круга: 5 Обим круга је: 31.41592653589793
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
from math import sqrt
print(sqrt(2))
1.4142135623730951
for n in range(1,11):
print(n**2)
1 4 9 16 25 36 49 64 81 100
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()
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>')
from IPython.display import YouTubeVideo
YouTubeVideo('QR7gR3njNWw', width=800, height=300)
Markdown је једноставан језик за означавање који нам помаже да обичан текст форматирамо тако да изгледа много боље. Markdown су креирали John Gruber и Aaron Swartz 2004. године.
Када пишемо текст у ћелију који форматирамо са Markdown синтаксом, ми додајемо атрибуте на ријечи, а изглед текста видимо тек након извршавања ћелије. Да бисмо припремили ћелију за писање текста са Markdown синтаксом, треба да притиснемо комбинацију тастера < Esc > и < M >. Ако желимо да ћелија поново буде спремна за писање и извршавање кода, треба да притиснемо комбинацију тастера < Esc > и < Y >.
Markdown ћелије могу да садрже:
Сада ћемо навести неке примјере markdown форматирања текста. Моћи ћете упоредо да пратите markdown синтаксу и изглед форматираног текста.
# Наслов 1
## Наслов 2
### Наслов 3
#### Наслов 4
##### Наслов 5
###### Наслов 6
**Ово је подебљани текст**
__Ово је подебљани текст__
Ово је подебљани текст
Ово је подебљани текст
*Ово је укошени текст*
_Ово је укошени текст_
Ово је укошени текст
Ово је укошени текст
~~Ово је прекрижени текст~~
Ово је прекрижени текст
\# Ово није наслов
# Ово није наслов
Ово је први пасус.
Ово је други пасус.
Пасусе раздвајамо тако да притиснемо два или више пута тастер ентер.
Ово је први ред.
Ово је други ред.
У нови ред прелазимо тако што на крају првог рета притиснемо два пута размакницу текста и на крају тастер ентер.
>Ово је цитат
Ово је цитат
>Ово су
>>угњеждени
>>>цитати
Ово су
угњеждени
цитати
---
___
***
- 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/ "Пајтон")
У овој ћелији ћемо поставити наслов:
- [x] Задатак 1
- [ ] Задатак 2
print("Здраво свијете!")
s = "Здраво свијете!"
print s
|Назив колоне 1|Назив колоне 1|Назив колоне 1|
|------|------|------|
|А |Б |В |
|1 |2 |3 |
Назив колоне 1 | Назив колоне 1 | Назив колоне 1 |
---|---|---|
А | Б | В |
1 | 2 | 3 |
<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>
$\sqrt{k}$
$\sqrt{k}$
◰
magic команде су направљене са циљем да се ријеше разни проблеми који се јављају приликом анализе података уз помоћ програмског језика Пајтон. Разликујемо magic команде са префиксом % које заузимају један ред и magic команде са префиксом %% које заузимају више редова.
У наредним редовима можете видјети листу свих magic команди, као и линк са примјерима и објашњењима.
%lsmagic
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.
У Џупајтер радним свескама можемо извршавати и команде са командне линије (CMD у Windows-у; Bourne shell у Linux-у). Сада ћемо извршити команду која излистава фајлове и фолдере који су видљиви и налазе се у текућем фолдеру. Ако сте тренутно у Windows-у извршите команду 'dir', а ако сте у Linux-у извршите команду 'ls'. На линковима испод можете погледати документацију за командну линију.
!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