Vorwort

Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com

Das Hauptziel dieses Buches ist es, eine Werkzeugkette für die Datenvisualisierung (Dataviz) zu beschreiben, die sich im Zeitalter des Internets immer mehr durchsetzt. Der Leitgedanke dieser Toolchain ist, dass die aufschlussreichen Nuggets, die du aus deinen Daten herausgeholt hast, ein Zuhause im Webbrowser verdienen. Im Internet hast du die Wahl, ob du deine Daten an einige wenige Personen (durch Authentifizierung oder Beschränkung auf ein lokales Netzwerk) oder an die ganze Welt weitergeben willst. Das ist die große Idee des Internets und eine, die Dataviz in rasantem Tempo aufgreift. Und das bedeutet, dass die Zukunft von Dataviz JavaScript beinhaltet, die einzige erstklassige Sprache des Webbrowsers. Aber JavaScript verfügt noch nicht über den Datenverarbeitungs-Stack, den man braucht, um Rohdaten zu verfeinern, was bedeutet, dass Datenvisualisierung zwangsläufig eine mehrsprachige Angelegenheit ist. Ich hoffe, dass dieses Buch meine Überzeugung untermauert, dass Python die natürliche Ergänzung zum Monopol von JavaScript bei Browser-Visualisierungen ist.

Obwohl dieses Buch sehr umfangreich ist (diese Tatsache spürt der Autor im Moment am stärksten), musste er sehr selektiv vorgehen und viele wirklich coole Python- und JavaScript-Data-Science-Tools auslassen und sich auf die konzentrieren, die die besten Bausteine liefern. Die Anzahl der hilfreichen Bibliotheken, die ich nicht abdecken konnte, spiegelt die enorme Vitalität der Python- und JavaScript-Data-Science-Ökosysteme wider. Schon während der Arbeit an diesem Buch wurden brillante neue Python- und JavaScript-Bibliotheken eingeführt, und das Tempo hält an.

Jede Datenvisualisierung ist im Grunde genommen eine Transformation, und die Darstellung des Weges von einer Darstellung eines Datensatzes (HTML-Tabellen und -Listen) zu einer moderneren, ansprechenderen, interaktiven und grundsätzlich browserbasierten Darstellung ist eine gute Möglichkeit, wichtige Datenvisualisierungswerkzeuge in einem Arbeitskontext vorzustellen. Die Herausforderung besteht darin, eine einfache Wikipedia-Liste der Nobelpreisträger in eine moderne, interaktive, browserbasierte Visualisierung zu verwandeln. So wird derselbe Datensatz in einer leichter zugänglichen, ansprechenden Form präsentiert.

Der Weg von unbearbeiteten Daten zu einer umfangreichen, nutzergesteuerten Visualisierung gibt Aufschluss über die Wahl der besten Tools. Zuerst müssen wir unseren Datensatz bekommen. Oft wird uns dieser von einem Kollegen oder Kunden zur Verfügung gestellt, aber um die Herausforderung zu erhöhen und nebenbei ein paar wichtige Datenvisualisierungsfähigkeiten zu erlernen, lernen wir, wie wir den Datensatz mit der leistungsstarken Python-Bibliothek Scrapy aus dem Internet (z. B. die Wikipedia-Seiten zum Nobelpreis) scrapen können. Dieser unbearbeitete Datensatz muss dann verfeinert und erforscht werden, und dafür gibt es kein besseres Ökosystem als Pythons Pandas. Zusammen mit Matplotlib und einem Jupyter-Notebook entwickelt sich Pandas zum Standard für diese Art der forensischen Datenarbeit. Mit sauberen Daten, die (mit SQLAlchemy und SQLLite) in SQL gespeichert und untersucht werden, können die herausgepickten Daten visualisiert werden. Ich beschreibe die Verwendung von Matplotlib und Plotly, um statische und dynamische Diagramme aus Python in eine Webseite einzubetten. Die beste Datenvisualisierungsbibliothek für das Web ist jedoch das JavaScript-basierte D3. Wir lernen die Grundlagen von D3 kennen und nutzen sie, um unser Vorzeigeprodukt, die Nobel-Datenvisualisierung, zu erstellen.

