packages = ["pandas", "matplotlib"]
[[runtimes]]
src = "static/pyodide/pyodide.js"
name = "pyodide-0.22.1"
lang = "python"
[[fetch]]
from = "static/python/"
files = ["saft2dataframe.py", "analyse.py", "request.py"]
Analyse av SAF-T-fil i nettleseren
Denne nettsiden lar deg åpne en SAF-T-fil, og bruke Python og pandas til å gjøre analyser av innholdet, uten at du trenger å ha Python installert på PC-en, alt kjører i nettleseren.
Du kan bruke noen av de forhåndsdefinerte spørringene/analysene, enten direkte eller med egne tilpasninger, eller du kan skrive din egen kode
I variabelen saft ligger det en pandas dataframe som inneholder alle transaksjonene fra SAF-T-fila. Prøv f.eks. saft.info() eller saft.describe() for å få litt informasjon om datasettet
Aller først: Last opp SAF-T-fil
Dersom du ikke har en egen SAF-T-fil, kan du kjøre koden nedenfor for å laste en eksempelfil fra Skatteetaten, slik at du kan teste de andre funksjonene her.
NB! Merk at koden nedenfor bare er testet på Skatteetatens eksempelfil.
url = (
"static/testdata/saft.xml"
)
saft = saft2dataframe(open_url(url))
main_element = document.getElementsByTagName('main') # nå kan vi hente frem eksemplene
main_element[0].style.display = 'block'
f'Variabelen "saft" er nå av typen {type(saft)} og er {len(saft)} rader lang'
Omsetningstall for en måned
Bytt ut datoene for å få den aktuelle tidsperioden. Dette er omsetningstallene SSB ber om dersom du er trukket ut til å besvare spørreskjema for varehandelsindeksen.
Her er den samme koden som i eksempelet over, lagt inn i en funksjon kalt
omsetning
som kan kalles
med parametrene år og måned. Da slipper brukeren å se all koden, hvis de ikke er
interessert, men kan samtidig enkelt få tilgang til den ved å se i kildekoden til dokumentet.
En åpenbar fordel med denne tilnærmingen er at funksjonen kan suppleres med kode for å gjøre
den mer robust, fange opp feil og gi bedre tilbakemeldinger, for eksempel hvis brukeren
ber om omsetning for perioder det ikke finnes data for. (Men det er ikke lagt inn i eksempelet,
altså ...)