Python programming

Previous

Next

Introduction

Питање: Зашто не направите неку страницу блога, као за теорију информације, па само ставите линк на питања из програмирања?

Одговор: Ок, примио сам к знању, нека то буде ова страница и нека се тиче само Питона. Ниво којег ћу се овде држати биће отприлике за програмере који су тек стигли да се носе са захтевима са странице Питон 3.8. Програмирање је широка тема и погубио бих се ако се распем на све могуће одговоре које ми траже (не само бивши ученици). Огроман је и за једну страницу превелик чак и распон ситуација које сам Питон може решавати, па лакше и теже задатке од најављених оставимо за неку другу прилику.

Питања и одговоре овде остављане бираћу тако да буду довољно општи да могу послужити за поновљене прилике.

Folders

Питање: Како остављати Питонове програме (модуле) на различитим адресама (фолдерма) локалног рачунара и како их затим позивати из главног програма?

Одговор: Рецимо да имате Python 3.9 програм. Он је у пуном смислу бесплатан софтвер и инсталација је слободна са њиховог званичног сајта Када сте изаберали верзију и кликнули на пример „Download Python 3.9.7“, инсталирација се обављала аутоматски, рецимо у фолдер

C:\Users\WIN10\AppData\Local\Programs\Python\Python39

Тај назовимо „основни“ фолдер. У основни фолдер поставите текстуалну датотеку (рецимо Notepad) назива „win.py“. Име може бити било које (не мора win), али екстензија није txt, него мора бити py, дакле Питонова. Поента је у томе да ће из сировог основног програма, Питоновог едитора (IDLE Shell 3.9.7, или сличног) радити позив овог модула, простом наредбом

>>> import win

Та активира модул win.py смештен у основном фолдеру, а у тај модул можете низати наредбе по жељи, рецимо које ће активирати (учинити Питону видљивим) и друге фолдере локалног рачунара. Тако на пример, ако су

import sys
sys.path.append('D:\Python')    
    

прве две наредба датотете win.py, а у фолдеру D:\Python имате датотеку назива „modul.py“, даље ћете је из главног програма моћи активирати са „import modul“. Када је модул импортован, а у њему функција назива „funk()“, позивате је са „modul.funk()“. Детаље погледајте у следећим примерима. Једноставно као слагање Лего коцкица!?

Cyrillicator

Питање: Како да направим приватни ћирилизатор на свом рачунару, еквивалент ономе какав имате на страници (Cyrillicator)?

Одговор: Тај је рађен у јава-скрипту (JavaScript) и уметнут на мрежну (html) страницу, а слично можете урадити и на локалном (PC) рачунару. Ако хоћете „Ћирилизатор“ преко Питона, претпостављам да имате неку верзију таквог програма (нпр. Python 3.9) и да је његова основна адреса на локалном рачунару као што пише у првом реду следећег модула. Прекуцајте овај текст и оставите га у датотеци „modul.py“ на „основној“ адреси.

#C:\Users\WIN10\AppData\Local\Programs\Python\Python39
txt = ''
def cirlat():
        azbuka_srb = ['А', 'Б', 'В', 'Г', 'Д', 'Ђ', 'Е', 'Ж', 'З', 'И', 'Ј', 'К', 'Л', 'Љ', 'М', 'Н', 'Њ', 'О', 'П', 'Р', 'С', 'Т', 'Ћ', 
        'У', 'Ф', 'Х', 'Ц', 'Ч', 'Џ', 'Ш', 'а', 'б', 'в', 'г', 'д', 'ђ', 'е', 'ж', 'з', 'и', 'ј', 'к', 'л', 'љ', 'м', 'н', 'њ', 'о', 'п', 
        'р', 'с', 'т', 'ћ', 'у', 'ф', 'х', 'ц', 'ч', 'џ', 'ш']
        azbuka_cro = ['A', 'B', 'V', 'G', 'D', 'Đ', 'E', 'Ž', 'Z', 'I', 'J', 'K', 'L', 'Lj', 'M', 'N', 'Nj', 'O', 'P', 'R', 'S', 'T', 'Ć', 
        'U', 'F', 'H', 'C', 'Č', 'Dž', 'Š', 'a', 'b', 'v', 'g', 'd', 'đ', 'e', 'ž', 'z', 'i', 'j', 'k', 'l', 'lj', 'm', 'n', 'nj', 'o', 'p', 
        'r', 's', 't', 'ć', 'u', 'f', 'h', 'c', 'č', 'dž', 'š']
        print("ЋИРИЛИЗАТОР")
        txt = input('Унеси ћирилични текст: ')
        for i,x in enumerate(azbuka_srb):
                txt = txt.replace(azbuka_srb[i],azbuka_cro[i])
                continue
        print(txt)
        return

