• Rezultati Niso Bili Najdeni

Apple mobility trends report

Podobno kot Google, je tudi tehnoloˇski velikan Apple ponudil podatke z na-menom, da dobijo vlade in raziskovalci vpogled v spreminjanje gibanja pre-bivalstva med epidemijo. Za razliko od Googla, Apple ni spremljal gibanje glede na lokacije, temveˇc na zahtevke za navodila za pot po tipu transporta.

Podatke je poleg drˇzav in regij razdelil na hojo, voˇznjo ter javni promet. Za Slovenijo podatki za javni promet niso na voljo. Prav tako Apple ponuja podatke le za celotno Slovenijo, medtem ko Google ponuja veliko podatkov

tudi za posamezne kraje. Enako kot pri Googlu so tudi podatki pri Applu povsem anonimizirani. Za izhodiˇsˇcno vrednost podatkov je bil izbran 13.

januar 2020. Podatki so predstavljeni v obliki ˇstevila za vsak dan, kjer vre-dnost 100 pomeni enako koliˇcino zahtevkov kot 13. januarja 2020 v izbrani geografski enoti, vrednost 120 pa pomeni 20 % poveˇcanje napram izhodiˇsˇcni vrednosti. Podobno velja za podatke z vrednostjo pod 100. Podatki so na voljo v obliki CSV datoteke.

Slika 2.7: Prikaz podatkov iz Apple mobility trends report

Poglavje 3

Uporabljene tehnologije in pristopi

3.1 Orodja in tehnologije

Podatke smo iz CSV in tekstovnih datotek prebrali s pomoˇcjo knjiˇznice Pan-das [19] za programski jezik Python [26]. Izluˇsˇcene podatke smo nato shra-nili v podatkovno bazo PostgreSQL [22]. Nato smo postavili spletno stran v ogrodju Angular [2] ter okolju Node.js [16]. Za prikaz grafov na spletni strani smo uporabili knjiˇznico ngx-charts [14], kateri smo dodali funkcionalnosti za lastne potrebe s pomoˇcjo paketa package-patch [20]. Za analizo podatkov smo najprej pridobili podatke iz obstojeˇce baze, jih prikazali v obliki gra-fov s knjiˇznico Matplotlib [13] ter nato izvedli statistiˇcne teste s pomoˇcjo knjiˇznice sciPy [37].

3.1.1 CSV

CSV je format datotek, v katerem so podatki loˇceni z doloˇcenim podatkom, ponavadi z vejico. Prva vrstica vsebuje imena polj loˇcenih z vejico, vsaka na-slednja vrstica pa vsebuje vrednosti na poziciji vsakega polja. Vsaka vrstica je svoja zakljuˇcena enota podatkov. CSV datoteke se veˇcinoma uporabljajo za prenos podatkov iz ali v bazo ter med razliˇcnimi aplikacijami [38].

15

3.1.2 Python

Python je eden najbolj razˇsirjenih visokonivojskih, objektno orientiranih pro-gramski jezikov. Ima preprost semantiˇcni slog programske kode. Uporablja se na vseh podroˇcjih programiranja, najbolj priljubljen je pri podatkovnem rudarjenju, umetni inteligenci, spletnih ter matematiˇcnih aplikacijah [26].

3.1.3 Pandas

Pandas je odprtokodna knjiˇznica namenjena programskemu jeziku Python za hitro in enostavno manipulacijo in analizo podatkov. Ponuja podatkovne strukture in operacije, ki so ˇse posebno uporabne pri delu s podatki, ki so bazirani na ˇcasu ter s podatki pridobljenimi iz CSV datotek ali podatkovnih baz. Primera takih struktur sta Series, ki je podobna Javini strukturi List ter DataFrames, ki ima obliko tabele [19].

3.1.4 PostgreSQL

PostgreSQL je odprtokodni sistem za upravljanje relacijskih baz podatkov.

Uporablja programski jezik SQL in deluje na vseh veˇcjih operacijskih sis-temih, kot so UNIX razliˇcice ter operacijski sistemi Windows. Sklada se s standardom ACID in ima vse glavne funkcionalnosti sistemov za upravlja-nje relacijskih baz podatkov, kot so tuji kljuˇci, povezovanje tabel, proˇzilce, poglede in drugo [22].

3.1.5 Angular

Angular je programsko ogrodje namenjeno razvijanju mobilnih ter spletnih SPA aplikacij. SPA aplikacija se izvaja na strani odjemalca in vkljuˇcuje pri-kaze zaslonskih mask, logiko ter usmerjanje. Razvoj poteka v jezikih HTML, CSS in Typescript [2].

Diplomska naloga 17

3.1.6 Node.js

Node.js je odprtokodno izvajalno okolje za programski jezik Javascript in je namenjeno predvsem razvoju enostavnih spletnih strani in streˇzniˇskih apli-kacij. Izvaja se v eni niti in izkoriˇsˇca asinhronost jezika Javascript [16].

3.1.7 ngx-charts

Na spletni strani smo za prikazovanje grafov uporabili odprtokodno ogrodje ngx-charts, ki za matematiˇcne funkcije uporablja bolj razˇsirjeno knjiˇznico d3.js. Najveˇcja prednost ogrodja ngx-charts je, poleg preprostega sloga im-plementacije grafov, da izris grafov prepuˇsˇca ogrodju Angular, za izris in animacijo pa uporablja SVG elemente. Tak naˇcin izris grafov zelo pohitri, zlasti pri veliki koliˇcini podatkov za dinamiˇcne ter interaktivne grafe [14].

3.1.8 Package-patch

Package-patch je paket za popravljanje kode v npm paketih, katere uporablja aplikacija. Izvrstno se odnese pri odpravljanju napak in dodajanju funkci-onalnosti v uporabljenih knjiˇznicah, ko ne moremo ˇcakati na popravke in razvijanje kode razvijalcev. S pomoˇcje paketa package-patch se izognemo roˇcnemu dodajanju celega paketa v projekt, saj nam omogoˇca vrivanje in spreminjanje le ˇzeljenih vrstic [20].

3.1.9 Matplotlib

Matplotlib je ena najbolj uporabljenih knjiˇznic za risanje grafov za program-ski jezik Python [13]. Omogoˇca praktiˇcno vse vrste diagramov, grafov ter dru-gih predstavitev podatkov in uporabniku omogoˇca nastavljanje skoraj vseh ˇzeljenih parametrov. Poleg statiˇcnih diagramov omogoˇca tudi dinamiˇcne in interaktivne grafe ter shranjevanje grafov v datoteke poljubnih formatov.

Odliˇcno se obnese v povezavi s podatkovnimi strukturami Series in Data-frames knjiˇznice Pandas, kar omogoˇca hitro in enostavno risanje grafov, ˇce

podatke pridobivamo direktno iz baze ali CSV datotek.

3.1.10 sciPy

SciPy je najbolj pomembna odprtokodna knjiˇznica za matematiˇcno analizo podatkov za programski jezik Python. Osnovno delovanje sloni na prav tako zelo razˇsirjeni knjiˇznici NumPy, vendar ima SciPy na voljo precej veˇc funk-cij, funkcije iz NumPy pa so dodatno optimizirane za hitrejˇse delovanje na veliki koliˇcini podatkov. Vsebuje algoritme za raˇcunanje, optimizacijo, mo-deliranje in analiziranje podatkov ter signalov, hkrati pa ima implementirane podatkovne strukture, ki so posebno namenjene matrikam ter drevesom [37].