Fra Fame til Python

Python-pakken fython lar deg hente ut data fra Fame-databaser.

Fame
Python
Tidsserier
Forfatter
Tilhører

Magnus Kvåle Helliesen

Seksjon for nasjonalregnskap (210)

Opprettet

January 12, 2024

Endret

January 16, 2024

Mange i SSB har data lagret i Fame som de ønsker å bearbeide med Python og R. Dette er spesielt relevant når man skal flytte statistikkproduksjon til Dapla. fython er en Python-pakke som gjør dette på en enkel måte for deg. Den lar deg eksportere data fra Fame med en enkel funksjon, og kan returnere dataene som enten CSV eller Pandas DataFrame.

Pakken finner du på GitHub.

Installasjon

Pakken er avhengig av at Fame er installert miljøet der den benyttes. Siden den er installert på sl-fame-1.ssb.no1 så vil de færreste har behov for å installere den selv.

Skulle du likevel ønske å installere pakken selv kan det gjøres med Poetry på følgende måte:

terminal
poetry add git+https://github.com/statisticsnorway/ssb-fame-to-python.git

Bruk av funksjonene

fython har to funksjoner: fame_to_csv og fame_to_df. Begge disse funksjonene tar inn de samme argumentene og de er listet opp i Tabell 1.

Tabell 1: Forklaring av argumentene i funksjonene til fython
Argument Forklaring fame_to_csv() fame_to_pandas()
databases List of Fame databases to access (with full path).
frequency Frequency of the data (‘a’, ‘q’, ‘m’).
date_from Start date for the data in Fame syntax (e.g., ‘2023:1’ for quarterly, ‘2023’ for annual).
date_to End date for the data in Fame syntax (e.g., ‘2023:1’ for quarterly, ‘2023’ for annual).
search_string Query string for fetching specific data. The search is not case sensitive, and “^” and “?” are wildcards (for exactly one and any number of characters, respectively)
decimals Number of decimal places in the fetched data (default is 10).
path Path to write the csv-file.

La se på noen eksempler.

Eksempler

Dersom vi ønsker å hente alt i database1.db og database2.db fra januar 2012 til desember 2022, og få det returnert i en DataFrame, kan vi skrive følgende kode:

python
from fython import fame_to_pandas

df = fame_to_pandas(
  ['sti/til/database1.db', 'sti/til/database2.db', 'm', '2012:1', '2022:12', '?']
  )

Dersom vi i stedet ønsker å hente alle serier som begynner på abc, slutter på d etterfulgt av ett vilkårlig tegn, kan vi skrive følgende kode:

python
from fython import fame_to_pandas

df = fame_to_pandas(
  ['sti/til/database1.db', 'sti/til/database2.db', 'm', '2012:1', '2022:12', 'abc?d^']
  )

? og ^ er altså jokertegn/wildcards som representerer henholdvis et vilkårlig antall tegn og nøyaktig ett tegn.

Dersom vi i stedet vil lagre dataene til en csv-fil kan vi skrive

python
from fython import fame_to_csv

fame_to_csv(
  ['sti/til/database1.db', 'sti/til/database2.db', 'm', '2012:1', '2022:12', 'abc?d^', 'sti/til/csv-fil.csv']
  )
Warning

Det er viktig å påpeke at enhver serie kun skrives én gang, og da fra den første databasen den finnes i (kronologisk iht. til listen med databaser).

Kjøringer på serveren

Når du skal bruke fython så må du ta hensyn til hvilken server Fame er installert på, og hvilken server du har tenkt til å jobbe på. Fame er som sagt installert på sl-fame-1.ssb.no, mens Jupyterlab er installert på sl-jupyter-p.ssb.no. Dvs. at hvis du ønsker å bruke fython i en notebook i Jupyterlab, så må du bruke ssh til å koble deg til sl-fame-1.ssb.no, og så kjøre koden derfra. Koden din kan skrive en fil til ønsket stammeområdet, som du igjen kan lese inn direkte i Jupyterlab.

Automatiserte uttrekk

Hvis man ønsker at utrekk fra Fame skal skje automatisk på gitte tidspunkter eller intervaller, så kan man ta kontakt med Kundeservice. Fordelen med dette er at man ikke trenger å bruke ssh slik som beskrevet over. Man kan lese inn direkte fra stammeområdet.

Overføre data til Dapla

Hvis man ønsker å overføre data fra Fame til Dapla, så kan dette settes opp som en MoveIt-operasjon. For å sette opp en MoveIt-jobb må ma kontakte Kundeservice. Overføring til Dapla forutsetter at man har et Dapla-team, og at man setter opp en synkroniseringjobb med Transfer Service.

Fotnoter

  1. Pakken er installert i Python-versjon 3.6 på serveren. Du kan åpne et Python-shell i terminalen på sl-fame-1.ssb.no ved å skrive: python3.6.↩︎