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.
Installasjon
Pakken er avhengig av at Fame er installert miljøet der den benyttes. Siden den er installert på sl-fame-1.ssb.no
1 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.
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
= fame_to_pandas(
df '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
= fame_to_pandas(
df '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']
[ )
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
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
.↩︎