def latcir():
        print("ĆIRILIZATOR")
        txt = input('Unesi latinični tekst: ')
        slova_srb = ['Љ','Њ','Џ','љ','њ','џ','А','Б','В','Г','Д','Ђ','Е','Ж','З','И','Ј','К','Л','М','Н','О','П','Р','С','Т','Ћ','У','Ф',
        'Х','Ц','Ч','Ш','а','б','в','г','д','ђ','е','ж','з','и','ј','к','л','м','н','о','п','р','с','т','ћ','у','ф','х','ц','ч','ш']
        slova_cro = ['Lj','Nj','Dž','lj','nj','dž','A','B','V','B','D','Đ','E','Ž','Z','I','J','K','L','M','N','O','P','R','S','T','Ć',
        'U','F','H','C','Č','Š','a','b','v','g','d','đ','e','ž','z','i','j','k','l','m','n','o','p','r','s','t','ć','u','f','h','c','č',
        'š']
        for i,x in enumerate(slova_cro):
                txt = txt.replace(slova_cro[i],slova_srb[i])
                continue
        print(txt)
        return
    

Затим, активирајте Питонов едитор и са (било које адресе) локалног рачунара активирајте овај модул наредбом „import modul“. То радите једнократно, а када год после тога куцате наредбу „modul.cirlat()“, позив функције „cirlat()“ датог модула, на екрану ће вам, без „импорта“, изаћи упит:

 
	 >>> import modul
	 >>> modul.cirlat()
	 ЋИРИЛИЗАТОР
	 Унеси ћирилични текст: Шредингер и Њутн шалећи се рјешавали су најтеже једначине. 
	 Šredinger i Njutn šaleći se rješavali su najteže jednačine.
    

Укуцали сте ћирилични текст (Шредингер ... једначине.), притиснули ентер и добили испис на екрану тог текста пресловљеног у латиницу (Šredinger ... jednačine.). Аналогно биће:

	 >>> modul.latcir()
	 ĆIRILIZATOR
	 Unesi latinični tekst: Šredinger i Njutn šaleći se rješavali su najteže jednačine.
	 Шредингер и Њутн шалећи се рјешавали су најтеже једначине.
    

Укуцали сте латиничну реченицу, притиснули ентер и добили је пресловљену у ћирилицу. Код преправљања горњег кода (модула) водите рачуна да се сви гласови ћирилицом пишу једним словом, а латиницом неки са два. Зато се редослед датог низа слова прве функције, cirlat(), може мењати по вољи, али се у другој, latcir(), прва морају наводити двострука слова латинице. Даље, на пример, сами можете додавати изузетке попут коњукција → конјункција.

Loop For

Питање: Необична ми је ова наредба „for i,x in enumerate(tekst)“ у ћирилизатору, горњем примеру. Она првим индексом „i“ пребројава слова реченице „tekst“, а другим „x“ из ње узима текуће слово, претпостављам. Има ли Питон још неку сличну необичност петље „for“?

Одговор: Добро претпостављате. Питон има неколико замена за петљу „for“, на пример, њен основни облик

lista = [2, 5, 7]
for x in lista:
    print(x)    
    

који ће одштампати један испод другог елементе листе (овде 2, 5 и 7), може се писати

lista = [2, 5, 7]
x = lista.__iter__()
x1 = x.__next__()
print(x1)
x2 = x.__next__()
print(x2)
x3 = x.__next__()
print(x3)    
    

Затим, уместо функције „__iter__()“ можете писати „iter()“, а уместо „__next__()“ просто „next()“. Иначе, петља „for“ интерно користи петљу „while“, ево како

lista = [2, 5, 7]
x = iter(lista)
while True:
    try:
        y = next(x)
        print(y)
    except StopIteration:
        break    
    

То су тзв. итерације (Iterators) које можете налазити по интернету, а онда и сами правити. Ево једног таквог објекта „Paran“ који генерише низ парних бројева. У наставку је начин позива и штампања.

class Paran:
    def __init__(self, max):
        self.n = 2
        self.max = max
    def __iter__(self):
        return self
    def __next__(self):
        if self.n <= self.max:
            broj = self.n
            self.n += 2
            return broj
        else:
            raise StopIteration