Dieses Buch ist eine Sammlung von Werkzeugen, die eine Kette bilden, wobei die Erstellung der Nobel-Visualisierung den roten Faden bildet. Die verschiedenen Teile des Buches sind in sich abgeschlossen, sodass du das Gelernte bei Bedarf schnell nachschlagen kannst.

Dieses Buch ist in fünf Teile gegliedert. Der erste Teil führt in ein grundlegendes Python- und JavaScript-Dataviz-Toolkit ein, während die nächsten vier Teile zeigen, wie man Rohdaten abruft, sie bereinigt, untersucht und schließlich in eine moderne Webvisualisierung umwandelt. Fassen wir die wichtigsten Lektionen der einzelnen Teile zusammen.

Teil I: Basis-Toolkit

Unser Basis-Toolkit besteht aus:

  • Eine Brücke zwischen Python und JavaScript zum Erlernen der Sprache. Sie soll den Übergang zwischen den beiden Sprachen erleichtern, indem sie ihre vielen Gemeinsamkeiten hervorhebt und den Grundstein für den zweisprachigen Prozess des modernen Dataviz legt. Mit dem Aufkommen des neuesten JavaScript,1 haben Python und JavaScript noch mehr Gemeinsamkeiten, was den Wechsel zwischen den beiden Sprachen viel weniger anstrengend macht.

  • Eine der großen Stärken von Python ist, dass es die wichtigsten Datenformate (z. B. JSON und CSV) und Datenbanken (sowohl SQL als auch NoSQL) problemlos lesen und beschreiben kann. Wir sehen, wie einfach es ist, Daten in Python weiterzugeben und dabei Formate zu übersetzen und Datenbanken zu wechseln. Diese fließende Bewegung von Daten ist das wichtigste Schmiermittel in jeder Dataviz-Toolchain.

  • Wir behandeln die grundlegenden Webentwicklungsfähigkeiten (Webdev), die für die Erstellung moderner, interaktiver, browserbasierter Datenvisualisierungen erforderlich sind. Da wir uns auf das Konzept der Single-Page-Anwendung konzentrieren, anstatt ganze Websites zu erstellen, minimieren wir das konventionelle Webdev und legen den Schwerpunkt auf die Programmierung deiner visuellen Kreationen in JavaScript. Eine Einführung in Scalable Vector Graphics (SVG), den wichtigsten Baustein von D3-Visualisierungen, bildet die Grundlage für die Erstellung unserer Nobelpreisvisualisierung in Teil V.

Teil II: Deine Daten erhalten

In diesem Teil des Buches schauen wir uns an, wie man mit Python Daten aus dem Web abruft, vorausgesetzt, dem Datenvisualisierer wurde keine schöne, saubere Datendatei zur Verfügung gestellt:

  • Wenn du Glück hast, findest du eine saubere Datei in einem leicht verwendbaren Datenformat (z. B. JSON oder CSV) unter einer offenen URL, die nur eine einfache HTTP-Anfrage entfernt ist. Vielleicht gibt es aber auch eine spezielle Web-API für deinen Datensatz, mit etwas Glück eine RESTful-API. Als Beispiel sehen wir uns die Twitter-API an (über die Python-Bibliothek Tweepy). Außerdem sehen wir uns an, wie man Google Spreadsheets, eine weit verbreitete Ressource für die gemeinsame Nutzung von Daten, in dataviz verwendet.

  • Schwieriger wird es, wenn die Daten, die dich interessieren, in menschenlesbarer Form im Web vorhanden sind, oft in HTML-Tabellen, Listen oder hierarchischen Inhaltsblöcken. In diesem Fall musst du auf Scraping zurückgreifen, d. h. du holst dir den rohen HTML-Inhalt und benutzt dann einen Parser, um den eingebetteten Inhalt verfügbar zu machen. Wir sehen uns an, wie man die leichtgewichtige Scraping-Bibliothek Beautiful Soup und das viel funktionsreichere und schwergewichtige Scrapy, den größten Star am Python-Scraping-Firmament, verwendet.

Teil III: Daten bereinigen und erforschen mit Pandas

