Benutzer:Tomtar/Entwuerfe/Bundestagswahl2013 RaBB

Beauftragung Statistik

Der Auftrag

Der Kreisverband Rastatt/baden-Baden veröffentlichte am 18.10.2013 folgende Ausschreibung:

> der KV Rastatt/Baden-Baden schreibt die Beauftragung für einen
> Statistikbeauftragten zur Wahlkampfauswertung aus.
>
> Hintergrund:
> Dass das Wahlergebnis nicht berauschend war, ist hinlänglich bekannt.
> Allerdings sollten wir versuchen, daraus zu lernen. Momentan wissen wir
> nur, wie das Ergebnis im gesamten Wahlkreis war. Wir wissen jedoch
> nicht, wieviele Wähler wir wo sitzen haben.
> Der Landkreis Rastatt hat jedoch hier:
> http://www.landkreis-rastatt.de/servlet/PB/menu/2090956_l1/index.html?QUERYSTRING=bundestagswahl%25u00202013
> eine sehr umfangreiche Statistik veröffentlicht, getrennt nach Erst- und
> Zweitstimmen.
>
> Das sind zwar tolle Zahlenwerke, allerdings kann man in der Form nichts
> damit anfangen.
>
> Aufgabenumfang:
> Erfassen der Wahlergebnisse in einem verwertbaren Format, Auswerten der
> Ergebnisse je Gemeinde bzw. je Wahlbezirk, ermitteln von Hochburgen usw.
>

Worauf ich wie folgt antwortete:

Hiermit bewerbe ich mich um den ausgeschriebenen Job.
Begründung: Naturwissenschaftliches Studium, bisherige
Schatzmeisteraktivität und Auswertungen wie etwa diese hier
http://wiki.piratenpartei.de/Benutzer:Tomtar/Entwuerfe/KVs
sollten eine gewisse Zahlenaffinität belegen.

Der Landkreis Rastatt veröffentlichte die Rohdaten von erst- und Zweitstimme unter folgenden Link:

http://www.landkreis-rastatt.de/wahlen/bundestag/2013/HTML/Bundestagswahl2013-Erststimme.html

http://www.landkreis-rastatt.de/wahlen/bundestag/2013/HTML/Bundestagswahl2013-Zweitstimme.html

Die Ausführung

Ich ging wie folgt vor:

  1. Webseiten als HTML-Datei speichern
  2. HTML-Datei in MS Word öffnen
  3. Die Tabellen aus dem in Word geöffneten Dokument in ein leeres Excel-Dokument kopieren in zwei Tabellen "Erststimmen" und "Zweitstimmen"
  4. Alle verbundenen Zellen auflösen. Alle Schrift nicht kursiv formatieren. Alle Zellen mit Rahmen versehen. Ausrichtungen aller Zellen auf "links", "oben" setzen.
  5. VBSkript anwenden, damit jetzt leere Zellen korrekt aufgefüllt werden (Code siehe unten)
  6. Per VBScript alle Zeilen entfernen, die uninteressant sind (nur Prozentangaben interessieren)
  7. Per VbScript die Ergebnisse der Bundestagswahl 2009 ausgliedern in seperate Tabellen und in den 2013er Tabellen die Ergebnisse von 2009 entfernen
  8. Jetzt habe ich getrennte Tabellen für Erststimmen 2009, Erststimmen 2013, Zweitstimmen 2009 und Zweitstimmen 2013 in Excel. Ab hier kann die eigentliche Statistik beginnen: Datei:Wahlergebnis bundestagswahl2013 Tabellen.ods
  9. Sortieren der Tabelle für die Zweitstimmen nach den Ergebnissen der Piratenpartei.
  10. Übertrag der Ergebnisse in eine Karte.

500px

  1. Betrachtung der besten Wahlergebnisse. Die besten Ergebnisse werden erzielt in Rastatt und Baden-Baden.
  2. Fazit: Ein Kandidat in Rastatt hätte vll. noch am ehesten Stimmen. Das ist aber Bundestagswahl, Kommunalwahl kann anders aussehen.

Anhang: VBScript-Code

Auffüllen leerer Zellen:

Sub Main()
    Dim I As Integer
    For I = 1 To 4
        FillGaps ("Erststimmen", I)
        FillGaps ("Zweitstimmen", I)
    Next
End Sub

Sub FillGaps(table as String, column As Integer)
    Dim I As Integer
    Dim current_str As String
    Dim next_str As String
    Const MAX_NUM As Integer = 1800
    Const ERSTE_ZELLE As Integer = 4
    For I = ERSTE_ZELLE To MAX_NUM
        current_str = Worksheets(table).Cells(I, column).Value
        next_str = Worksheets(table).Cells(I + 1, column).Value
        If next_str = "" Then
            Worksheets(table).Cells(I + 1, column).Value = current_str
        End If
    Next
End Sub

Alle Zeilen entfernen, die uninteressant sind (nur Prozentangaben interessieren)

Sub Main2()
    RemoveUnecessary("Erststimmen")
    RemoveUnnecessary("Zweitstimmen")
End Sub

Sub RemoveUnecessary(table as String)
    Dim I As Integer
    Dim current_str As String
    Dim next_str As String
    Dim column As Integer
    Const MAX_NUM As Integer = 1800
    Const ERSTE_ZELLE As Integer = 4
   
    column = 5 'CDU
    For I = ERSTE_ZELLE To MAX_NUM
        current_str = Worksheets(table).Cells(I, column).Value
        If InStr(1, current_str, ",") = 0 Or InStr(1, current_str, "(") > 0 Then
            'remove line
            Worksheets(table).Rows(I).Delete
        End If
    Next

End Sub

Ergebnisse 2009 ausgliedern in seperate Tabellen und in den 2013er Tabellen entfernen

Sub Main3()
    Extract2009 ("Erststimmen")
    Extract2009 ("Zweitstimmen")
End Sub

Sub Extract2009(table As String)
    Dim I As Integer
    Dim J As Integer
    Dim current_str As String
    Dim next_str As String
    Dim column As Integer
    Const MAX_NUM As Integer = 1800
    Const ERSTE_ZELLE As Integer = 4
   
    column = 1
    J = 2
    For I = ERSTE_ZELLE To MAX_NUM
        current_str = Worksheets(table).Cells(I, column).Value
        If current_str = "Ergebnis 2009 " Then
            'copy
            Worksheets(table).Rows(I).Copy Destination:=Worksheets(table + " 2009").Rows(J)
            'fill in the right voting station
            Worksheets(table + " 2009").Cells(J, column).Value = Worksheets(table).Cells(I - 1, column).Value
            J = J + 1
            'remove line
            Worksheets(table).Rows(I).Delete
        End If
    Next

End Sub