Standard for kommuneinndeling til Python Pandas

#!/usr/bin/env python
#coding: utf-8
# Ligger som Jupyter notebook på https://github.com/janbrus/ssb-api-python-examples

# # Eksempler på bruk av Klass fra Python
# Klass - Klassifikasjoner og kodelister.
# Se også Klass API dokumentasjon: [Klass API guide](https://data.ssb.no/api/klass/v1/api-guide.html)

# 1. Et enkelt eksempel: Dagens kommuner

# Vi importerer Python Pandas, som kan angis som pd
import pandas as pd


# Eksempelet henter gyldige koder fra Standard for kommuneinndeling.
# Adressen i Klass er https://www.ssb.no/klass/klassifikasjoner/131/
# 131 = ID til klassifikasjonen
# Vi henter gyldige koder som JSON via Klass API med [codesAt](https://data.ssb.no/api/klass/v1/api-guide.html#_codesat):
URL1 = 'http://data.ssb.no/api/klass/v1/classifications/131/codesAt.json?date=2021-01-19'

# Siden dette er json kan vi bruke Pandas read_json(). Den kan ta nettadresser direkte.
dataframe1 = pd.read_json(URL1)
print(dataframe1)

# Alt ligger i en kolonne 'codes'. 
# Vi må i tillegg bruke Pandas sin 'json_normalize'.
# Vi gir dataframe1['codes'] som input

kommuner2020 = pd.json_normalize(dataframe1['codes'])
print(kommuner2020)


#  2. Henter Standard for kommuneinndeling med endringer fra og med  1.1.2017 inkl. kommende inndelig gyldig fra 2024
# Url til Klass API. Nå bruker vi [codes](https://data.ssb.no/api/klass/v1/api-guide.html#_codes) med fra-og-med dato. 
# Id er fortsatt 131 og vi angir .json slik:
URL2 = 'http://data.ssb.no/api/klass/v1/classifications/131/codes.json?from=2017-01-01&includeFuture=True'

# to= parameteren for tid er ikke nødvendig i Klass API. Den kan med fordel utelukkes om en vil ha med endringer.
# Leser URL2 som json til dataframe2
dataframe2 = pd.read_json(URL2)
dataframe2.head()

# Vi bruker Pandas json_normalize
kommuner_fra2017 = pd.json_normalize(dataframe2['codes'])
print(kommuner_fra2017)

# Vi bruker drop for å fjerne unødvendige kolonner.
kommuner_fra2017 = kommuner_fra2017.drop(columns=['parentCode', 'level', 'shortName', 'presentationName'])
kommuner_fra2017.head()

# Setter code som inneholder kommunenummrene som index
kommuner_fra2017 = kommuner_fra2017.set_index('code')
kommuner_fra2017.tail()

# Finn kommunenummer og gyldighetsperiode for Holmestrand. Se gyldighetsperiodene.
kommuner_fra2017.query('name == "Holmestrand"')


Konakt  [statistikkbanken@ssb.no](statistikkbanken@ssb.no)