brojevi = Paran(10)
print(next(brojevi))
print(next(brojevi))
print(next(brojevi))    
    

Резултат штампања је низ бројева (овде 2, 4 и 6) писан један испод другог.

Vigenère

Питање: Знам много о вредностима кодирања методом Вигенерова, али никако не успевам написати одговарајући компјутерски програм. Ви имате три верзије на свом сајту (Vigenère), али су писане на начин (php) који не могу копирати. Можете ли ми послати тај код?

Одговор: Ставите на „основну страну“ (в. горе „Ћирилизатор“) у датотеку „modul.py“ следеће две Питонове функције. Прва кодира текст (енглеским алфабетом писан) на Вигенеров начин, друга га декодира.

def vgciph():
	tabula = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	print("Vigenère Cipher, coding")
	print(tabula)
	poruka1 = input("Plaintext: ") 
	kljuc1 = input("Key: ")
	kljuc = kljuc1.upper()
	poruka = poruka1.upper()
	n = len(poruka)
	kljuc2 = ''
	while len(kljuc2) < n:
		kljuc2 = kljuc2 + kljuc 
	tabula = tabula + tabula
	poruka2 = ''
	i = 0
	for x in poruka:
		x2 = x
		if tabula.find(x) > -1:
			x1 = kljuc2[i]
			i1 = tabula.find(x1)
			i2 = tabula.find(x)
			if (i1 != -1) and (i2 != -1):
				x2 = tabula[i1+i2]
			i = i + 1
		poruka2 = poruka2 + x2
	print(" Plaintext: ", poruka1)
	print("       Key: ", kljuc1)
	print("Ciphertext: ", poruka2)
	
def ciphvg():
	tabula = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
	print("Vigenère Cipher, decoding")
	print(tabula)
	poruka1 = input("Ciphertext: ")
	kljuc1 = input("Key: ")
	kljuc = kljuc1.upper()
	poruka = poruka1.upper()
	n = len(poruka)
	kljuc2 = ''
	while len(kljuc2) < n:
		kljuc2 = kljuc2 + kljuc
	tabula = tabula + tabula
	poruka2 = ''
	i = 0
	for x in poruka:
		x2 = x
		if tabula.find(x) > -1:
			x1 = kljuc2[i]
			i1 = tabula.find(x1)
			i2 = tabula.find(x)
			if (i1 != -1) and (i2 != -1):
				x2 = tabula[i2-i1]
			i = i + 1
		poruka2 = poruka2 + x2
	print("Ciphertext: ", poruka1)
	print("       Key: ", kljuc1)
	print(" Plaintext: ", poruka2)
    

Прву од следећих наредби, import modul, куцате само једном, а затим функције ciphvg() и vgciph() понављате по жељи. Ево једног примера употребе. Кључ, лозинка је заједничка реч, овде „ponedeljak“.

>>> import modul
>>> modul.ciphvg()
Vigenère Cipher, decoding
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Ciphertext: Ovo je tajni kod.
Key: ponedeljak
Ciphertext:  Ovo je tajni kod.
       Key:  ponedeljak
 Plaintext:  ZHB FB PPANY VAQ.
 
>>> modul.vgciph()
Vigenère Cipher, coding
ABCDEFGHIJKLMNOPQRSTUVWXYZ
Plaintext: ZHB FB PPANY VAQ.
Key: ponedeljak
 Plaintext:  ZHB FB PPANY VAQ.
       Key:  ponedeljak
Ciphertext:  OVO JE TAJNI KOD. 
    

Након позива функције ciphvg() и уноса текста који треба кодирати „Ovo je tajni kod.“, уносите кључ „ponedeljak“ и добијате кодирани текст „ZHB FB PPANY VAQ.“ Позивом друге функције, vgciph(), исти декодирате у полазни текст „OVO JE TAJNI KOD.“. Програм је даље лако прилагођавати, надам се.

Site Title

Питање: Како да Питоном читам сајтове?

