Ein Kurs für Anfänger und Anfängerinnen im Umgang mit Daten
Fragestellung: «Stimmt es, dass es in Zürich in den meisten Stadtquartieren mehr Hunde als Kleinkinder gibt?»
Während dieses Kurses gehen wir dem Gerücht nach, ob in den meisten Stadtquartieren tatsächlich mehr Hunde als Kleinkinder leben. Wir werden mit Open Data die Fakten dazu checken und zeigen, wie wir die gewonnenen Erkenntnisse darstellen und sogar als interaktive Webgrafiken visualisieren können.
Damit wir diese Fragestellung einfach und mit für alle Kursteilnehmenden vorhandenen Tools beantworten können, haben wir uns für Excel und Datawrapper entschieden.
Zur Beantwortung der Fragestellung benötigen wir die dazu relevanten Daten. Wir müssen uns zuerst auf die Suche machen, wo wir die Anzahl Hunde und die Anzahl Kleinkinder pro Stadtquartier und Jahr beziehen können. Wie gut also, dass es in der Stadt Zürich einen Open Data Katalog gibt, auf dem alle frei verfügbaren Verwaltungsdaten aufgelistet, ausführlich beschrieben und einfach durchsuchbar zum Download vorliegen ;)
HALTER_ID
) erfahren wir eine sehr wichtige Information: ein Record (eine Zeile) im Datensatz entspricht einem Hund. Wenn demnach der gleiche Hundehaltende zwei Hunde hat, so kommt seine ID im Datensatz zweimal vor. Dank der Beschreibung können wir ebenfalls sicher sein, dass die Stadtquartiere in den Daten vorkommen. Weiterführende wichtige Informationen sind auch unter Bemerkungen zu finden.Schritt 4: Suche nach einem Datensatz, der die Anzahl Kleinkinder pro Stadtquartier und Jahr beinhaltet. Da für die Definition eines Kleinkindes das Alter relevant ist, suchen wir also einen Datensatz, welcher das Alter der Bevölkerung nach Stadtquartier und Jahr beinhaltet. Gib daher im Suchfeld beispielsweise die Begriffe «Alter» und «Stadtquartier» ein. Als Suchresultat erscheinen nun aber 35 Datensätze. Wir sollte daher noch einen besseren Begriff wählen. Verwende daher die Begriffe «Altersjahr» und «Stadtquartier», dadurch sind es nur noch 8 Resultate.
Schritt 5: Für unsere Fragestellung ist der Datensatz «Bevölkerung nach Stadtquartier, Herkunft, Geschlecht und Alter, seit 1993» am geeignetsten. Er beinhaltet zwar mehr Informationen als wir benötigen (die Herkunft oder das Geschlecht interessieren uns eigentlich weniger), aber wir werden sie in einem späteren Schritt mit Excel herausfiltern.
Schritt 6: Lies nun auch wieder die Metadaten zum Datensatz und gehe gleich wie in Schritt 3 vor, um den Datensatz auf Deinen Computer herunter zu laden.
20200306_hundehalter.csv
(Hunde) und BEV390OD3903.csv
(Bevölkerungsdaten). Kopiere diese beiden Datensätze nun aus dem Downloadverzeichnis Deines Computers und lege sie in ein Verzeichnis, wo Du an den noch folgenden Schritten weiter arbeiten kannst.Damit ist unser erster Teil zum Thema «Daten finden» beendet. Solltest Du später einmal für eine andere Fragestellung auf dem Open Data Katalog der Stadt Zürich nicht fündig werden, können auch viele andere Open Data Quellen konsultiert werden. Auf nationaler Ebene werden unter opendata.swiss sämtliche offenen Verwaltungsdaten von verschiedenen Bundesstellen, anderen Kantonen und Städten angeboten.
Eines der Grundprinzipien von Open Data ist, dass die Datensätze in nicht-proprietären Formaten veröffentlicht werden sollen. Sprich, für die Verwendung der Daten sollen die AnwenderInnen nicht auf kommerzielle Software angewiesen sein. Damit soll allen die gleiche Möglichkeit gegeben werden, mit den Daten arbeiten zu können. Das Excelformat (.xls oder .xlsx) ist ein Beispiel eines proprietären Datenformats, weil es zur Verwendung Excel erfordert.
Das Standardformat für tabellarische Daten ist daher CSV. CSV steht für Comma-separated values (komma-getrennte Werte).
CSV-Beispiel:
CSV-Dateien haben meistens auf der ersten Zeile eine Spaltenüberschrift und auf den nachfolgenden Zeilen dann die kommaseparierten Werte.
"zeitpunkt","bruttolastgang","status" "2020-01-01T00:15",66546.656045,"E" "2020-01-01T00:30",66018.362440,"E" "2020-01-01T00:45",65272.630020,"E" "2020-01-01T01:00",64385.925397,"E" "2020-01-01T01:15",63578.900426,"E" "2020-01-01T01:30",63105.155989,"E" "2020-01-01T01:45",62287.860786,"E" "2020-01-01T02:00",61283.998490,"E"
Werte zwischen Anführungszeichen sind entweder Texte oder Datumswerte. Wo keine Anführungszeichen stehen, handelt es sich um numerische Werte. Die Kodierung für Unicode-Zeichen ist dabei standardmässig UTF-8. Der angezeigte CSV-Auszug oben repräsentiert die folgende Tabelle:
Vielleicht fragst Du Dich unterdessen, wozu der ganze Exkurs über CSV dienlich sein soll…(?) Leider ist es so, dass viele Datennutzende bereits zu diesem Zeitpunkt scheitern, wenn sie noch nie mit CSV gearbeitet haben und eine CSV-Datei in Excel öffnen wollen. Daher zeigen wir Euch in diesem Abschnitt, wie man vorgehen sollte, wenn man mit CSV-Datensätzen in Excel arbeiten möchte.
Wie es NICHT funktioniert: Ein Doppelklicken auf eine CSV-Datei - wie in unten gezeigter Animation gezeigt - funktioniert leider in den meisten Fällen nicht. Obwohl man gemäss des im Beispiel angezeigten Icons der Datei das Gefühl hätte, dass dies so möglich sein sollte. Folgendes geschieht jedoch stattdessen:
Die CSV-Datei wird zwar in Excel geöffnet, es findet dabei jedoch keine Trennung der einzelnen Attribute in Spalten statt (vgl. mit der oben gezeigten Tabelle). Mit der hier gezeigten Vorgehensweise sind alle Werte in eine Spalte (hier Spalte A) eingefügt worden. Damit lässt sich nicht bequem weiterarbeiten. [NACHTRAG: wir wurden nach dem Crashkurs drauf aufmerksam gemacht, dass das hier beschriebene Problem anstelle des gleich folgenden Lösungsbeschriebs alternativ auch mit folgenden Schritten behoben werden könnte: Wähle im Menu Daten > Text in Spalten .]
Der Clou: CSV-Datei IMPORTIERTEN
Damit ihr wie erwartet, basierend auf einem CSV-Datensatz, in Excel weiterarbeiten könnt, solltet ihr den CSV-Datensatz importieren. Dazu könnt ihr folgendermassen vorgehen:
Schritt 1: Öffne eine neue leere Exceldatei und speichere Sie in Dein Verzeichnis, wo Du bereits die beiden CSV-Datensätze abgelegt hast ( 20200306_hundehalter.csv
und BEV390OD3903.csv
). Gib dem Excelfile einen Namen, z.B. Kleinkinder_und_Hunde.xlsx
.
Schritt 2: Gehe zum Menu Daten und klicke auf Externe Daten abrufen. Wähle aus allen angezeigten Optionen Aus Text aus.
Schritt 3: Mit dem Pop-Up Textdatei importieren wirst Du aufgefordert, die Textdatei auszuwählen, die Du nun ins Excelfile importieren möchtest. Wähle zuerst 20200306_hundehalter.csv
zum Import aus und klicke auf Importieren.
Schritt 6: Überschreibe unten links den Arbeitsblattnamen von Tabelle 1 auf Hundebestand_2020. Dies erfolgt ganz einfach, indem Du auf den Text Tabelle 1 doppelklickst und ihn dann überschreibst.
BEV390OD3903.csv
wie ab Schritt 3 beschrieben in unser Excelfile Kleinkinder_und_Hunde.xlsx
. Tipp: definiere beim Import die Spalte AlterV05Kurz als Text, weil sonst einzelne Werte als Datum interpretiert und falsch dargestellt werden.Damit sind wir fertig mit dem Datenimport. Unser Excelfile Kleinkinder_und_Hunde.xlsx
beinhaltet nun zwei Arbeitsblätter mit den Hunde- und Bevölkerungsbestandsdaten, welche wir im nächsten Schritt analysieren werden.
Excel ist bezüglich Datenanalyse selbstverständlich nicht allererste Sahne. Fortgeschrittenere Datennutzende verwenden in der Regel eher Statistiktools wie R (siehe dazu Ressourcen, wie Rddj oder RStudio Education) oder Python (siehe dazu Ressourcen, wie Data analysis with Python oder Information Visualization).
Excel bietet jedoch mehr und einfachere Datenanalysemöglichkeiten, als man auf den ersten Blick vielleicht annehmen würde. Für diesen Kurs möchten wir Euch das einfache Excel-Tool PivotCharts und PivotTable etwas näher bringen.
Wenn ihr Euch die eben importierten Daten anschaut, dann seht ihr, dass wir sie - um daraus Erkenntnisse zu gewinnen - im wesentlichen filtern und entsprechend summieren können müssen. PivotTable bietet diese Funktionalitäten sehr einfach, interaktiv und effizient an. PivotCharts ist eine Ergänzung von PivotTables und erlaubt ebenfalls ein einfaches interaktives visualisieren der Daten. Damit können auf einfache Weise Muster erkannt und Vergleiche angestellt werden.
Beginnen wir zuerst einmal damit herauszufinden, wie viele Kleinkinder es pro Stadtquartier am 31.12.2019 gab.
Schritt 1: Gehe zum Menu Einfügen, klicke aufs PivotChart-Icon und wähle PivotChart und PivotTable.
Schritt 2: Mit dem Pop-Up PivotTable erstellen wirst Du aufgefordert, den Tabellenbereich der analysiert werden soll auszuwählen. Sofern Du alle Daten des aktiven Arbeitsblattes betrachten möchtest, musst Du hier nichts anpassen. Als weitere Option kannst Du auswählen, ob die PivotTable in ein bestimmtes oder in ein neues Arbeitsblatt eingefügt werden soll. Klicke danach auf OK.
AnzBestWir
) .QuartLang
). Die Stadtquartiere können mit ihren Namen oder mit ihren offiziellen IDs (QuartSort
oder QuartCd
) angezeigt werden.StichtagDatJahr
), also 2019, auswählen. Ausserdem betrachten wir ja lediglich die Kleinkinder. Wir definieren sie hier als jene Personen in der Alterskategorie (AlterV05Kurz
) 0-4. Also der Kinder die jünger als 5 Jahre alt sind. Man könnte die Definition selbstverständlich auch anders festlegen.BevBest_Pivot
.Als nächstes gehen wir analog der vorherigen Schritte vor und analysieren nun, wie viele Hunde es pro Stadtquartier Anfangs März 2020 gab.
Schritt 2: Mit dem Pop-Up PivotTable erstellen wirst Du wieder aufgefordert, den Tabellenbereich der analysiert werden soll auszuwählen. Dieses Mal sollte sich die Tabelle auf die pivotiert wird selbstverständlich auf den Hundebestand 2020 beziehen. Klicke danach auf OK.
HALTER_ID
) auswählen und in der Wertfeldeinstellung (rechte Maustaste auf Summe von HALTER_ID) von Wertfeld zusammenfassen als Summe auf Anzahl wechseln. Die mit der Option Summe würden alle HALTER_IDs summiert werden, was ja keinen Sinn macht.STADTQUARTIER
) aus.HundeBest2020_Pivot
.Damit wir die Resultate der Anzahl Hunde und Anzahl Kleinkinder pro Stadtquartier vergleichen können, kopieren wir am einfachsten die Resultate der Pivot-Tabellen in ein neues Arbeitsblatt.
Schritt 1: Füge ein neues Arbeitsblatt (mit Klick auf das Plus-Zeichen unten rechts neben den anderen Arbeitsblättern) hinzu. Gib ihm einen Namen. In unserem Beispiel Vgl_Kleinkinder_Hunde
.
Schritt 2: Kopiere die Werte der Anzahl Kleinkinder pro Stadtquartier und füge sie ins neue Arbeitsblatt ein.
Schritt 3: Mache das gleiche mit den Werten zur Anzahl Hunde pro Stadtquartier und füge sie mit etwas Abstand rechts ins neue Arbeitsblatt ein.
Schritt 4: Wir haben nun das Problem, dass bei den Kleinkindern die Namen und bei den Hunden die IDs der Stadtquartiere angegeben sind. So lassen sich die Werte nicht vergleichen. Daher braucht es hier noch einen Zwischenschritt, in dem wir eine Zuordungstabelle von Stadtquartier-IDs zu den -Namen machen.
a) Im Arbeitsblatt Bevölkerungsbestand
kommen sowohl die Quartiernummer als auch der Quartiernamen vor. Erstelle daher in diesem Arbeitsblatt eine neue PivotTable.
b) Wähle das Feld QuarSort
und ziehe es ins Feld WERTE.
c) Wähle das Feld QuarLang
und ziehe es ins Feld ACHSE.
d) Wir wollen nicht die Summe der Quartiernummern, sondern die minimalen Werte wissen. Wähle daher mit rechte Maustaste auf Summe von QuarSort und wechsle über die Wertfeldeinstellungen von Wertfeld zusammenfassen als Summe auf Minimum.
e) Damit ist die Zuordnungstabelle erstellt. Jede Stadtquartier-ID hat nun einen entsprechenden Stadtquartiernamen.
Schritt 5: Kopiere die Zuordnungstabelle ins Arbeitsblatt Vgl_Kleinkinder_Hunde
.
Schritt 6: Sortiere nun (Menu Daten > Sortieren) wie in der Grafik angezeigt zuerst die Werte der Anzahl Kleinkinder nach der Quartiernummer nach Grösse aufsteigend. Vergleiche ob die Quartiernummern mit jenen der Anzahl Hunde, ebenfalls nach Grösse aufsteigend sortiert, entspricht. Lösche danach die doppelt vorhandenen Spalten und reihe die Attibute nach Deinem Gusto aneinander.
Schritt 7: Berechne in in einer neuen Spalte - im Beispiel namens Diff_Kkinder-Hunde - die Differenz zwischen der Anzahl Kleinkinder und der Anzahl Hunden. Berechne den Wert in der obersten Spalte mit der Formel ‘=D2 - C2’ und ziehe den Punkt unten rechts im grünen Rechteck für alle Quartiere herunter. Die Formel wird so überall korrekt übernommen.
Schritt 8: Sortiere die Differenzen (Spalte E) aufsteigend. Das Resultat ist nun als Tabelle ersichtlich.
Schritt 9: Stelle das Resultat mit PivotChart als Balkendiagramm dar:
Schritt 10: Ändere den Diagrammtyp auf Balkendiagramm. Klicke mit der rechten Maustaste auf den PivotChart > wähle Diagrammtyp ändern > wähle Balken > dann Gruppierte Balken aus. Layoute das Balkendiagramm (Titel, Höhe, Breite, Farbfüllung, etc.)
Schritt 10: Falls Dir die Grafik noch zu umfangreich ist, kannst Du auch einzelne Bereiche herausfiltern. Gehe dazu wieder wie in Schritt 9b) vor und wähle dieses Mal Wertefilter aus. In der Animation werden z.B. nur jene Stadtquartiere angezeigt, wo die Differenz zwischen Kleinkindern und Hunden kleiner als 50 ist. Alle anderen Werte werden nicht angezeigt.
Nun haben wir also Gewissheit: Ende 2019 lebten nur im Stadtquartier Lindenhof (Bevölkerungszahl 2019: 1’009) im Kreis 1 mehr Hunde (27) als Kleinkinder (22). Bei allen Stadtquartieren im Kreis 1 war die Differenz zwischen Kleinkindern und Hunden relativ klein. Am grössten ist die Differenz hingegen in den bevölkerungsreichsten Stadtquartieren Altstetten (mit +1’133) und Affoltern (+1’115).
Für dieses Kurs verwenden wir das kostenlose Tool Datawrapper, welches ohne Login ausprobiert werden kann. Es wird bereits von vielen Datenjournalisten eingesetzt, da es sehr benutzerfreundlich ist und sich damit ohne eigenen Code zu schreiben Visualisierungen fürs Web erstellen lassen.
Datawrapper steht hier stellvertretend für viele andere Tools, die einen ähnlichen Funktionsumfang bieten:
Wie wir in Teil 2 gesehen haben, müssen Daten zuerst in eine Form gebracht werden, in der sie visualisiert werden können. In diesem Schritt arbeiten wir also wieder mit der Excel-Datei aus dem letzten Teil. Es steht auch eine Beispiel-Exceldatei zur Verfügung (inkl. den verlinkten CSVs).
Als nächstes möchten wir eine interaktive Grafik erstellen basierend auf dem Hundebestand. Dazu müssen wir eine neue Pivot-Tabelle erstellen, mit der wir die Werte für die Grafik aggregieren können:
Hundebestand_2020
und gehe zum Menu Einfügen, klicke auf PivotTable.HALTER_ID
) auswählen und in der Wertfeldeinstellung (rechte Maustaste auf Summe von HALTER_ID) von Wertfeld zusammenfassen als Summe auf Anzahl wechseln.STADTQUARTIER
)GESCHLECHT_HUND
)Um die Daten von Excel zu Datawrapper zu importieren, kann der Wizard von Datawrapper verwendet werden.
Im letzten Schritt geht es jetzt noch darum, das Diagramm zu definieren. Die vorliegenden Daten zeigen pro Quartier die Anzahl weibliche und die Anzahl männliche Hunde. Es liegt daher nahe ein gestapeltes Säulendiagramm zu erstellen, da ein Balken pro Quartier für alle Hunde steht und dieser nach Geschlecht aufgeteilt ist.
Voilà, hier das Resultat (ein Klick auf das Bild öffnet die interaktive Grafik):
Als Abschluss möchten wir das Verhältnis zwischen Kleinkindern und Hunden auf einer Karte der Stadt Zürich darstellen. Dazu werden wir eine sogenannte Choroplethenkarte (Flächenkartogramm) erstellen. Auf solchen thematischen Karten wird das Verhältnis einer Grösse zum Gebiet dargestellt (z.B. Bevölkerungsdichte).
Aus diesem Grund fügen wir im Excel auf dem bestehenden Arbeitsblatt Vgl_Kleinkinder_Hunde
eine weitere Spalte hinzu.
Vgl_Kleinkinder_Hunde
.Neben den Diagrammen, können mit Datawrapper auch einfache Karten erstellt werden.
Vgl_Kleinkinder_Hunde
, die du dann anschliessend in Datawrapper einfügen kannstQuartiernummer
als Code-Spalte und die Spalte KleinkinderHundeKoeffizient
als Wert-SpalteAnschliessend können noch Anpassungen an der Karte vorgenommen werden wie z.B. das verändern der Farbskala oder das einzigen der Quartiernamen anstatt der Codes.
Voilà, hier das Resultat (ein Klick auf das Bild öffnet die interaktive Karte):
Die Excel-Datei, auf der dieser Kurs basiert, kann von GitHub heruntergeladen werden: ZIP-Datei mit den verlinkten CSVs.
Beim Öffnen wird Excel eine Warnung anzeigen, dass die Datei repariert werden muss. Dies liegt daran, dass der Pfad zu den CSV-Dateien nicht gefunden wird. Der Fehler kann ignoriert werden für diesen Kurs.
Datawrapper hat eine Reihe von Tutorials und Schulungsunterlagen, die die einzelnen Diagramm- und Karten-Typen erklären und wie damit Visualisierungen erstellt werden können.
Beispiele: