Benutzer:Tomtar/Entwuerfe/Bundestagswahl2013 RaBB
< Benutzer:Tomtar | Entwuerfe
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:
- Webseiten als HTML-Datei speichern
- HTML-Datei in MS Word öffnen
- Die Tabellen aus dem in Word geöffneten Dokument in ein leeres Excel-Dokument kopieren in zwei Tabellen "Erststimmen" und "Zweitstimmen"
- Alle verbundenen Zellen auflösen. Alle Schrift nicht kursiv formatieren. Alle Zellen mit Rahmen versehen. Ausrichtungen aller Zellen auf "links", "oben" setzen.
- VBSkript anwenden, damit jetzt leere Zellen korrekt aufgefüllt werden (Code siehe unten)
- Per VBScript alle Zeilen entfernen, die uninteressant sind (nur Prozentangaben interessieren)
- Per VbScript die Ergebnisse der Bundestagswahl 2009 ausgliedern in seperate Tabellen und in den 2013er Tabellen die Ergebnisse von 2009 entfernen
- 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
- Sortieren der Tabelle für die Zweitstimmen nach den Ergebnissen der Piratenpartei.
- Übertrag der Ergebnisse in eine Karte.
- Betrachtung der besten Wahlergebnisse. Die besten Ergebnisse werden erzielt in Rastatt und Baden-Baden.
- 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