Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Seminarski rad A – Skript jezici

9. čas
Python i analiza podataka
• Poslednjih godina Python je poboljšao pakete koji
se koriste za manipulaciju podacima, što ga stavlja
u dobru poziciju za odabir jezika za analizu
podataka
• Najčešće korišćeni paketi za analizu podataka u
programskom jeziku Python su:
– Pandas
– NumPy
– Matplotlib
– ScyPy
– Pytorch
matplotlib
• Matplotlib je biblioteka za crtanje 2D grafika
– može da se koristi u skriptovima i programima
• Omogućava crtanje linijskih, tačkastih, pitastih
grafikona, stubičastih grafikona, histograma...
• Neophodno je importovani matplotlib
• Najčešće se koristi podmodul pyplot

• https://matplotlib.org/
Linijski grafikoni
• matplotlib.pyplot.plot – definiše x i y osu
• matplotlib.pyplot.show – prikazuje (iscrtava)
grafikon
• matplotlib.pyplot.ylabel,
matplotlib.pyplot.ylabel – dodaje labele
(oznake) na x i y osu
• matplotlib.pyplot.title – dodaje naslov
grafikonu
• matplotlib.pyplot.xticks(rotation=90),
yticks- rotira ispis labela
• matplotlib.pyplot.xlim(xmin=5,
xmax=11), ylim - ograničava vrednosti na x i y osi
Linijski grafikoni
import matplotlib.pyplot as plt
plt.plot([1,2,3,4,5,6],[1,4,9,16,25,36])
plt.xlabel('brojevi')
plt.ylabel('kvadrati brojeva')
plt.show()
Linijski grafikoni
import matplotlib.pyplot as plt

plt.plot(range(10))

plt.title('Center Title')
plt.title('Left Title', loc='left')
plt.title('Right Title', loc='right')

plt.show()
Linijski grafikoni
...
ocene = []
predmeti = []
for i in polozeni:
ocene.append(int(i['ocena']))
predmeti.append(i['predmet']
+ "\n" + i['datum'])
prosek = statistics.mean(ocene)
plt.scatter(predmeti, ocene)
plt.plot(predmeti, ocene)
plt.xlabel('predmeti')
plt.xticks(rotation=90)
plt.ylabel('ocene')
plt.ylim(ymin=5, ymax=11)
plt.show()
Linijski grafikoni
import matplotlib.pyplot as plt
import numpy as np

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='time (s)', ylabel='voltage (mV)',


title='About as simple as it gets, folks')
ax.grid()

plt.show()
Linijski grafikoni
import numpy as np
import matplotlib.pyplot as plt

def f(t):
return np.exp(-t)
* np.cos(2*np.pi*t)

t1 = np.arange(0.0, 5.0, 0.1)


t2 = np.arange(0.0, 5.0, 0.02)

plt.figure()
plt.subplot(211)
plt.plot(t1, f(t1), color='tab:blue', marker='o')
plt.plot(t2, f(t2), color='black')

plt.subplot(212)
plt.plot(t2, np.cos(2*np.pi*t2), color='tab:orange', linestyle='--')
plt.show()
Pitasti grafikon
import matplotlib.pyplot as plt

# Pitasti grafikon, delovi se iscrtavaju


obrnuto od kazaljke na satu
labels = 'Python', 'Java', 'C#', 'JavaScript'
sizes = [20, 45, 25, 10]

fig1, ax1 = plt.subplots()


ax1.pie(sizes, labels=labels,
autopct='%1.1f%%')

plt.show()
Pitasti grafikon
import matplotlib.pyplot as plt

# Pitasti grafikon, delovi se iscrtavaju obrnuto od kazaljke na satu


labels = 'Python', 'Java', 'C#', 'JavaScript'
sizes = [20, 45, 25, 10]
explode = (0.1, 0, 0, 0) # deo koji treba da se izdvoji

fig1, ax1 = plt.subplots()


ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',
shadow=True, startangle=90)
ax1.axis('equal')
# 'Equal aspect ratio' obezbeđuje
# da će pita biti nacrtana kao krug

plt.show()
Stubičasti grafikoni
...
proseci.sort(key = lambda x: x['prosek'])
x_podaci = []
y_podaci = []
for i in proseci:
x_podaci.append(i['student'])
y_podaci.append(i['prosek'])
plt.bar(x_podaci, y_podaci)
plt.xlabel('studenti')
plt.xticks(rotation=90)
plt.ylabel('prosek')
plt.ylim(ymin=5, ymax=11)
plt.show()

#plt.bar([x for x in proseci['student']], [x for x in


proseci['prosek']])
Stubičasti grafikoni
import matplotlib.pyplot as plt
import numpy as np

razredi = ['V1', 'V2', 'V3', 'V4', 'V5']


decaci = [10, 14, 12, 15, 11]
devojcice = [14, 12, 13, 13, 14]

x = np.arange(len(razredi)) # pozicija labela


width = 0.35 # širina stubića

fig, ax = plt.subplots()
rects1 = ax.bar(x - width/2, decaci, width, label='Decaci')
rects2 = ax.bar(x + width/2, devojcice, width, label='Devojcice')

# Označavanje labela, naslova, oznaka za x i y osu...


ax.set_ylabel('Broj decaka i devojcica')
ax.set_title('Broj decaka i devojcica po razredima')
ax.set_xticks(x)
ax.set_xticklabels(razredi)
ax.legend()

plt.show()
Tačkasti grafikon
import numpy as np
import matplotlib.pyplot as plt

N = 50
x = np.random.rand(N)
y = np.random.rand(N)
colors = np.random.rand(N)
area = (30 * np.random.rand(N))**2
# veličina kružića/tačkica

plt.scatter(x, y, s=area, c=colors)


plt.show()

You might also like