Das gespaltene Parlament - Seit einem halben Jahr sitzt wieder eine rechte Partei im Bundestag. Was hat sich mit dem Einzug der AfD ins Hohe Haus verändert?
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
data
readme_files/figure-markdown_github
.gitignore
2018-bundestagsprotokolle-github.Rproj
readme.Rmd
readme.md

readme.md

Daten aus Bundestagsprotokollen

Am 24. April sind sechs Monate seit der konstituierenden Sitzung des 19. Bundestags vergangen. Wie hat sich das Parlament mit dem Einzug der Rechten verändert? Wie prägen die Rechten das Miteinander, das Klima, die Abläufe im Bundestag? Das wieder eine zumindest in Teilen rechtsextreme Partei im Parlament sitzt, ist eine Zäsur in der Geschichte der Bundesrepublik. Angesichts des Verhaltens von AfD-Politikern vor dem Einzug in den Bundestag, ihren Verbindungen zu rechtsextremen Kreisen, ihren teils rechtsradikalen und fremdenfeindlichen Äußerungen erschien es uns wichtig, nachvollziehbar und transparent zu machen, wie Vertreter dieser Partei im Bundestag agieren, wie sie parlamentarische Prozesse beeinflussen. In die Öffentlichkeit gelangen sonst in der Regel nur die besonderen Vorkommnisse, wichtige Entscheidungen, herausragende Reden, extreme Provokationen. Mit der Datenauswertung aller Protokolle - nicht nur bestimmter Ereignisse - über einen längeren Zeitraum objektivieren die Wahrnehmung und Bewertung des Geschehens dort.

In diesem Repo veröffentlichen wir die aus den Protokollen extrahierten Daten.

Veröffentlichte Artikel

Datengrundlage

