Vaje (brez funkcij)
V eni od nalog smo se ukvarjali z resničnimi podatki z vremenskih postaj v Sloveniji. Podatki so s strani https://www.ncei.noaa.gov/data/daily-summaries/access/. Ta vsebuje datoteke za vse(?) postaje na svetu; arhiv z vsemi datotekami je na https://www.ncei.noaa.gov/data/daily-summaries/archive/ (in je velik 7 GB). Da ne bi pobrali vsega, so v priloženi datoteki .zip samo datoteke, ki se nanašajo na Slovenijo.
Kot boste videli, podatki niso v tako prijazni obliki, kot so bili tisti, s katerimi ste delali vi. Za to vajo boste delali s podatki v obliki, kakršno bi dobili na spletu. Kot boste videli, to ne bo zgolj vaja iz programiranja, temveč tudi iz brskanja po dokumentaciji in splošne iznajdljivosti. Narobe lahko gre marsikaj, sitnosti lahko povzroča karkoli. Vaje iz resničnega sveta, torej.
Odzipaj datoteko s podatki. Lahko v direktorij, v katerem bo program, lahko drugam (če jih znaš kljub temu brati).
Zgradite slovar, ki povezuje imena postaj s kodami postaj
Vsaka vremenska postaja ima svojo numerično kodo.
Primer: Kredarica ima kodo SIE00105938.
Iz datotek v odzipani mapi sestavite slovar, ki povezuje ime postaje (kot je zapisano v podatkih) s kodo postaje. Primer takšnega slovarja:
{'Bilje': 'SIE00115106',
'Celje Medlog': 'SIE00115176',
'Crnomelj Doblice': 'SIE00114856',
'Kocevje': 'SIE00114956',
'Kredarica': 'SIE00105938',
'Lesce': 'SIE00114966',
'Letalisce Edvarda Rusjana Mari': 'SIE00115156',
'Letalisce Jozeta Pucnika Ljubl': 'SIE00115146',
'Lisca': 'SIE00115186',
'Murska Sobota Rakican': 'SIE00115196',
'Nova Vas Na Blokah': 'SIE00115066',
'Novo Mesto': 'SIE00115126',
'Portoroz Letalisce': 'SIE00115166',
'Postojna': 'SIE00115076',
'Ratece Planica': 'SIE00115206',
'Smartno Pri Slovenj Gradcu': 'SIE00115136',
'Topol Pri Medvodah': 'SIE00115006',
'Veliki Dolenci': 'SIE00115096',
'Vojsko': 'SIE00115016'}
Bodi pozoren na velike in male črke. Slovar mora seveda razbrati iz datotek in/ali njihovih imen. (Teste bi prestala tudi, če bi ta slovar preprosto prekopirali v funkcijo. :)
Imena krajev niso lepa. Nekatera se končajo sredi besede, druga so brez šumnikov, tretja vsebujejo preveč podroben opis krajev (namesto Celje Medlog smo zadovoljni tudi s Celje). Imena krajev je treba popraviti po naslednjem slovarju: (zamenja imena krajev (ključe) z lepšimi)
popravki = {'Murska Sobota Rakican': 'Murska Sobota', 'Crnomelj Doblice': 'Črnomelj', 'Letalisce Edvarda Rusjana Mari': 'Maribor', 'Letalisce Jozeta Pucnika Ljubl': 'Brnik', 'Ljubljana Bezigrad': 'Ljubljana', 'Kocevje': 'Kočevje', 'Smartno Pri Slovenj Gradcu': 'Smartno pri Slovenj Gradcu', 'Kredarica': 'Kredarica', 'Veliki Dolenci': 'Veliki Dolenci', 'Novo Mesto': 'Novo mesto', 'Nova Vas Na Blokah': 'Bloke', 'Celje Medlog': 'Celje', 'Portoroz Letalisce': 'Portorož', 'Topol Pri Medvodah': 'Topol pri Medvodah', 'Ratece Planica': 'Rateče' }Torej:
'Crnomelj Doblice'se mora spremeniti v'Črnomelj'.Pomoč: ključa v slovarju se ne da spremeniti. Pač pa odstraniš stari ključ (uporabiš lahko
del d[k]ali, mogoče še boljšed.pop(k), kjer jedslovar,kpa ključ, ki ga želiš odstraniti) in dodaš nov, popravljen ključ, z vrednostjo, kakršna je bila pripisana staremu ključu.Preberite meritve za izbrano postajo. Za izbrano postajo preberite CSV datoteko, ki pripada njeni kodi.
Zgradite slovar, v katerem bodo:
- ključi: datumi v obliki
(leto, mesec, dan) - vrednosti: najvišje dnevne temperature (TMAX)
Temperatura je v stolpcu TMAX, podana je v desetinkah Celzijev. Deliti jo morate torej z 10. Na omenjeni datum je za temperaturo na Kredarici zapisano 144; to pomeni, da je bila temperatura 14.4 Celzijev. Shraniti morate seveda to, popravljeno temperaturo.
Primer: vrednost 144 pomeni 14.4°C.
Primer želene uporabe:
- Po branju meritev za Kredarico mora biti
temperature[(2023, 8, 13)] == 14.4.
Če na določen dan temperatura ni bila izmerjena (prazna vrednost), tega dneva ne vključite v slovar.
Primer: (2023, 10, 4) za Kredarico ne sme biti med ključi, ker je bila vrednost manjkajoča.