In diesem Teil wenden wir die großen Geschütze von pandas, Pythons leistungsstarker programmatischer Tabellenkalkulation, auf das Problem der Bereinigung und anschließenden Untersuchung von Datensätzen an. Zunächst sehen wir, wie Pandas Teil des NumPy-Ökosystems von Python ist, das die Leistung von sehr schnellen, leistungsstarken Low-Level-Bibliotheken für die Array-Verarbeitung nutzt und sie gleichzeitig zugänglich macht. Der Schwerpunkt liegt auf der Verwendung von Pandas, um unseren Nobelpreis-Datensatz zu bereinigen und dann zu untersuchen:

  • Die meisten Daten, selbst die von offiziellen Web-APIs, sind schmutzig. Und sie sauber und brauchbar zu machen, wird dich als Datenvisualisierer weit mehr Zeit kosten, als du wahrscheinlich erwartet hast. Am Beispiel des Nobel-Datensatzes werden wir ihn nach und nach bereinigen, indem wir nach fragwürdigen Daten, anomalen Datentypen, fehlenden Feldern und all den üblichen Verschmutzungen suchen, die bereinigt werden müssen, bevor du damit beginnen kannst, deine Daten zu erforschen und in eine Visualisierung zu verwandeln.

  • Mit unserem sauberen Nobelpreis-Datensatz in der Hand sehen wir, wie einfach es ist, Pandas und Matplotlib zu verwenden, um Daten interaktiv zu erforschen, Inline-Diagramme zu erstellen, die Daten in alle möglichen Richtungen zu zerlegen und generell ein Gefühl für die Daten zu bekommen, während du nach den interessanten Nuggets suchst, die du mit der Visualisierung liefern willst.

Teil IV: Übermittlung der Daten

In diesem Teil sehen wir, wie einfach es ist, eine minimale Daten-API mit Flask zu erstellen, um Daten sowohl statisch als auch dynamisch an den Webbrowser zu liefern:

Zuerst sehen wir, wie du Flask für statische Dateien verwendest und dann, wie du deine eigene grundlegende Daten-API erstellst, die Daten aus einer lokalen Datenbank liefert. Der Minimalismus von Flask ermöglicht es dir, eine sehr dünne Datenverarbeitungsschicht zwischen den Ergebnissen deiner Python-Datenverarbeitung und ihrer eventuellen Visualisierung im Browser zu schaffen.

Das Schöne an Open-Source-Software ist, dass du oft robuste, einfach zu verwendende Bibliotheken findest, die dein Problem besser lösen als du selbst. Im zweiten Kapitel dieses Teils sehen wir, wie einfach es ist, mit den besten Python-Bibliotheken (Flask) eine robuste, flexible RESTful-API zu erstellen, mit der du deine Daten online bereitstellen kannst. Außerdem wird die einfache Online-Bereitstellung dieses Datenservers mit Heroku, einem beliebten Tool für Pythonistas, beschrieben.

Teil V: Visualisierung deiner Daten mit D3 und Plotly

Im ersten Kapitel dieses Teils sehen wir, wie du die Früchte deiner pandasgesteuerten Erkundung in Form von Diagrammen oder Karten ins Internet bringen kannst, wo sie hingehören. Matplotlib kann statische Diagramme im Publikationsstandard erstellen, während Plotly Benutzerkontrollen und dynamische Diagramme anbietet. Wir zeigen dir, wie du ein Plotly-Diagramm direkt aus einem Jupyter-Notizbuch in eine Webseite einbinden kannst.

Der Teil des Buches, der sich mit D3 befasst, gehört zu den anspruchsvollsten, aber es kann gut sein, dass du am Ende damit beschäftigt sein wirst, die Art von Multielement-Visualisierungen zu erstellen, die es produziert. Eine der Freuden von D3 ist die riesige Anzahl von Beispielen, die man leicht online finden kann, aber die meisten von ihnen demonstrieren eine einzelne Technik und es gibt nur wenige, die zeigen, wie man mehrere visuelle Elemente orchestriert. In diesen D3-Kapiteln sehen wir, wie man die Aktualisierung einer Zeitleiste (mit allen Nobelpreisen), einer Karte, eines Balkendiagramms und einer Liste synchronisiert, wenn der Nutzer den Nobelpreis-Datensatz filtert oder die Preisgewinnungsmetrik (absolut oder pro Kopf) ändert.

