Python, Jupyter und die UK General Election 2019

In diesem Tutorial dreht sich alles um die Wahlen im Vereinigten Königreich vom 12. Dezember 2019. Zu welcher Sitzverteilung das Ergebnis dieser Wahl im House of Commons führte, soll mithilfe von Python visualisiert werden. Als Code-Editor nutze ich Visual Studio Code.

Es ist das dritte Balkendiagramm-Beispiel. Der Code zu den vorherigen Beispielen kann auf folgenden Seiten abgerufen werden:

Visual Studio Code und Jupyter Notebook

Visual Studio Code bietet mittlerweile eine sehr gute Unterstützung für Jupyter Notebook. Voraussetzung ist, dass das Paket jpyter installiert wurde:

PS> pip install jupyter # Windows
$ pip3 install jupyter  # Linux/macOS

Startet Visual Studio Code und öffnet mit shift + command + p die Command Palette. Um mit einem neuen Notebook zu beginnen, muss hier

Python: Create New Blank Jupyter Notebook

ausgeführt werden.

Den Anfang machen die erforderlichen Importe:

import json
import matplotlib.pyplot as plt
from pprint import pprint

JSON-Datei lesen

Dann folgt der zu verwendende Datensatz, wobei die Daten aus einer JSON-Datei gelesen werden, die die Bezeichnung „uk_election_2019.json“ hat.

So sieht die Datei aus:

{
    "Conservative Party": 365,
    "Labour Party": 203,
    "Scottish National Party": 48,
    "Liberal Democrats": 11,
    "Democratic Unionist Party": 8,
    "Sinn Féin": 7,
    "Plaid Cymru": 4,
    "Green Party": 1,
    "Brexit Party": 0,
    "UK Independence Party": 0,
    "Other Parties": 3
}

Und so sieht der Code aus:

FILE = "uk_election_2019.json"

with open(FILE) as json_file:
    json_data = json.load(json_file)

Als Ergebnis erhält man ein Dictionary. Diese Daten könnte man sich jetzt anzeigen lassen, wobei hier pprint zur Anwendung kommt:

pprint(json_data)

Sowohl die Schlüssel (Parteien) als auch die Werte (Sitze) werden nun jeweils zu einer Liste konvertiert:

parties = list(json_data.keys())
seats = list(json_data.values())

Die Balken sollen unterschiedliche Farben haben, die von der Liste „colors“ bereitgestellt werden:

colors = [
    "#3D81CB",
    "#B90E00",
    "#F8E900",
    "#E09000",
    "#7E0700",
    "#306A18",
    "#528F2B",
    "#55B728",
    "#52BDD0",
    "#BDBDBD",
    "#767676",
]

Daten mit Matplotlib visualisieren

Zum Schluss kann dann mit Matplotlib das Balkendiagramm erstellt werden:

fig, ax = plt.subplots()

plt.title("UK General Election 2019")
plt.ylabel("Seats")
plt.xlabel("Parties")
plt.bar(parties, seats, align="center", alpha=0.6, color=colors)

ax.set_xticks(range(len(parties)))
ax.set_xticklabels(parties, rotation="vertical")

Für dieses Beispiel benötigt Ihr nicht zwangsläufig ein Jupyter Notebook. Ihr könnt diesen Code auch in einer Datei speichern und ausführen. Dann sollte aber nicht plt.show() vergessen werden. Andernfalls wird keine Grafik angezeigt.

Zum Schluss nochmal der vollständige Code:

import json
import matplotlib.pyplot as plt
from pprint import pprint

FILE = "uk_election_2019.json"

with open(FILE) as json_file:
    json_data = json.load(json_file)

pprint(json_data)

parties = list(json_data.keys())
seats = list(json_data.values())

colors = [
    "#3D81CB",
    "#B90E00",
    "#F8E900",
    "#E09000",
    "#7E0700",
    "#306A18",
    "#528F2B",
    "#55B728",
    "#52BDD0",
    "#BDBDBD",
    "#767676",
]

fig, ax = plt.subplots()

plt.title("UK General Election 2019")
plt.ylabel("Seats")
plt.xlabel("Parties")
plt.bar(parties, seats, align="center", alpha=0.6, color=colors)

ax.set_xticks(range(len(parties)))
ax.set_xticklabels(parties, rotation="vertical")

plt.show()

Weiterführende Links

Zuletzt aktualisiert am 3. Februar 2024