$$ \newcommand{\floor}[1]{\left\lfloor{#1}\right\rfloor} \newcommand{\ceil}[1]{\left\lceil{#1}\right\rceil} \renewcommand{\mod}{\,\mathrm{mod}\,} \renewcommand{\div}{\,\mathrm{div}\,} \newcommand{\metar}{\,\mathrm{m}} \newcommand{\cm}{\,\mathrm{cm}} \newcommand{\dm}{\,\mathrm{dm}} \newcommand{\litar}{\,\mathrm{l}} \newcommand{\km}{\,\mathrm{km}} \newcommand{\s}{\,\mathrm{s}} \newcommand{\h}{\,\mathrm{h}} \newcommand{\minut}{\,\mathrm{min}} \newcommand{\kmh}{\,\mathrm{\frac{km}{h}}} \newcommand{\ms}{\,\mathrm{\frac{m}{s}}} \newcommand{\mss}{\,\mathrm{\frac{m}{s^2}}} \newcommand{\mmin}{\,\mathrm{\frac{m}{min}}} \newcommand{\smin}{\,\mathrm{\frac{s}{min}}} $$

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.

LJ02

2. Nizovi podataka i linijski dijagrami

U ovoj lekciji ćeš naučiti:

  1. kako da se krećeš kroz Džupajter radnu svesku;
  2. kako se zapisuju nizovi podataka; i
  3. kako se prikazuju nizovi podataka linijskim dijagramima.

2.1. Još malo o Džupajter radnoj svesci

Džupajter radna sveska se sastoji iz niza ćelija, a svaka ćelija može da sadrži tekst, matematički izraz ili niz Pajton naredbi. Niz ikona pri vrhu strane ti omogućuje da barataš ćelijama Džupajter radne sveske na razne načine.

Dugme Run smo već koristili. Pogledajmo sada čemu služe još četiri dugmeta:

Četiri dugmeta

  • Klik na dugme koje liči na disketu (prva sleva) će snimiti radnu svesku.
  • Klik na dugme sa znakom + će dodati novu ćeliju ispod aktivne ćelije. (Ćeliju aktiviraš tako što klikneš na nju; aktivna ćelija ima ***zeleni*** ili ***plavi*** okvir.)
  • Strelice na gore i na dole pomeraju radnu ćeliju za jedno mesto gore ili dole.

Na primer, čitaš ovaj tekst i odjednom osetiš snažnu želju da izračunaš vrednost izraza $1 + \frac 12 + \frac 13 + \frac 14 + \frac 15 + \frac 16 + \frac 17$. Tada treba da klikneš na ovu ćeliju (koju upravo čitaš) i onda na dugme sa znakom +. U novoj ćeliji koja će se pojaviti ispod možeš da uneseš izraz, a Pajton će ga izračunati:

In [1]:
1 + 1/2 + 1/3 + 1/4 + 1/5 + 1/6 + 1/7
Out[1]:
2.5928571428571425

U osam ćelija koje slede navedeni su stihovi poznate engleske dečije brojalice. Stihovi su ispreturani. Koristeći dugmiće sa strelicama preuredi ćelije tako da dobiješ tekst brojalice.

Once I caught a fish alive,

Then I let it go again.

Which finger did it bite?

Why did you let it go?

Because it bit my finger so.

This little finger on my right.

One, two, three, four, five,

Six, seven, eight, nine, ten,

2.2. Zapisivanje nizova podataka

Nizovi podataka se u Pajtonu zapisuju unutar uglastih zagrada, u obliku liste. Na primer, ocene nekog učenika iz jednog predmeta mogu da se zapišu kao niz ovako:

In [2]:
ocene = [2, 4, 5, 3, 5]

Sistem nije vratio nikakav izlaz, naravno. On je samo konstatovao da promenljiva ocene sada sadrži niz koji se sastoji od pet brojeva. Da bismo se uverili da je to tako, zatražićemo od sistema da izračuna sledeći izraz:

In [3]:
ocene
Out[3]:
[2, 4, 5, 3, 5]

Moguće je raditi i sa nizovima stringova:

In [4]:
predmeti = ["matematika", "srpski", "likovno", "istorija", "fizičko"]

Sistem ni ovaj put nije vratio nikakav izlaz, već je samo zapamtio da promenljiva predmeti sada sadrži niz od pet stringova (imena predmeta). Evo sadržaja promenljive predmeti:

In [5]:
predmeti
Out[5]:
['matematika', 'srpski', 'likovno', 'istorija', 'fizičko']

Dužinu niza možemo dobiti pozivom ugrađene funkcije len (što je skraćenica engleske reči length koja znači "dužina"):

In [6]:
len(predmeti)
Out[6]:
5

2.3. Prikazivanje nizova podataka

U narednoj ćeliji prikazan je procenjeni broj stanovnika naše planete u raznim istorijskim periodima, pri čemu je broj ljudi iskazan u milijardama:

In [7]:
godine = [1000,  1500, 1650, 1750, 1804, 1850, 1900, 1930, 1950, 1960, 1974, 1980, 1987, 1999, 2011, 2020, 2023, 2030, 2037, 2045, 2055, 2100]
ljudi  = [0.275, 0.45, 0.5,  0.7,  1,    1.2,  1.6,  2,    2.55, 3,    4,    4.5,  5,    6,    7,    7.8,  8,    8.5,  9,    9.5,  10,   11.2]

Želeli bismo da prikažemo ove podatke u vidu grafikona (da ih vizuelizujemo) zato što ljudi najlakše i najbrže obrađuju vizuelne podatke. (Verovatno znaš za izreku da jedna slika vredi više od hiljadu reči.)

Pajton ima razne biblioteke za vizuelizaciju podataka, a mi ćemo koristiti biblioteku koja se zove matplotlib.pyplot. Pošto je ovo ime veoma dugačko i komplikovano i pošto će nam trebati mnogo funkcija iz te biblioteke nećemo uvoziti funkcije jednu po jednu već ćemo uvesti celu biblioteku i pri tome joj dati kraće ime (takoreći, nadimak) plt. (Engleska reč plot znači "iscrtati", a plt je skraćeno od plot.)

In [8]:
import matplotlib.pyplot as plt

Sada su nam sve funkcije iz ove biblioteke dostupne. Važno je napomenuti da jedan import važi za celu radnu svesku! Dakle, dovoljno je biblioteku uvesti jednom u radnoj svesci. Takođe je važno reći da ćemo u novoj radnoj svesci morati ponovo da "importujemo" biblioteke koje nam trebaju za rad.

Jedan import po radnoj svesci!

Ako se zabuniš pa pokušaš biblioteku da importuješ dva puta -- nema brige. Pajton se neće buniti, ali neće gubiti vreme na to da dva puta učitava istu biblioteku.

Natrag na crtanje grafikona. Najjednostavniji grafikon se može dobiti ovako:

In [9]:
plt.plot(godine, ljudi)
plt.show()
plt.close()

Funkcija plot(godine, ljudi) kaže sistemu da treba nacrtati grafikon kome su na horizontalnu osu ($x$-osa) naneti podaci iz niza godine, a na vertikalnu osu ($y$-osa) podaci iz niza ljudi. Funkcija show potom prikazuje grafikon. (Engleska reč plot znači "iscrtati", a engleska reč show znači "prikazati".) Konačno, funkcija close završava rad na grafikonu (engleska reč close znači "zatvori").

Vidimo da su podaci predstavljeni linijom. Zato se ova vrsta grafikona zove linijski grafikon.

Pošto nismo uvozili pojedinačne funkcije već smo celu biblioteku uvezli pod nadimkom plt, funkcije plot, show i close moramo da pozovemo "punim prezimenom i imenom": plt.plot, plt.show i plt.close.

U narednom koraku ćemo grafikonu dodati naslov koristeći funkciju title (engleska reč title znači "naslov"):

In [10]:
plt.plot(godine, ljudi)
plt.title("Broj stanovnika na Zemlji")
plt.show()
plt.close()

Možemo staviti oznaku i na vertikalnu osu da bismo naglasili da se radi o brojevima koji su iskazani u milijardama. Za to koristimo funkciju ylabel ("oznaka na $y$-osi"; engleska reč label znači "oznaka"):

In [11]:
plt.plot(godine, ljudi)
plt.title("Broj stanovnika na Zemlji")
plt.ylabel("(milijarde)")
plt.show()
plt.close()

Da zaključimo: funkcijama plot, title i ylabel dodajemo podatke na grafikon, i tek kada smo uneli sve podatke koje želimo da imamo na grafikonu crtamo grafikon pozivom funkcije show. Na kraju pozivamo funkciju close da počisti za nama.

2.4. Zadaci

Zadatak 1. Sledeći program crta grafikon koji predstavlja procenjeni broj ljudi na Zemlji u raznim periodima:

In [12]:
import matplotlib.pyplot as plt
plt.plot(godine, ljudi)
plt.title("Broj stanovnika na Zemlji")
plt.ylabel("(milijarde)")
plt.show()
plt.close()
  1. Čemu služi naredba import ... as ..?
  2. Zašto pišemo plt.plot, a ne prosto plot?
  3. Čemu služi funkcija plot?
  4. Čemu služe funkcije title i ylabel?
  5. Čemu služe funkcije show i close?

Sledeće zadatke reši u Džupajteru.

Zadatak 2. U narednoj ćeliji dati su podaci o masi (u kilogramima) i dužini/visini (u centimetrima) jednog dečaka od njegovog šestog meseca pa do njegovih 6,5 godina.

In [13]:
merenja   = ["6 mes", "1,5 god", "2,5 god", "3,5 god", "4,5 god", "5,5 god", "6,5 god"]
masaKG    = [5.9,     11.5,      14.8,      20.5,      22.0,      24.2,      29.0     ]
visinaCM  = [62.0,    84.0,      97.0,      115.0,     122.5,     131.5,     135.0    ]

Prikaži jednim grafikonom kako se menjala njegova masa, a drugim kako se menjala njegova visina.

Zadatak 3. Indeks telesne težine (engl. body mass index, BMI) predstavlja količnik telesne mase izražene u kilogramima i kvadrata telesne visine u izražene u metrima:

$$\hbox{BMI} = \frac{\hbox{masa u kilogramima}}{(\hbox{visina u metrima})^2}$$

Za dečaka iz Zadatka 2 prikaži grafikonom promenu njegovog indeksa telesne težine. Može ti pomoći sledeći mali Pajton program koji računa njegove indekse telesne težine za svako merenje.

In [14]:
BMI = [0, 0, 0, 0, 0, 0, 0]
for i in range(0, 7):
    BMI[i] = masaKG[i] / (visinaCM[i] / 100.0)**2

Zadatak 4. Procenjuje se da je Kina na dan 1.7.2019. imala 1.420.062.022 stanovnika. Broj stanovnika u Kini se svake godine poveća za 0,35%. Pod pretpostavkom da se godišnji rast broja stanovnika u Kini neće menjati, prikazati grafikonom očekivani broj stanovnika Kine u narednih deset godina.

In [ ]:
 

Zadatak 5. Svaka država ima organizovanu službu koja pažljivo beleži podatke o vremenskim prilikama zato što je to važno za saobraćaj, poljoprivredu, ali i sve ostale privredne grane.

Na sajtu Republičkog hidrometeorološkog zavoda Srbije (http://www.hidmet.gov.rs/) u meniju sa leve strane klikni na "Meteorologija", pa "Klimatologija", pa na "Normale". Potom u spisku stanica za osmatranje koji se pojavio odaberi stanicu najbližu tvojoj školi, preuzmi najniže i najviše temperature u periodu 1981-2010 (redovi "Apsolutni maksimum" i "Apsolutni minimum") i prikaži te podatke.

In [ ]:
 
© 2019 Petlja.org Creative Commons License