Mitä eduskunta tuottaa? Katsaus 340 000 asiakirjaan

Eduskunta jakaumana, osa 8: valtiopäiväasiakirjat tutuksi

Eduskunnan avoin data sisältää kaikki valtiopäiväasiakirjat vuodesta 2015 — yli 340 000 dokumenttia. Tässä osassa avaamme, mitä aineisto sisältää ja mitä siitä voi oppia, ennen kuin sukellamme yksittäisiin ilmiöihin.

eduskunta
avoin data
jakaumat
EDA
Author

Kristian Vepsäläinen

Published

20.8.2026

Uusi jakso sarjassa. Osissa 1–7 tutkimme, keitä kansanedustajat ovat ja miten he puhuvat. Nyt käännämme katseen siihen, mitä eduskunta tuottaa: lakialoitteet, kirjalliset kysymykset, valiokuntamietinnöt, hallituksen esitykset. Tämä osa on kartta aineistoon; osat yhdeksästä eteenpäin sukeltavat yksittäisiin ilmiöihin.

Uutiskoukku: näkymätön työ

Julkinen keskustelu näkee eduskunnasta täysistunnon — puheet ja äänestykset. Mutta suurin osa työstä on asiakirjoja: aloitteita, kysymyksiä, mietintöjä. Tämä aineisto tekee sen työn näkyväksi. Ja kuten aina, se ei ole yksi luku vaan jakauma: kymmeniä asiakirjatyyppejä, hyvin eri määrinä.

Näytä koodi
library(tidyverse); library(here); library(qs2); library(scales); library(patchwork)
select <- dplyr::select; filter <- dplyr::filter
set.seed(20270418)
pal <- c(punainen="#e63946", turkoosi="#2a9d8f", oranssi="#f4a261",
         laivasto="#1d3557", sininen="#457b9d")
theme_set(theme_minimal(base_size = 13) +
  theme(plot.title = element_text(face="bold"), plot.subtitle = element_text(color="grey30"),
        panel.grid.minor = element_blank()))
DATA <- here("data", "eduskunta")
docs <- qs2::qd_read(file.path(DATA, "vaski_docs.qs"))
stopifnot("Aja ensin R/vaski-data-prep.R" = nrow(docs) > 100000)

Mikä aineisto tämä on

VaskiData on eduskunnan valtiopäiväasiakirjojen kokoelma XML-muodossa, vuodesta 2015. Jokainen rivi on yksi asiakirja, ja Eduskuntatunnus (esim. KK 47/2018 rd) kertoo tyypin ja valtiopäivävuoden. Lisenssi on CC BY 4.0.

Näytä koodi
tibble(
  asiakirjoja = nrow(docs),
  tyyppeja    = n_distinct(docs$tyyppi),
  vuodet      = paste0(min(docs$vpvuosi, na.rm=TRUE), "–", max(docs$vpvuosi, na.rm=TRUE)))
# A tibble: 1 × 3
  asiakirjoja tyyppeja vuodet   
        <int>    <int> <chr>    
1      340508      226 1000–2929

Jakauma ensin: asiakirjatyypit

Tyyppejä on yli 200, mutta muutama hallitsee. Näytetään yleisimmät — huomaa, kuinka vino jakauma on.

Näytä koodi
top <- docs |> count(tyyppi, sort = TRUE) |> slice_head(n = 20)
ggplot(top, aes(x = n, y = fct_reorder(tyyppi, n))) +
  geom_col(fill = pal[["laivasto"]]) +
  scale_x_continuous(labels = label_number(big.mark = " ")) +
  labs(title = "20 yleisintä asiakirjatyyppiä",
       subtitle = "Muutama tyyppi kattaa valtaosan aineistosta",
       x = "Asiakirjoja", y = NULL)

Selitys asiakirjatyypeille. Suuri osa yleisimmistä tunnuksista liittyy edustajien omaan toimintaan tai on saman asiakirjan ruotsinkielinen versio.

  • Hallitus ja lainsäädäntö: HE hallituksen esitys, EV eduskunnan vastaus (hallituksen esitykseen).
  • Edustajien aloitteet: LA lakialoite, TPA toimenpidealoite, TAA talousarvioaloite.
  • Kysymykset: KK kirjallinen kysymys, KKV vastaus kirjalliseen kysymykseen, SKT suullisen kyselytunnin kysymys.
  • EU-asiat: U valtioneuvoston kirjelmä EU:ssa valmisteltavasta asiasta, E valtioneuvoston selvitys EU-asiasta, EUN valtioneuvoston selvitys EU:n neuvoston tai Eurooppa-neuvoston kokouksesta.
  • Pöytäkirjat: PTK täysistunnon pöytäkirja.
  • Ruotsinkieliset vastineet: RP = HE (regeringens proposition), RSv = EV (riksdagens svar), SS = KK (skriftligt spörsmål), SSS = KKV, BM = TAA (budgetmotion), PR = PTK (plenarprotokoll), MFT = SKT.
  • Tekninen tunniste: EDK on eduskunnan asiakirjatunnus (esim. EDK-2024-AK-…), jonka alle yksittäiset asiakirjat ja liitteet tallennetaan — ei siis oma asiakirjatyyppi, mikä selittää sen suuren määrän.