Wenn die Abgeordneten im Bundestag diskutieren, wird jedes gesprochene Wort akribisch dokumentiert. Stenografen sitzen in jeder Plenardebatte und schreiben mit, was um sie herum passiert: Wer was sagt, wer klatscht, wer dazwischenruft, wer lacht, wer einer Aussage widerspricht und wie. Diese Aufzeichnungen landen in seitenlangen Dokumenten (hier zum Beispiel das Protokoll der ersten Sitzung nach der Bundestagswahl im Oktober, die kurz nach der Debatte im Internet veröffentlicht werden. Für die Süddeutsche Zeitung waren sie der Ausgangspunkt der Recherche, um das Auftreten der AfD im Bundestag und den Umgang mit ihr zu analysieren. Mehr zur Methodik auf SZ.de.

Beschreibung der Daten

  • Stand: 24. Sitzungstag
  • In diesem Repository gibt es eine .csv-Datei, in der ein Teil unserer extrahierten Daten aus den Bundestagsprotokollen zu finden sind.
Variable Beschreibung
sitzung_id Sitzungsnmmer
text Originaltext aus dem Protokoll
type Art der Aktion:Beifall, Heiterkeit, Lachen, Widerspruch, Zuruf
party agierende Fraktion
zurufer_name Person, die zuruft
zuruf_text Zuruf im Wortlaut
speaker_party Fraktion der sprechenden Person (Anmerkung: Die Person muss nicht notwendigerweise die Person am Rednerpult sein, z.B. wenn jemand eine Zwischenfrage stellt)
speech_id ID der Rede (aus XML-Datei)
top Tagesordnungspunkt
beschreibung Beschreibung des Tagesordnungspunkts
party_action agierte die ganze Fraktion (1) oder Teile der Fraktion (0)

Zentrale Auswertungen

Wir fokussieren uns auch die Reaktionen zwischen den Fraktionen. Applaus für moderierende Ämter, wie zum Beispiel für den Bundestagspräsidenten spielen keine Rolle. Rollenbezeichnungen wie Bundeskanzlerin haben wir in Fraktionsbezeichnungen umgewandelt.

library(dplyr)
library(ggplot2)
library(tidyr)

# import data
df <- read.csv("data/bundestagsprotokolle_19.csv", sep = "\t", stringsAsFactors = F)
party_vector <- c("afd", "fdp", "gruene", "linke", "spd", "union")

So oft tauchen die Parteien in den Daten pro Kategorie auf:

df %>% 
  filter(party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party, type) %>% 
  spread(type, n) %>%
  mutate(sum = rowSums(.[2:6])) %>% 
  arrange(desc(sum))
## # A tibble: 6 x 7
##   party  beifall heiterkeit lachen widerspruch zuruf   sum
##   <chr>    <int>      <int>  <int>       <int> <int> <dbl>
## 1 gruene    3019         68     68          46  1302 4503.
## 2 spd       3511         80     65          38   773 4467.
## 3 union     3303         85     28          15   870 4301.
## 4 linke     2753         34     61          47  1010 3905.
## 5 afd       2196         46    155          61  1173 3631.
## 6 fdp       2629         66     31          12   625 3363.

Beifall

Wieviel klatschen die Fraktionen für sich selbst und wieviel für die anderen?

df_beifall_self <- df %>%  
  filter(type == "beifall", party == speaker_party, party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party) %>% 
  rename(self = n)

df_beifall_others <- df %>% 
  filter(type == "beifall", party != speaker_party, party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party)  %>% 
  rename(others = n)

df_beifall_all <- df %>%
  filter(type == "beifall", party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party) %>% 
  rename(all = n)

df_beifall_all %>% 
  left_join(df_beifall_self, by = "party") %>% 
  left_join(df_beifall_others, by = "party") %>% 
  mutate(share_self = self/all,
         share_others = others/all) %>% 
  arrange(desc(share_self)) %>% 
  mutate(order = row_number()) %>% 
  tidyr::gather(type, factor, 5:6) %>% 
  ggplot(aes(x = reorder(party, -order), y = factor, group = type, fill = type)) +
    geom_bar(stat = "identity") +
    scale_y_continuous(labels = scales::percent) +
    coord_flip() +
    labs(title = "Anteil des Beifalls für die eigene Fraktion und andere Fraktionen")

Wenn eine Partei für andere klatscht, wie oft klatscht dann die ganze Fraktion und wann nur Teile einer Fraktion?

df %>% 
  filter(type == "beifall", party != speaker_party, party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party, party_action) %>% 
  spread(party_action, n) %>% 
  mutate(sum =  `0` +`1`) %>% 
  arrange(desc(sum)) %>% 
  mutate(order = row_number()) %>% 
  rename(ganze_partei = `0`, teile_der_partei = `1`) %>% 
  gather(party_action, value, -party, -sum, -order) %>% 
  ggplot(aes(x = reorder(party, -order), y = value, group = party_action, fill = party_action)) +
  geom_bar(stat = "identity") +
  coord_flip()

Wie viel klatschen die Fraktionen für andere? Und wieviel Aufmerksamkeit bekommt die AfD von den anderen Parteien?

df %>%  
  filter(type == "beifall", party %in% party_vector, speaker_party %in% party_vector, party != speaker_party) %>% 
  count(party, speaker_party) %>% 
  filter(party %in% party_vector, speaker_party %in% party_vector) %>% 
  spread(speaker_party, n) %>% 
  rowwise() %>% 
  mutate(nicht_afd = sum(fdp, gruene, linke, spd, union, na.rm= TRUE)) %>% 
  arrange(desc(nicht_afd)) %>% 
  mutate(order = row_number()) %>% 
  select(party, afd, nicht_afd, order) %>% 
  gather(type, value, -order, -party) %>% 
  ggplot(aes(x = reorder(party, -order), y = value, fill = type, group = desc(type))) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(title= "Wie oft die Fraktionen für die AfD oder die anderen Fraktionen klatschen",
       caption = "Quelle: Bundestag, Analyse: SZ")

Wer klatscht für wen?

df %>% 
  filter(party %in% party_vector, speaker_party %in% party_vector, party != speaker_party, type == "beifall") %>% 
  count(party, speaker_party) %>% 
  arrange(desc(n))
## # A tibble: 30 x 3
##    party  speaker_party     n
##    <chr>  <chr>         <int>
##  1 spd    union           871
##  2 fdp    union           828
##  3 union  spd             606
##  4 linke  gruene          587
##  5 gruene spd             573
##  6 gruene union           467
##  7 linke  spd             461
##  8 spd    gruene          440
##  9 gruene linke           424
## 10 fdp    spd             328
## # ... with 20 more rows

Zurufe

Welche Fraktion ruft am meisten zu?

df %>% 
  filter(party %in% party_vector, speaker_party %in% party_vector, party != speaker_party, type == "zuruf") %>% 
  count(party) %>% 
  arrange(desc(n))
## # A tibble: 6 x 2
##   party      n
##   <chr>  <int>
## 1 gruene  1268
## 2 afd     1138
## 3 linke    957
## 4 union    762
## 5 spd      722
## 6 fdp      582

Welche Fraktion ruft wie oft einer anderen zu?

df %>% 
  filter(party %in% party_vector, speaker_party %in% party_vector, party != speaker_party, type == "zuruf") %>% 
  count(party, speaker_party) %>% 
  arrange(desc(n))
## # A tibble: 30 x 3
##    party  speaker_party     n
##    <chr>  <chr>         <int>
##  1 gruene union           506
##  2 afd    union           464
##  3 gruene afd             453
##  4 linke  union           449
##  5 spd    afd             334
##  6 union  afd             269
##  7 afd    spd             254
##  8 linke  afd             223
##  9 afd    gruene          194
## 10 gruene spd             182
## # ... with 20 more rows

Lachen

Welche Fraktion lacht wie oft?

df %>% 
  filter(type == "lachen", party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party) %>% 
  ggplot(aes(x = reorder(party, n), y = n)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(title = "Anzahl des Lachens pro Fraktion",
       caption = "Quelle: Bundestag, Analyse: SZ")

Wer lacht über wen?

df %>% 
  filter(type == "lachen", party %in% party_vector, speaker_party %in% party_vector) %>% 
  count(party, speaker_party) %>% 
  arrange(desc(n))
## # A tibble: 29 x 3
##    party  speaker_party     n
##    <chr>  <chr>         <int>
##  1 afd    union            68
##  2 spd    afd              58
##  3 gruene afd              48
##  4 linke  afd              34
##  5 afd    spd              29
##  6 union  afd              23
##  7 linke  union            21
##  8 afd    gruene           20
##  9 afd    linke            20
## 10 afd    fdp              17
## # ... with 19 more rows

Über wen lacht die AfD? Die AfD lacht vor allem Sprecher der Union aus.

df %>% 
  filter(type == "lachen", party == "afd", party %in% party_vector, speaker_party %in% party_vector) %>% 
  group_by(party, speaker_party) %>% 
  summarise(n = n()) %>% 
  mutate(share = n/sum(n)) %>% 
  ggplot(aes(x = reorder(speaker_party, n), y = n)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(title = "Anzahl des Lachens der AfD pro Fraktion",
       caption = "Quelle: Bundestag, Analyse: SZ")

Kontakt

Katharina Brunner oder Martina Schories