Am 13. September 2020 finden in Nordrhein-Westfalen die Kommunalwahlen statt. Wahlen und Datenanalyse sowie Statistiken gehörten schon immer zusammen, egal ob Prognosen oder Rückschlüsse nach der Wahl, vieles wird analysiert.
Auch wir haben Daten zu den Kandidatinnen und Kandidaten für den Düsseldorfer Stadtrat analysiert und statistische Informationen visualisiert. Unsere kleine Analyse soll einen Einblick in die Datenanalyse mit der Programmiersprache Python und deren Modulen pandas und matplotlib geben.
Datenquelle
Da wir keine eigenen Daten über die Kandidatinnen und Kandidaten vorliegen haben, bedienen wir uns aus Quellen der Stadt Düsseldorf. Diese und viele andere Kommunen, Länder und Staaten, sowie öffentliche Einrichtungen stellen unter den Begriffen Open Government bzw. Open Data viele Daten bereit.
Auf der Webseite https://opendata.duesseldorf.de/dataset/ratswahl-2020-d%C3%BCsseldorf lassen sich die von uns genutzten Daten herunterladen (Download: 19.08.2020). Ähnliche Quellen gibt es auch bei vielen anderen Kommunen, wobei nicht alle die gleichen Daten bereitstellen. Es gibt jedoch immer die Möglichkeit Anfragen für Daten zu stellen.
Datenanalyse und Visualisierung
Mit Hilfe der Python Module pandas (Auswertung) und matplotlib (Grafische Darstellung) haben wir die vorliegenden Daten in einem Jupyter Notebook analysiert und grafisch ausgewertet.
Im folgenden Abschnitt geben wir einen Einblick in die Analyse und zeigen einen Teil der Ergebnisse. Das vollständige Jupyter Notebook findet ihr hier: Jupyter Notebook auf GitHub
Daten einlesen
Die genutzten Daten liegen als CSV-Datei vor und können relativ schnell mit Hilfe von pandas eingelesen werden:
df = pd.read_csv("./Daten/Rats_Kandidatinnen_und_Kandidaten _0.csv", delimiter=";")
Die CSV-Datei beinhaltet Informationen zu 703 Kandidatinnen und Kandidaten für den Stadtrat:
Vorname und Name
Akademischer Grad
Jahrgang / Geburtsjahr
Geburtsort
Beruf
Wohnort inkl. PLZ
Partei (inkl. Abkürzung)
Wahlbezirk
Reserveliste Platz
E-Mail Adresse
Verteilung der Kandidatinnen und Kandidaten
In einer ersten Analyse haben wir uns die Verteilung der Personen auf die 16 Parteien (inkl. einer Einzelbewerberin) angeguckt. Diese Verteilung haben wir mit matplotlib grafisch dargestellt.
Zusätzliche kleine Analysen waren die Häufigkeiten von Nachnamen sowie die Verteilung akademischer Grade auf die Parteien.
df['Name'].value_counts()
Müller 6
Krüger 6
Möller 5
Becker 5
Schmidt 5
Alter der Kandidatinnen und Kandidaten
In einer weiteren Auswertung haben wir das durchschnittliche Alter der Kandidatinnen und Kandidaten unterteilt nach Parteien betrachtet. Da die Datenquelle nur das Geburtsjahr enthält und wir uns bereits in der zweiten Jahreshälfte befinden, gehen wir davon aus, dass alle Personen bereits in diesem Jahr Geburtstag hatten.
df['age'] = 2020 - df['Jahrgang']
df.groupby('Partei').mean()['age']
Geschlecht der Personen
Ebenso wie das komplette Geburtsdatum fehlt das Geschlecht in der vorliegenden Datenquelle. Was bei der Betrachtung der Daten auffällt, dass der Beruf größtenteils gendergerecht angegeben wurde. Hierüber könnte daher ein großer Teil der Personen einem Geschlecht zugeordnet werden. Leider gilt dies nicht für alle Einträge zum Beruf. Um den manuellen Aufwand gering zu halten, haben wir uns daher für einen Online-Dienst entschieden der für einen Vornamen ein Geschlecht zurückgibt. Auch hier gab es jedoch elf Vornamen die nicht zuzuordnen waren und manuell ergänzt werden mussten. Zusätzlich wurde die Korrektheit der Ergebnisse nur stichprobenartig kontrolliert.
Ein Zuordnung zum Geschlecht "divers", neben weiblich und männlich ist anhand der vorliegenden Informationen ebenfalls nicht möglich.
Mit Hilfe des ermittelten Geschlechts konnten wir anschließend eine Auswertung pro Partei vornehmen. Die Verteilung über alle Parteien hinweg betrug 40%:60% (Weiblich:Männlich).
# Absolute Zahlen
df.groupby(["Partei_kurz", "gender"])['Name'].count()
Partei_kurz gender
AfD female 10
male 30
Albertine Kallenbach - Alle sind Wir female 1
CDU female 25
male 52
DIE LINKE female 19
male 25
DSP female 9
male 17
Die PARTEI female 11
male 30
FDP female 14
male 36
FREIE WÄHLER female 21
male 24
GRÜNE female 32
male 31
Klimaliste Düsseldorf female 23
male 18
PIRATEN female 13
male 28
REP female 14
male 27
SPD female 44
male 62
TIERSCHUTZ hier! female 26
male 15
Volt female 13
male 28
WIDERSTAND 2020 Wir für Düsseldorf female 2
male 3
Die vorgestellten Analysen basieren auf einer kleinen und überschaubaren Datenquelle und dienen als Beispiel für die Möglichkeiten der Datenanalyse mit Python. Weitere Analysen und Rückschlüsse könnte man z.B. auch durch Einbeziehung von Daten andere Kommunen ziehen.
Disclaimer: Die Codingschule übernimmt kein Gewähr für die Korrektheit der Daten und Auswertungen.
Comentários