Neljä ryhmää — mistä eduskunnan työ koostuu

Näytä koodi
# EDK on tekninen yleistunniste (EDK-YYYY-AK-…), ei asiakirjatyyppi -> pois grouped-tarkastelusta
docs_luok <- docs |> filter(tyyppi != "EDK")

luokittele <- function(t) dplyr::case_when(
  # Edustajien aloitteet (ml. ruotsi: LM=lakialoite, AM=toimenpidealoite, BM=talousarvioaloite)
  t %in% c("LA","TPA","TAA","LM","AM","BM")             ~ "Edustajien aloitteet",
  # Kysymykset ja vastaukset (ml. ruotsi: SS=KK, SSS=KKV, MFT=SKT)
  t %in% c("KK","KKV","SKT","SS","SSS","MFT")           ~ "Kysymykset",
  # Hallituksen esitykset ja selonteot (RP = HE ruotsiksi)
  t %in% c("HE","RP","VNS","VNT")                       ~ "Hallituksen esitykset ja selonteot",
  # Eduskunnan vastaukset ja kirjelmät (RSv = EV ruotsiksi)
  t %in% c("EV","RSv","EK")                             ~ "Eduskunnan vastaukset",
  # EU- ja ulkoasiat
  t %in% c("U","E","EUN","UTP")                         ~ "EU- ja ulkoasiat",
  # Valiokuntatyö päätteestä: suomi …VM/…VL/…VP/…VE, ruotsi …UB/…UU/…UD
  str_detect(t, "V[MLPE]$") | str_detect(t, "U[BUD]$")  ~ "Valiokuntatyö",
  # Täysistunnot (PR = PTK ruotsiksi)
  t %in% c("PTK","PR")                                  ~ "Istunnot",
  TRUE ~ "Muut")

ryhmat <- docs |> mutate(ryhma = luokittele(tyyppi)) |>
  count(ryhma) |> mutate(osuus = n/sum(n))

ggplot(ryhmat, aes(x = osuus, y = fct_reorder(ryhma, osuus))) +
  geom_col(fill = pal[["turkoosi"]]) +
  geom_text(aes(label = percent(osuus, .1)), hjust = -0.1, size = 3.5) +
  scale_x_continuous(labels = label_percent(), expand = expansion(c(0,.15))) +
  labs(title = "Eduskunnan asiakirjatuotanto neljässä ryhmässä",
       x = NULL, y = NULL)

Asiakirjavirta ajassa

Näytä koodi
vuosittain <- docs |> filter(!is.na(vpvuosi), vpvuosi >= 2015, vpvuosi < 2026) |>
  mutate(ryhma = luokittele(tyyppi)) |>
  count(vpvuosi, ryhma)

# Laajennettu paletti ryhmäkuvaajille (8 luokkaa). Perustuu pal-väreihin + 3 lisäsävyä.
ryhma_varit <- c(unname(pal), "#8d6e9c", "#e9c46a", "#6d6875")

ggplot(vuosittain, aes(vpvuosi, n, color = ryhma)) +
  geom_line(linewidth = 1) + geom_point() +
  scale_color_manual(values = ryhma_varit) +
  scale_y_continuous(labels = label_number(big.mark = " ")) +
  labs(title = "Asiakirjatuotanto vuosittain ryhmittäin",
       subtitle = "Vaalikausien vaihtuminen ja kriisivuodet näkyvät",
       x = NULL, y = "Asiakirjoja", color = NULL)

Piikit ja notkot eivät ole satunnaisia: vaalivuodet katkaisevat valtiopäivät, ja poikkeusolot (kuten COVID-vuodet) näkyvät sekä hallituksen esitysten että kysymysten määrissä. Näihin muutoskohtiin palaamme osassa, joka käsittelee lainsäädännön rytmiä.

Mitä tästä aineistosta saa irti — sarjan tiekartta

Tämä aineisto kantaa viisi seuraavaa osaa:

  • Osa 9: Aloitteiden läpimeno — mikä ennustaa, meneekö lakialoite läpi?
  • Osa 10: Lainsäädännön aihevirta — mistä eduskunnassa tehdään aloitteita, ja miten se muuttuu (rakenteisilla aihetunnisteilla, ei tekstimallinnuksella).
  • Osa 11: Yhteistyöverkostot — ketkä allekirjoittavat toistensa aloitteita?
  • Osa 12: Valiokuntien käsittelyajat — kuka on nopea, kuka ruuhkautuu?
  • Osa 13: Kirjalliset kysymykset — kuka kysyy, ja keneltä?

Mitä tämä tarkoittaa päättäjälle

  • Julkinen data ei ole valmis analyysi. 340 000 XML-asiakirjaa on raaka-aine; arvo syntyy siitä, että ne suodatetaan, jäsennetään ja yhdistetään oikein.
  • Rakenne on jakauma. Muutama tyyppi hallitsee, satoja on marginaalissa — keskiarvo “asiakirjaa vuodessa” ei kertoisi mitään olennaista.

TipTehdäänkö teidän datallenne sama?

Suuren, jäsentymättömän datavarannon kääntäminen päätöksiä tukevaksi analytiikaksi on ydinosaamistani. kristianvepsalainen.com

Datalähde: Eduskunnan avoin data, VaskiData (CC BY 4.0).