Одговор: Ево једног једноставног примера, naslov(). То је функција која чита сајт унешене адресе од стране корисника (http://rvukovic.net/index.html) и штампа наслов (title):

def naslov():
        from urllib.request import urlopen
        url = input('Унеси адресу сајта: ')
        page = urlopen(url)
        html = page.read().decode("utf-8")
        start_index = html.find("<title>") + len("<title>")
        end_index = html.find("</title>")
        naslov = html[start_index:end_index]
        print(" Наслов: ", naslov)    
    

Функцију naslov() ставите на „основну адресу“ (в. први пример, ћирилизатор) рецимо у модул „modul.py“ и из Питоновог едитора позовите је наредбама:

>>> import modul
>>> modul.naslov()
Унеси адресу сајта: http://rvukovic.net
 Наслов:  Rastko Vuković, private site
    

Програм подешавајте по жељи ради издвајања другачијих делова сајта. Када текст који тражите можда има неки лапсус у облику сувишних знакова или празнина (нпр. доњу црту "<_title>") тада помаже рецимо тражење „регуларних израза“. На пример

>>> import re
>>> re.findall("<.*title>", txt)
    

налази све изразе унутар датог текста (txt) који почињу са заградом „<“ а завршавају са „title>“. Када уместо „.*“ ставите само тачку „.“ без пахуље „*“, између може бити било који али тачно један знак, ако ставите две тачке „..“ то могу бити два било која знака, са три тачке три знака и тако даље.

Urlurl

Питање: Можете ли ми написати Питон програм који са мог рачунара локално са сајта на интернтету скупља линкове? Ако може без додатних инсталираних модула (њихове производње).

Одговор: Ок, ево једног таквог. Иначе волим да сам правим модуле. Са дате адресе овај купи до 100 линкова, нумерише све и са тим редним бројевима приказује на екрану само пуне (који садрже http). Упит нове адресе понавља до 10 пута, или до некоректног уноса.

from urllib.request import urlopen
i = 1
while i < 10:
  url = input('Унеси адресу сајта: ')
  if (len(url) < 4): break
  page = urlopen(url)
  html = page.read().decode("utf-8")
  s_telo = html.find("<body") + len("<body")
  e_telo = html.find("</body>")  
  telo = html[s_telo:e_telo]
  j = 1
  k = 1
  while j < 100:
    s_link = telo.find("a href=", k) + len("a href=") + 1
    e_link = telo.find('"', s_link + 1)
    link = telo[s_link:e_link]
    if ("http" in link):
      txt1 = "{0}. {1}".format(j,link)
      print(txt1)
    if (e_link < k): j=100
    k = e_link
    j = j + 1
  i = i + 1    
    

То је заокружен, комплетиран програм и овако ради.

Унеси адресу сајта: http://rvukovic.net
44. http://www.ibo.org/
45. http://www.gimnazijabanjaluka.org/
48. https://www.facebook.com/rvukovic
49. https://twitter.com
50. https://matf.academia.edu
55. https://www.facebook.com/Kungfu-Wushu-Klub-Lotos-Banjaluka-156164271119041/
56. https://www.youtube.com/watch?v=K3tyiCX8ug8
88. http://www.os-templates.com/
Унеси адресу сајта: 
>>> 
    

На други унос (адресе сајта) само је притиснут „Enter“ и прекинут је низ од десет максималних (i < 10) уноса. Редни бројеви лево у сваком ретку исписа показују који је то линк по реду унутар сајта, од сто максималних (j < 100), али приказују се на екрану само пуни. Користите даље овај програм као скелет. Модификујте га рецимо аутоматским учитавањем сајта за претраживање, позивом из другог програма, исписом пронађених адреса у датотеку, другим избором линкова, повећањем (смањењем) ограничења прочитаних линкова, обрадом грешака и слично.

Browser

Питање: Дајте ми идеју како да правим „приватни претраживач“ интернета, уместо Гугла.

Lovac

Одговор: У датотеку свог рачунара, на пример „modul.py“, унесите текст Питонове функције „lovac()“ дословно као на слици лево. Позивате је наредбом „modul.lovac()“. Њеним покретањем пре свега уносите реч, или реченицу за тражење (варијабла txt). Затим до погрешног уноса, или до највише десет (i < 10), уносите адресу сајта (url) унутар којег се врши претрага дате речи.

Након уноса поједине адресе, на екрану добијате испис поновљене адресе са насловом сајта и бројем појављивања тражене речи у текстуалном делу (body). Следи низ пуних линкова (са html) које сајт садржи, до највише сто (j < 100). Сваки ред исписа почиње редни бројем приказаног у низу свих нађених линкова.

Модификујте овај програм тако да преузме два речена податка аутоматски „lovac(txt,url)“ уз промену првог бројача (i < 2), из неког главног програма. Нека нађене линкове даље враћа у петљу и у њима понавља тражења. Поред тога можете измишљати и варирати приоритете у избору линкова, начине исписа текста који је циљ тражења и добијати све дужи, али квалитетнији приватни интернет претраживач.

Приметите да је овај програм мешавина претходна два (Site Title и Urlurl), а да претраживања датог текста можете даље комбиновати превођењем латиничног текста у ћирилични или обрнуто, такође преправљајући наведене „Ћирилизаторе“ (Cyrillicator) тако да текст преузимају аутоматски из других програма. Када би даље преправке овог програма ишле ка промени његове основне природе, иначе воајерске, тако да почне интервенисати по вањским сајтовима, он би престао бити „претраживач“.

У случају да надограђујете „ловца“ тако да постаје вани агресивнији, можете користити и Виженерово кодирање (Vigenère) за улаз и излаз (кодирање и декодирање) текстова које шаљете. Тај је иначе један од најбољих „непробојних“ начина кодирања, нарочито ако се ради о краћим текстовима.

Text search

Питање: Често радим са једном истом групом сајтова и замара ме тражење страница на којима се појављује текст који ме у неком тренутку интересује. Претпостављам да сте понекад у сличној (не)прилици и занима ме како је решавате?

Одговор: Користим програме попут овог (ime_teke.py). Функција „naslov“ чита сајт и у петљу „for“ враћа назив сајта, у загради текст који је тражен, те број појављивања. Та петља има само два реда, две наредбе, па ју је лако разумети и модификовати. Штампајте рецимо само оне адресе и наслове које садрже бар једно појављивање траженог текста (n > 0), а додатно нека вам назначи и позицију.

# Тражи txt на страницама (url = http://rvukovic.net/blog/...html) блога
def naslov(txt,url): # Čita naslov datog sajta 
        from urllib.request import urlopen
        page = urlopen(url)
        html = page.read().decode("utf-8")
        start_naziv = html.find("<title>") + len("<title>")
        end_naziv = html.find("</title>")
        naziv = html[start_naziv:end_naziv]
        s_telo = html.find("<body") + len("<body")
        e_telo = html.find("</body>")  
        telo = html[s_telo:e_telo]
        n = telo.count(txt) # број појављивања txt
        naslov1 = "{0} [{1}] {2}x".format(naziv,txt,n)
        return naslov1

god = [2106, 2107, 2108, 2109, 2110]
txt = input('Унеси тражени текст: ')
while (len(txt) > 2):
        for x in god:
                url = "http://rvukovic.net/blog/" + str(x) + ".html"
                print(url, naslov(txt,url))
        txt = input('Нови тражени текст: ')
    

Поновљени упит „txt = input('Нови тражени текст: ')“ на дну петље „while“ служи да овај програм можете покренути и прочитати резултат и када се само кликне на њега (без отварања Питоновог едитора) негде (било где) у датотеци локалног рачунара.

Graphics

Питање: Како да Питоном радим графику?

Одговор: За једноставну графику користите „graphics.py“. На пример, копирајте сав текст са странице https://mcsp.wartburg.edu/zelle/python/graphics.py и снимите га (са поменутим називом) негде где га Питон може пронаћи. Гуглајте и широм интернета наћи ћете примере тог једноставног модула, тражите их читајте и проучавајте и бићете све бољи у раду са врстом графике коју тај модул дозвољава. Ево неких.

from graphics import *
win = GraphWin(width = 400, height = 400) # формира прозор
win.setCoords(0, 0, 10, 10) # координате оквира прозора; доле лево (0, 0) и горе десно (10, 10)
mySquare = Rectangle(Point(1, 1), Point(9, 9)) # формирање квадрата, од (1, 1) до (9, 9)
mySquare.draw(win) # цртање прозора
win.getMouse() # пауза пре затварања
    

Овај пример непосредним позивом отвара (мањи, 400 × 400) прозор са нацртаним квадратом. Следећи након позива модула „krugovi()“ црта низ концентричних кружница различитих боја.

def krugovi():
    col_arr=["violet","indigo","blue","green","yellow","orange","red"]
    workArea = GraphWin('Rainbow Circle', 300, 300) # задаје наслов и величину прозора
    x=workArea.getWidth()/2 # одређује средину цртежа x-осе 
    y=workArea.getHeight()/2 # одређује средину y-осе

    i=0
    while i < len(col_arr):
        cir=Circle(Point(x, y), 10+10*i) # црта кружницу са центром у средини цртежа
        cir.setOutline(col_arr[i]) # даје кружници (следећу) боју из листе боја
        cir.setWidth(4) # поставља ширину руба
        cir.draw(workArea) # црта текућу кружницу
        i+=1 # повећава бројач корака 
        
    message = Text(Point(workArea.getWidth()/2, 250), 'Кликнути за Излаз')
    message.draw(workArea)
    workArea.getMouse() # подручје миша за ,,клик за излаз'' 
    workArea.close() # затвара прозор за цртање 

krugovi()
    

Детаљније о овом графички модулу, graphics.py, којег је направио Џон Зеле за потребе своје књиге о програмирању можете наћи и на страници John Zelle Python Graphics Module.

Package

Питање: Како да инсталирам нове Питонове пакете, посебно оне за графику?

Одговор: Пакет обично садржи све датотеке које су вам потребне за одређени модул, помоћни програм за посебни пројекат какав је графика. Ови додатни пакети налазе се као слободан софтвер на интернету и поред непосредног начина (претходни пример) додају се у Питонове библиотеке и помоћу „pip“ (package installer for Python) софтвера, тј. програма за инсталацију пакета. Овај (pip) се може укључити у току саме инсталације основног Питон програма, или се додати накнадно, а ако је инсталиран, на основном фолдеру где је Питон програм додајте

C:\Users\Ваш Назив\AppData\Local\Programs\Python\Python39\Scripts\pip install numpy

и након потврде (Enter) имаћете додат први од пакета „NumPy“, основних за научне прорачуне Питоном. Поновите исто са „pip install matplotlib“ и то ће бити довољно за мало сложенију графику од претходне.

f(x) = log x
import math
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.axisartist.axislines import SubplotZero

fig = plt.figure()
ax = SubplotZero(fig, 111)
fig.add_subplot(ax)

for direction in ["left", "right", "bottom", "top"]:
    ax.axis[direction].set_visible(False)

for direction in ["xzero", "yzero"]:
    ax.axis[direction].set_axisline_style("-|>")
    ax.axis[direction].set_visible(True)

ax.axis["yzero"].invert_ticklabel_direction()

ax.set_yticks([-2, -1.5, -1, -0.5, 0, 0.5, 1, 1.5, 2, 2.5])
ax.set_xticks(np.arange(0, 4, 0.5))

x = np.linspace(0.1, 3, 100)
ax.plot(x, np.log(x))

plt.grid()
plt.show()    
    

За почетак, прекуцајте и покрените програм горе лево и добићете граф логаритамске функције на слици десно.

Excel

Питање: Како управљате ексцеловим датотекама?

Excel File

Одговор: Када су то фајлови са екстензијом „csv“ (Microsoft Excel “Comma Separated Values” File) онда је довољна Питонова библиотека „Pandas“. За пример, направио сам једноставну ексцелову датотеку, на слици лево, записао је под називом „Students.csv“ на директоријуму „D:\Python“ и прочитао програмом

import pandas as pd
df = pd.read_csv('D:/Python/Students.csv')
print(df.to_string())    
    

који је дао следећи испис, на слици десно.

Python Excel File

Панде (Pandas) нам омогућавају да анализирамо обимне податке и доносимо закључке на основу статистичких анализа. Оне могу очистити неуредне записе и чинити их читљивим и релевантним, важним и корисним у науци о подацима. Наћи ће евентуалну корелацију између два или више низова, њихове просечне вредности, максимуме и минимуме. Панде такође могу брисати редове који нису релевантни или садрже погрешне вредности, попут празних или NULL вредности. То се зове чишћење (cleaning) података. Са командне линије „C:\Users\ваше име>pip install pandas“ инсталираће модул Панди. Питоном, затим можемо формирати табелу лево, чији резултат је десно.

   Ученик  Оцена
0     Ана      3
1  Бранко      5
2   Вељко      2	 
	 
import pandas as pd
ispit = {
  'Ученик': ["Ана", "Бранко", "Вељко"],
  'Оцена': [3, 5, 2]
}
zapis = pd.DataFrame(ispit)
print(zapis)	 
	 

Када програму додате „print(zapis.loc[0])“ добићете додатни испис „Ученик Ана“ и „Оцена 3“, у два реда једно испод другог. Ако додате „print(zapis.loc[1])“ добићете у два нова реда „Ученик Бранко“ и „Оцена 5“, односно „Ученик Вељко“ и „Оцена 2“ са loc[2]. О примени Панди даље учите самостално, на пример са сајта „https://pandas.pydata.org/“.

Previous

Next