Die Beherrschung der in diesen Kapiteln vorgestellten Kernthemen sollte es dir ermöglichen, deiner Fantasie freien Lauf zu lassen und durch eigenes Tun zu lernen. Ich empfehle dir, ein paar Daten auszuwählen, die dir am Herzen liegen, und eine D3-Kreation um sie herum zu entwerfen.

Die zweite Auflage

Ich habe ein wenig gezögert, als O'Reilly mir anbot, eine zweite Auflage dieses Buches zu schreiben. Die erste Auflage war umfangreicher als erwartet, und die Aktualisierung und Erweiterung war potenziell sehr arbeitsintensiv. Nachdem ich mir den Stand der behandelten Bibliotheken und die Veränderungen im Python- und JavaScript-Ökosystem angeschaut hatte, war jedoch klar, dass die meisten der verwendeten Bibliotheken (z. B. Scrapy, NumPy, Pandas) immer noch eine solide Wahl sind und nur geringfügige Aktualisierungen benötigen.

D3 war die Bibliothek, die sich am meisten verändert hatte, aber diese Änderungen machten D3 sowohl einfacher zu benutzen als auch einfacher zu lehren. Auch die JavaScript-Module waren fest verankert, was den Code sauberer und für Pythonisten vertrauter machte.

Einige Python-Bibliotheken schienen nicht mehr die richtige Wahl zu sein und einige waren veraltet. Die erste Ausgabe befasste sich ziemlich ausführlich mit MongoDB, einer NoSQL-Datenbank. Inzwischen bin ich der Meinung, dass das gute alte SQL besser für die Arbeit mit Dataviz geeignet ist und dass das minimale dateibasierte, serverlose SQLite einen Sweet Spot für Dataviz darstellt, wenn eine Datenbank erforderlich ist.

Anstatt den veralteten RESTful-Datenserver durch eine andere Python-Bibliothek zu ersetzen, dachte ich, dass es besonders lehrreich wäre, einen einfachen Datenserver von Grund auf zu bauen, der die Verwendung einiger brillanter Python-Bibliotheken wie Marshmallow demonstriert, die in vielen Dataviz-Szenarien nützlich sind.

In der Zeit, die für die Aktualisierung des Buches zur Verfügung stand, entschied ich mich, den Datensatz des ersten Buches zu verwenden, um die Exploration und Analyse mit Matplotlib und Pandas zu demonstrieren, und konzentrierte mich darauf, alle Bibliotheken auf ihre aktuellen Versionen (Stand Mitte 2022) zu aktualisieren. Dies ermöglichte es, Zeit in neues Material zu investieren, vor allem in ein Kapitel, das der Python-Bibliothek Plotly gewidmet ist, die es dir ermöglicht, deine Forschungsarbeit von einem Jupyter-Notizbuch auf eine Webpräsentation mit Benutzerinteraktionen zu übertragen. Eine besondere Stärke dieses Ansatzes ist die Verfügbarkeit von Mapbox Maps, einem umfangreichen Mapping-Ökosystem.

Die Hauptaussage der zweiten Ausgabe war:

  • Um alle Bibliotheken auf den neuesten Stand zu bringen.

  • Um Bibliotheken, die sich nicht bewährt haben, zu entfernen und/oder zu ersetzen.

  • Um neues Material hinzuzufügen, das durch die Veränderungen in der sich schnell entwickelnden Welt von Python und JavaScript dataviz.

Die Metapher der Dataviz-Toolchain ist immer noch gültig, denke ich, und die Transformationspipeline von rohen, unverarbeiteten Webdaten über explorative, dataviz-getriebene Analysen bis hin zur ausgefeilten Webvisualisierung ist immer noch ein guter Weg, um die wichtigsten Werkzeuge für diesen Job zu lernen.

In diesem Buch verwendete Konventionen

In diesem Buch werden die folgenden typografischen Konventionen verwendet:

Kursiv

Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.

Constant width

Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.

Constant width bold

Zeigt Befehle oder anderen Text an, der vom Benutzer wortwörtlich eingetippt werden sollte.

