diff --git a/README.md b/README.md index 00de46d..b3f363d 100644 --- a/README.md +++ b/README.md @@ -14,25 +14,25 @@ - For å hente data er det kritisk med en API-KEY, i `resources/README.md` står det forklart hvordan denne kan lages, og lagres. -- I samme README.md fil finnes informasjon om de ulike notebookene og deres funksjon. +- I samme `README.md` fil finnes informasjon om de ulike notebookene og deres funksjon. ## Struktur Her kommer oversikt over strukturen i prosjektet: -- `data` denne mappen inneholder output data -- `docs` denne mappen inneholder dokumentasjon -- `notebooks` denne mappen inneholder notebookene med all funksjonalitet -- `resources` denne mappen inneholder våre kilder -- `src` denne mappen inneholder python filene -- `tests` denne mappen inneholder våre unittester +- `data` denne mappen inneholder output data, skiller mellom json, figures og test data. +- `docs` denne mappen inneholder dokumentasjon, blant annet refleksjonsnotat og KI-deklarasjon. +- `notebooks` denne mappen inneholder alle notebookene med all funksjonalitet. +- `resources` denne mappen inneholder informasjon om kildene våre. +- `src` denne mappen inneholder alle python filene. +- `tests` denne mappen inneholder alle unit-testene våre. Det kan leses mer om disse i deres tilhørende `README.md` filer. ### Vår visjon av oppgaven Vår visjon, og ønske om sluttprodukt, er en værapplikasjon med mange muligheter som: -- Velge ønsket sted, å få relevant tidsdata for dagen. +- Velge ønsket sted, å få relevant værdata for akkurat nå. - Velge ønsket tidsperiode, på inntil 7-dager for det siste året, og sted for å få hisoriske værdata. - Velge ønsket tidsperiode, og 2 steder for å sammenligne værdata innenfor samme tidsperiode. -- Velge ønsket sted, å få en prediksjon på fremtidig vær. +- Velge ønsket sted, å få en prediktert temperatur ved input av andre værforhold. ### Oppgave - oversikt - [Oppgave 1 - Utviklingsmiljø](#oppgave-1---sett-opp-utviklingsmiljø) @@ -41,27 +41,28 @@ Vår visjon, og ønske om sluttprodukt, er en værapplikasjon med mange mulighet - [Oppgave 4 - Dataanalyse](#oppgave-4---dataanalyse) - [Oppgave 5 - Visualisering](#oppgave-5---visualisering) - [Oppgave 6 - Predektiv analyse](#oppgave-6---prediktiv-analyse) -- [Oppgave 7 - Refleksjonsnotat](#oppgave-7---refleksjonsnotat) #### Oppgave 1 - Sett opp utviklingsmiljø -I oppsettet av utviklingmsiljøet har vi fokusert på å innstallere relevante biblioteker, s.feks: +I oppsettet av utviklingmsiljøet har vi fokusert på å innstallere relevante biblioteker, feks: - Numpy - Matplotlib - Pandas - Jupyper Notebook +Hvordan utviklingsmiljøet kan aktiveres står forklart under [Installering](#installering). + #### Oppgave 2 - Datainnsamling For å finne data, startet vi å lete på [Kaggle](https://www.kaggle.com), og fant et interessant datasett, men som ikke passet helt til prosjektets behov. Da begynte vi å lete etter API-er, først på Metrologisk Institutt: - [Airqualityforecast](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) - - Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data + - Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data. - [Frost](https://frost.met.no/index.html) - - Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert + - Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert. - [Locationforecast](https://api.met.no/weatherapi/locationforecast/2.0/documentation) - - Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data + - Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data. - [Vaer og klima](https://www.met.no/vaer-og-klima/klima-siste-150-ar) - - Mye historisk data, men hadde kun for regioner og ikke for byer slik vi ønsket + - Mye historisk data, men hadde kun for regioner og ikke for steder slik vi ønsket. Ettersom ingen av de fra MET funket etter vårt ønske, søkte vi videre på nettet, og kom over: - [OpenWeatherMap API](https://openweathermap.org/) @@ -70,7 +71,7 @@ Ettersom ingen av de fra MET funket etter vårt ønske, søkte vi videre på net - Det finnes også flere ulike API-er, som vil hjelpe oss å oppnå vår visjon. Blant annet: - [Current Data](https://openweathermap.org/current): for å hente ut data fra ønsket sted på nåværende tidspunkt. - [History API](https://openweathermap.org/history): for å hente data fra ønsket sted og tidsperiode (inntil 7 dager). - - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i løpet av et år. + - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i året. ##### Henting av data For å hente data fra OpenWeatherMap API-en har vi skrevet en funskjon som tar inn stedsnavn, startdato og sluttdato, den legger da ønskede verdier inn i url-en og henter data for ønsket sted og tidsperiode, sammen med API-key som er lagret i en env-fil og importert. @@ -80,9 +81,9 @@ Funksjonen er lagt inn i Juputer notebook filen, som spør brukeren etter input. ##### Skriving av data til fil Når dataen er hentet velger vi å skrive den over på en json-fil, som gjør det lettere å hente ut ønsket data senere. -Funksjonen tar inn data og ønsket filnavn, og sjekker om vi har mappen 'data', med en annen mappe 'output_stedsnavn'. Dersom vi ikke skulle ha de mappene, som er tilfellet da vi har lagt denne mappen i .gitignore for å unngå kopiering av individuelle test-data ol., vil funksjonen lage mappene og deretter skrive dataen til en json-fil med navnet 'data_{filnavn}.json. +Funksjonen tar inn data og ønsket filnavn, og sjekker om vi har mappen 'data', med en annen mappe `json/output_{notebook}`. Dersom vi ikke skulle ha de mappene, som er tilfellet da vi har lagt denne mappen i .gitignore for å unngå kopiering av individuelle test-data ol., vil funksjonen lage mappene og deretter skrive dataen til en json-fil med navnet `data_{filnavn}.json`. -Funksjonen returnerer en print setning når dataen er skrevet, og legger ved filpath +Funksjonen returnerer en print setning når dataen er skrevet, og legger ved filepath. ##### Hente data fra fil For å hente data fra json-fil, bruker vi pandas sin innebygde funksjon _read_json_, for deretter å lagra dataene i en pandas dataframe. @@ -91,9 +92,9 @@ For å hente data fra json-fil, bruker vi pandas sin innebygde funksjon _read_js Vi har hele tiden fokusert på å forstå dataen vi har, derfor har vi lagret den i en json fil for å lettere kunne lese ut hvilke verdier vi har, og hvilke vi kanskje ikke trenger. De kolonnene vi mener vi ikke trenger har vi da fjernet. Så har vi sjekket etter feil og mangler i dataen, både med "NaN" (Not a Number) verdier, manglende kolonner eller ekstremverdier. ##### Metoder for å identifisere og håndtere manglende data -Metoder vi har brukt  er for eksempel `pd.json_normalize`, `df.drop_duplicates` og `df.drop(columns = «name»)`. Ved `json.normalize` har vi fått konvertert dataene våre til en tabell, DataFrame, fordi det er lettere å manipulere. `df.drop_duplicates` bruker vi for å enkelt håndtere duplikatene i datasettet. Vi har også kolonner som inneholder informasjon som ikke er relevant til det vi ønsker å finne og da bruker vi `df.drop(column= «name»)` og setter inn kolonnenavnet i parentes bak, eksempel: `df = df.drop(columns = «base»)` eller `df = df.drop(columns = «visability»)`. Denne metoden er nyttig for å rydde opp i datasettet og håndtere fjerning av kolonner som ikke er relevant, og dermed blir det mer oversiktlig og ryddig å jobbe med. +Metoder vi har brukt er for eksempel `pd.json_normalize`, `df.drop_duplicates` og `df.drop(columns = «name»)`. Ved `json.normalize` har vi fått konvertert dataene våre til en tabell, DataFrame, fordi det er lettere å manipulere. `df.drop_duplicates` bruker vi for å enkelt håndtere duplikatene i datasettet. Vi har også kolonner som inneholder informasjon som ikke er relevant til det vi ønsker å finne og da bruker vi `df.drop(column= «name»)` og setter inn kolonnenavnet i parentes bak, eksempel: `df = df.drop(columns = «base»)` eller `df = df.drop(columns = «visability»)`. Denne metoden er nyttig for å rydde opp i datasettet og håndtere fjerning av kolonner som ikke er relevant, og dermed blir det mer oversiktlig og ryddig å jobbe med. -Vi har også brukt missingno.matrix for å visualisere hvilke kolonner som mangler data, før vi har brukt enten `fillna(0)` for å endre "NaN" verdier til 0, eller `fillna('obj.ffill())` for å bruke forrige lagret data. Noen steder har vi også brukt `interpolate(method='linear', limit_direction='both')` som "gjetter" en verdi basert på verdien før og etter, `limit_direction='both'` bidrar til at den ikke trenger verdier både ofran og bak for å gjette, men baserer seg bare på den ene verdien den eventuelt måtte ha. +Vi har også brukt missingno.matrix for å visualisere hvilke kolonner som mangler data, før vi har brukt enten `fillna(0)` for å endre "NaN" verdier til 0, eller `interpolate(method='linear', limit_direction='both')` som "gjetter" en verdi basert på verdien før og etter, `limit_direction='both'` bidrar til at den ikke trenger verdier både foran og bak for å gjette, men baserer seg bare på den ene verdien den eventuelt måtte ha. ##### List comprehensions I den ene koden til `statistic_data_notebook.ipynb` er et eksempel på hvor vi har brukt list comprehension for å manipulere data. Vi bruker den til å manipulere temperaturene til celsius og lagre det resultatet i en ny kolonne, `temp.mean_celsius`. Vi har gjort dette fordi den metoden er mer effektiv å bruke enn for eksempel en direkte for-løkke.  @@ -106,9 +107,9 @@ Pandas-syntaks kan være noe kompleks og da kan man for eksempel med sqldf, bruk Vi har brukt Pandas SQL spesielt i de ulike compare-notebookene, hvor det er lettere å hente ut data basert på de ulike stedene. Vi har også lagret SELECT-setningene i variabler, eks. for statistisk data som gjennomsnitt, max og min temperatur. Når vi senere plotter gjennomsnittene, kan vi bare hente ut de lagrede variablene tilhørende hvert sted. ##### Uregelmessigheter i dataene -Uregelmessigheter vi kan forvente å møte på er blant annet manglende verdier. For å håndtere disse kan vi bruke metoder som for eksempel `fillna()`, som fyller manglende verdier med en standardverdi. Eller så kan vi bruke `dropna()`, som fjerner radene med manglende verdi. Vi kan også møte på ufullstendige datoer eller datoer i ukjent format. Da kan vi bruke `pd.to_datetime()` for å sikre at datoene blir riktig konvertert til datetime format.  +Uregelmessigheter vi kan forvente å møte på er blant annet manglende verdier. For å håndtere disse kan vi bruke metoder som for eksempel `fillna(0)`, som fyller manglende verdier med en verdien 0. Eller så kan vi bruke `dropna()`, som fjerner radene med manglende verdi. Vi kan også møte på ufullstendige datoer eller datoer i ukjent format. Da kan vi bruke `pd.to_datetime()` for å sikre at datoene blir riktig konvertert til datetime format.  -Vi kan også møte ekstremverdier, som vi kan fjerne ved å sjekke om de er "uteliggere" ved å ligge mer enn tre standardavvik i fra gjennomsnittet. Da kan vi bruke verdien før med `fillna('obj.ffill()')` eller bruke interpolate linear metoden for å få den mest "smoothe" overgangen mellom manglende verdier. Da den "gjetter" seg frem til manglende verdier. +Vi kan også møte ekstremverdier, som vi kan fjerne ved å sjekke om de er "uteliggere" ved å ligge mer enn tre standardavvik i fra gjennomsnittet. Da kan vi bruke `.interpolate linear` metoden for å få den mest "smoothe" overgangen mellom manglende verdier. Da den "gjetter" seg frem til manglende verdier. #### Oppgave 4 - Dataanalyse @@ -118,13 +119,19 @@ For eksempel i `notebook_statistic_data.ipynb` har vi brukt Pandas til å beregn ##### Kan du gi et eksempel på hvordan du vil implementere en enkel statistisk analyse for å undersøke sammenhengen mellom to variabler i datasettet? Et eksempel på hvordan vi har implementert en enkel statistisk analyse for å undersøke sammenhengen mellom to variabler i datasettet er blant annet *scatterdiagram*. Vi har en linje som viser gjennomsnittstemperaturen og punkter som viser den faktiske temperaturene den dagen. Dette viser godt sammenheng og visualiserer sammenhengen mellom de to variablene på en oversiktelig måte. Scatterdiagramet gir innsikt i detaljene bak linjen til gjennomsnittet. +Vi har også lagd korrelasjonsmatriser ved hjelp av seaborn heatmaps. Den viser korrelasjonen koeffisienten mellom to variabler, altså sammenhengen, mellom de ulike variablene. + +Sammenhengene kan tolkes slik: +- +1 - sterk positiv sammenheng. +- 0 - ingen sammenheng. +- -1 - sterk negativ sammengen + +For å lese sammenhengen, kan man i korrelasjonsmatrisen, finne en variabel vertikalt og en variabel horisontalt. I ruten som treffer begge disse variablene, finner vi korrelasjons koeffisienten. Som da indikerer sammenhengen. ##### Håndtering av skjevheter Vi har møtt på noen skjevheter som for eksempel at temperaturen har vært urealistisk i perioder, for å rydde opp i dette har vi sjekket uteliggere, altså sjekket om verdiene ligger mer enn 3 standardavvik fra gjennomsnittet. Om en verdi ligger mer enn 3 standardavvik over eller under gjennomsnittet, har vi brukt `interpolate(method='linear', limit_direction='both')`, som "gjetter" verdien basert på veriden før og etter. #### Visualiseringer av funnene våre -Vi har laget mange grafer som viser både temperatur, nedbør i både regn og snø, og vindmålinger for å visuelt formidle funnene våre. Disse grafene kan du finne i våre notebooks å se visuelt selv, men vil her gi mer detaljert dokumentasjon for visualiserings valgene våre. - I dette prosjektet har vi valgt å bruke ulike typer diagrammer for å visualisere værdata, spesielt temperatur og nedbør. Notebooksene våre inneholder ulike egenskaper, blant annet værdata for ulike tidsperioder. Vi har time for time av en valgt dag og sted, periode over flere dager (dager og sted blir valgt av bruker) og for et år (her velger bruker kun sted). Målet har vært å gjøre dataene forståelige og lett sammenlignbare for brukeren, samtidig som det gir en nøyaktig og tydelig fremstilling. Ettersom temperatur er en kontinuerlig variabel som endrer seg gradvis over tid har vi valgt å bruke linjediagram for å visualisere temperaturdataen. Vi gikk for dette type diagrammet for temperatur fordi det viser utviklingen på en jevn og oversiktelig måte og gjør det lett å følge temperaturens stigning og fall. I tillegg, spesielt på diagrammet for et års periode, kan det gi brukeren en god forståelse av trender og sesongvariasjoner da x-aksen vår er månedene i året. Linjediagrammet gjør det også lettere enn for eksempel søylediagram, å lese mønstre og identifisere tidsperioder med veldig høy eller lav temperatur. @@ -133,8 +140,12 @@ Søylediagram derimot følte vi var det beste alternative for visualisering av n Scatterplot er et annet diagram vi har brukt. Dette mente vi var best egnet blant annet til når vi skulle visualisere temperaturverdiene for en dag opp mot gjennomsnittstemperaturen den dagen. Den gir en tydelig og enkel oversikt med punkter for temperaturen per time for en dag og bruker kan lett lese av diagrammet om punktene er over eller under gjennomsnittsstreken. Diagrammet gir en tydelig fremstilling av variasjonen i temperaturen i løpet av dagen og hvordan enkelttimer skiller seg fra resten og gjennomsnittet. Scatterplot egner seg godt her fordi det viser detaljene i hver enkelt måling, samtidig som det gir rom for å indikere trender på en presis måte uten å koble punktene sammen. -Vi har også lagt til en notebook med interaktive visualiseringer. Denne notebooken har nokså lik kode som `notebook_one_day_data`, men på den er det ikke interaktivt, noe som `notebook_interactive_data` tilbyr. Dette for at brukeren selv kan få bestemme visualiseringen de selv synes er best og kan få endre litt på effekter som for eksempel farge, scatterplotsstørrelse, om rutenett og gjennomsnitt er med eller ikke. +Vi har også lagt til en notebook med interaktive visualiseringer. Denne notebooken har nokså lik kode som `notebook_one_day_data`, men på den er det ikke interaktivt, noe som `notebook_interactive_data` tilbyr. Dette for at brukeren selv kan få bestemme visualiseringen de selv synes er best og kan få endre litt på effekter som for eksempel farge, scatterplotsstørrelse, om rutenett og gjennomsnitt er med eller ikke. +I tillegg bruker vi Seaborn heatmaps for å lage en korrelasjonsmatrise, og indikere sammenhengene mellom ulike variabler. Her har vi valgt en fargepalett som fungerer slik: +- +1 - Sterk positiv sammenheng. Rød farge. +- 0 - Ingen sammenheng. Hvit farge. +- -0 - Sterk negativ sammenheng. Blå farge. #### Oppgave 5 - Visualisering @@ -143,7 +154,7 @@ Vi har laget visualiseringer for temperatur og andre værforhold både for dagen ##### Hvordan kan Matplotlib brukes til å forbedre forståelsen av de analyserte dataene? -Vi har blant annet brukt` matplotlib.dates (as mdates)` og `matplotlib.pyplot (as plt)` for å få et mer oversiktelig diagram av de analyserte dataene. Funksjoner vi har brukt er for eksempel `plt.gca` for å formatere aksene sin datetime til månedlig. Denne har vært fin å bruke til oversiktelig tilpassing av aksene. Vi har også flere steder brukt `plt.title`, `plt.grid()` og `plt.legend` for å få mer forklaringer og oversiktelighet på diagrammene våre og for å få de til å se like ut slik at det er enkelt for brukeren å sette seg inn i grafene uansett hvilken notebook. Andre eksempler på matplotlib vi har brukt er `plt.savefig` for å lagre til en fil som PNG, slik man enkelt kan finne tilbake til det. +Vi har blant annet brukt `matplotlib.dates as mdates` og `matplotlib.pyplot as plt` for å få et mer oversiktelig diagram av de analyserte dataene. Funksjoner vi har brukt er for eksempel `plt.gca` for å formatere aksene sin datetime til månedlig. Denne har vært fin å bruke til oversiktelig tilpassing av aksene. Vi har også flere steder brukt `plt.title`, `plt.grid()` og `plt.legend` for å få mer forklaringer og oversiktelighet på diagrammene våre og for å få de til å se like ut slik at det er enkelt for brukeren å sette seg inn i grafene uansett hvilken notebook. Andre eksempler på matplotlib vi har brukt er `plt.savefig` for å lagre til en fil som PNG, slik man enkelt kan finne tilbake til det. ##### Hvordan vil du håndtere og visualisere manglende data i grafene dine for å sikre at de fortsatt er informative? @@ -162,12 +173,15 @@ Vi mener effektiviteten i visualiseringene våre er svært god fordi grafene og #### Oppgave 6 - Prediktiv analyse ##### Lag minst tre forskjellige typer visualiseringer (f.eks. linjediagrammer, søylediagrammer og scatterplots) for å representere endringer i eksempelvis luftkvalitet og temperaturdata over tid. Forklar valget av visualiseringstype for hver graf. -Vi har laget linjediagrammer, søylediagrammer og scatterplots. Alle tre typer kan man finne i n`otebook_one_day_data.ipynb`, i `notebook_one_week.ipynb` kan man finne søylediagram og linjediagram. I `notebook_statistic_data.ipynb` kan man finne linjediagram og søylediagram. -Linjediagram ble brukt i de fleste notebooks fordi det passer godt til å vise utvikling over tid, spesielt for temperaturen. Søylediagram ble brukt fordi det gjør det enkelt å visuelt se hvor mye feks. regn eller snø det var i den perioden. Scatterplots ble brukt for å visuelt vise hvor mye temperaturen hver time er over eller under gjennomsnittet for dagens temperatur. +Vi har laget linjediagrammer, søylediagrammer, scatterplots og heatmaps. Alle fire typer kan man finne i `notebook_one_day_data.ipynb`, i `notebook_one_week.ipynb` kan man finne søylediagram og linjediagram. I `notebook_statistic_data.ipynb` kan man finne linjediagram og søylediagram. + +Linjediagram ble brukt i de fleste notebooks fordi det passer godt til å vise utvikling over tid, spesielt for temperaturen. Søylediagram ble brukt fordi det gjør det enkelt å visuelt se hvor mye feks. regn eller snø det var i den perioden. Scatterplots ble brukt for å visuelt vise hvor mye temperaturen hver time er over eller under gjennomsnittet for dagens temperatur. + +Heatmaps blir brukt for å lage en korrelasjonsmatrise. Det gjør det enkelt å se sammenheng og styrken i det ulike rutene. Ved at vi har valgt en fargepalett som også gir mening, der rød er positiv, blå er negativ og hvit er null. ##### Implementer visualiseringer ved hjelp av Matplotlib og Seaborn. Inkluder tilpassede akser, titler, og fargepaletter for å forbedre lesbarheten og estetikk. -Dette har vi brukt Matplotlib til og visualiseringene kan du finne i notebooksene. +Vi har stort sett brukt matplotlib i alle notebook-ene. Vi har også brukt Seaborn til heatmaps for å lage en korrelasjonsmatrise. ##### Demonstrer hvordan manglende data håndteres i visualiseringene. Lag en graf som viser hvordan manglende verdier påvirker datatrender, og diskuter hvordan dette kan påvirke tolkningen av dataene. @@ -175,4 +189,4 @@ Visualiseringen finner man i notebook-ene. Vi har identifisert manglende data og ##### Skriv en kort evaluering av de utviklede visualiseringene. Diskuter hvilke visualiseringer som var mest effektive for å formidle informasjon, og hvorfor. Reflekter over tilbakemeldinger fra medstudenter eller veileder. -Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. \ No newline at end of file +Linjegrafene viste seg å være de mest effektive når det gjaldt å formidle utvikling over tid, spesielt for å identifisere trender og mønstre i dataene. Kombinasjonen av tydelige akser, fargebruk og merking av nøkkelpunkter gjorde det enkelt å tolke informasjonen raskt. I tillegg fungerte kombinasjonsgrafene (linjediagram og stolpediagram) godt for å sammenligne flere dataserier parallelt, som f.eks. temperatur og nedbør. Korrelasjonsmatrisene er også en effektiv visualisering for å vise sammenhengen mellom de ulike variablene. Det er lettere å forstå fargene, enn å bare skulle lese tallene. \ No newline at end of file diff --git a/data/README.md b/data/README.md index 29c23c4..70e5d6f 100644 --- a/data/README.md +++ b/data/README.md @@ -2,15 +2,36 @@ Her vil det opprettes ulike mapper som et resultat av dataene som lagres gjennom kjøringen av de ulike notebookene. -Funksjonen er bygd slik at den først sjekker om det eksisterer en mappe, før den eventuelt lager. Alle mapper som starter med output (altså output data) er lagt til i `.gitignore`. Dette for å ikke laste opp masse unødvendig til github, men også for at brukere ikke 'deler' data. Mine kjøringer vil være mine, og dine vil kun vises hos deg. +Funksjonen er bygd slik at den først sjekker om det eksisterer en mappe, før den eventuelt lager. Mappen er delt opp i `data/figures` og `data/json`, dette for å lettere skille mellom dataen fra de ulike notebook-ene. + +Alle mapper som starter med output er lagt til i `.gitignore`. Dette for å ikke laste opp masse unødvendig til github, men også for at brukere ikke 'deler' data. Mine kjøringer vil være mine, og dine vil kun vises hos deg. Det er også en test-mappe, her har vi lagret noe data hentet med API-en, som inneholder feil og mangler. Denne vil bli brukt i `notebook_regression.ipynb` for å vise at funksjonene våre for renskning fungerer, før dataen blir splittet og trener opp en regresjonsmodell. -Dette er eksempel på noen av mappene: -- `test` inneholder forhåndslagret data for bruk i `notebook_regression.ipynb` -- `output_current_data` lagrer dataen for ønsket sted, kjørt fra `notebook_current_data.ipynb` -- `output_fig` lagrer grafer, kjørt fra `notebook_statistic_data.ipynb` -- `output_record` lagrer rekord data fra ønsket sted, kjørt fra `notebook_statistic_data.ipynb` -- `output_statistikk` lagrer dataen for ønsket sted, kjørt fra`notebook_statistic_data.ipynb` -- `output_sammenligning_dag` lagrer data for to ønsket steder for dags sammenligning, kjørt fra `notebook_compare_one_day_data.ipynb` -- `output_fig_sammenligning` lagrer sammenligningsgrafer, kjørt fra de ulike 'compare' notebookene \ No newline at end of file +Dette er mappenestrukturen: +`data/figures`: +- `output_fig_compare_one_day` +- `output_fig_compare_one_week` +- `output_fig_compare_statistic` +- `output_fig_interactive` +- `output_fig_one_day` +- `output_fig_one_week` +- `output_fig_statistic` + +Figurene som lagres vil være blant annet: +- Værdata (temperatur, nedbør og vind) +- Temperatur (gjennomsnitt, maks og min) +- Korrelasjonsmatriser + +`data/json`: +- `output_compare_one_day` +- `output_compare_one_week` +- `output_compare_statistic` +- `output_current` +- `output_interactive` +- `output_one_day` +- `output_one_week` +- `output_records` +- `output_statistic` + +Data som lagres er json-filer med data hentet fra API-en. Og i `output_records` vil det lagres rekord verdier regnet fra `notebook_statistic_data`. \ No newline at end of file diff --git a/docs/README.md b/docs/README.md index 008fb57..ed90308 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,5 +1,9 @@ # Documents -KI - declaration + +### Refleksjonsnotat +[Refleksjonsnotat](./refleksjonsnotat.md), her har vi snakket om vår erfaring av prosjektet, hva vi har lært om både programmering og samarbeid. Litt problemer vi har møtt på veien, og litt refleksjon rundt hva om kunne vært gjort annerledes. Men det viktigste er vår refleksjon over egen læring. + +### KI - declaration Første deklarasjon: [Se KI-deklarasjonen](./KI_one_declaration.pdf) diff --git a/notebooks/README.md b/notebooks/README.md index 45bd46a..f1bb9ca 100644 --- a/notebooks/README.md +++ b/notebooks/README.md @@ -16,7 +16,9 @@ Her finnes informasjon om de ulike notebookene og deres innhold. Denne notebooken henter data for ønsket periode (inntil 7-dager) fra to steder, og sammenglinger verdiene. Dataen fra begge stedene lagres i samme json-fil, og hentes ut ved hjelp av Pandas SQL. - [Compare statistic data](notebook_compare_statistic_data.ipynb) Denne notebooken henter data fra en API som samler alle historiske data for to ønskede steder, og sammenglinger verdiene. Dataen fra begge stedene lagres i samme json-fil, og hentes ut ved hjelp av Pandas SQL. +- [Interactive](notebook_interactive) + Denne notebooken henter data for ønsket dag og sted, skriver til fil. Lager en interaktiv visualisering hvor bruker kan endre på dot-størrelsen, farger og velge om rutenett og gjennomsnittslinjen skal være synlig. - [Regression](notebook_regression.ipynb) - Denne notebooken henter data fra et test-fil, hvor vi vet det er mangler, og kjører rensking av dataen før den splittes og trener opp en regresjonsmodell. Du kan også legge inn ulike verdier til variablene for å se regresjonen i live-action. + Denne notebooken henter data fra et test-fil, hvor vi vet det er mangler, og kjører rensking av dataen før den splittes og trener opp en regresjonsmodell. Bruker kan også legge inn ulike verdier til variablene for å se regresjonen i live-action. - [Test notebook](test_notebook.ipynb) Dette er bare en test notebook, for å se om venv funker og det å importere funksjoner fra packager. diff --git a/resources/README.md b/resources/README.md index 6be3d10..b4f0496 100644 --- a/resources/README.md +++ b/resources/README.md @@ -19,10 +19,19 @@ For å benytte denne API-en må man lage en bruker, og som student for man tilga ### Possible API - **API from openweathermap** -[API_OPEN_WEATHER_MAP](https://openweathermap.org/) + - [Current Data](https://openweathermap.org/current): for å hente ut data fra ønsket sted på nåværende tidspunkt. + - [History API](https://openweathermap.org/history): for å hente data fra ønsket sted og tidsperiode (inntil 7 dager). + - [Statistic Historical Data](https://openweathermap.org/api/statistics-api): for å hente statistisk historisk data som kan brukes til regresjon. Den tar utganspunkt i all historisk data og oppsummerer det for hver dag i året. - **API from meterologisk institutt** -[API_FROST](https://frost.met.no/index.html) + - [Airqualityforecast](https://api.met.no/weatherapi/airqualityforecast/0.1/documentation) + Vanskelig å kunne hente data fra ønsket sted, komplisert request med masse data. + - [Frost](https://frost.met.no/index.html) + Vanskelig å kunne hente data fra ønsket sted, stasjonsbasert. + - [Locationforecast](https://api.met.no/weatherapi/locationforecast/2.0/documentation) + Enkel å finne data fra ønsket sted, men bare en forecast, så finner ikke historiske data. + - [Vaer og klima](https://www.met.no/vaer-og-klima/klima-siste-150-ar) + Mye historisk data, men hadde kun for regioner og ikke for steder slik vi ønsket. ### Possible dataset - **Natural Disasters:** diff --git a/src/README.md b/src/README.md index b1fb22f..f3948f1 100644 --- a/src/README.md +++ b/src/README.md @@ -18,6 +18,6 @@ Her kommer en kjapp forklaring av de ulike filene og deres funksjoner: - Konverterer grader fra kelvin til celsius - Sjekker at ønskede kolonner eksisterer i datasettet - Fyller "NaN" verdier med 0, i ønskede kolonner - - Fjerner alle uønskede kolonner med samme endelse (notebook_statistic_data.ipynb) - - Henter rekord målinger (notebook_statistic_data.ipynb) + - Fjerner alle uønskede kolonner med samme endelse (`notebook_statistic_data.ipynb`) + - Henter rekord målinger (`notebook_statistic_data.ipynb`) - `test_module.py` en test funksjon for å sjekke at venv og implementering til notebook funker som det skal.