Constant width italic

Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.

Tipp

Dieses Element steht für einen Tipp oder eine Anregung.

Hinweis

Dieses Element steht für einen allgemeinen Hinweis.

Warnung

Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.

Code-Beispiele verwenden

Zusätzliches Material (Code-Beispiele, Übungen usw.) steht unter https://github.com/Kyrand/dataviz-with-python-and-js-ed-2 zum Download bereit .

Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn in diesem Buch Beispielcode angeboten wird, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.

Wir schätzen die Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Datenvisualisierung mit Python und JavaScript, zweite Auflage, von Kyran Dale (O'Reilly). Copyright 2023 Kyran Dale Limited, 978-1-098-11187-8."

Wenn du der Meinung bist, dass die Verwendung von Code-Beispielen nicht unter die Fair-Use-Regelung oder die oben genannte Erlaubnis fällt, kannst du uns gerne unter kontaktieren

O'Reilly Online Learning

Hinweis

Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.

Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter https://oreilly.com.

Wie du uns kontaktierst

Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:

  • O'Reilly Media, Inc.
  • 1005 Gravenstein Highway Nord
  • Sebastopol, CA 95472
  • 800-998-9938 (in den Vereinigten Staaten oder Kanada)
  • 707-829-0515 (international oder lokal)
  • 707-829-0104 (Fax)

Wir haben eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter https://oreil.ly/dvpj_2e aufrufen .

Schreib eine E-Mail an , um Kommentare oder technische Fragen zu diesem Buch zu stellen.

Neuigkeiten und Informationen über unsere Bücher und Kurse findest du unter https://oreilly.com.

Finde uns auf LinkedIn: https://linkedin.com/company/oreilly-media

Folge uns auf Twitter: https://twitter.com/oreillymedia

Schau uns auf YouTube: https://www.youtube.com/oreillymedia

Danksagungen

Der erste Dank geht an Meghan Blanchette, die den Ball ins Rollen gebracht und ihn durch die ersten sehr schwierigen Kapitel gelenkt hat. Dawn Schanafelt hat dann das Ruder übernommen und den größten Teil des sehr notwendigen Lektorats erledigt. Kristen Brown leistete hervorragende Arbeit bei der Produktion des Buches, unterstützt von Gillian McGarveys beeindruckend hartnäckigem Lektorat. Die Zusammenarbeit mit solch talentierten und engagierten Fachleuten war eine Ehre und ein Privileg - und eine Lehre: Das Buch wäre viel einfacher zu schreiben gewesen, wenn ich damals gewusst hätte, was ich heute weiß. Ist das nicht immer so?

Vielen Dank an Amy Zielinski, die den Autor besser aussehen lässt, als er es verdient.

Das Buch hat von einigen sehr hilfreichen Rückmeldungen profitiert. Deshalb vielen Dank an Christophe Viau, Tom Parslow, Peter Cook, Ian Macinnes und Ian Ozsvald.

Ich möchte mich auch bei den tapferen Fehlerjägern bedanken, die während der frühen Veröffentlichung dieses Buches auf meinen Aufruf geantwortet haben. Zum Zeitpunkt des Schreibens sind dies Douglas Kelley, Pavel Suk, Brigham Hausman, Marco Hemken, Noble Kennamer, Manfredi Biasutti, Matthew Maldonado und Geert Bauwens.

Zweite Auflage

Ein besonderer Dank geht an Shira Evans, die das Buch von der Konzeption bis zur Realisierung betreut hat. Gregory Hyman hat großartige Arbeit geleistet, indem er mich über die ersten Veröffentlichungen auf dem Laufenden hielt und mir Feedback gab. Wieder einmal hatte ich das Glück, dass Kristen Brown das Buch durch die Produktion führte.

Ich möchte mich auch bei meinen Tech-Reviewern Jordan Goldmeier, Drew Winstel und Jess Males für ihre tollen Tipps bedanken.

1 Es gibt viele Versionen von JavaScript, die auf ECMAScript basieren, aber die wichtigste Version, die den Großteil der neuen Funktionen bietet, ist ECMAScript 6.

Get Datenvisualisierung mit Python und JavaScript, 2. now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.