Altair statt Matplotlib als Visualisierungstool von Daten für Machine Learning in Python

Visualisierung mit Altair

Geht es um die Visualisierung von Daten, greifen wir schnell zum Matplotlib-Modul. Das ist auch in Ordnung, aber es gibt daneben weitere Visualisierungstools für die Darstellung von Daten für Machine Learning in Python. Eines davon ist Altair und das sehen wir uns hier genauer an.

Wo kommt Altair her?

Altair als Visualisierungswerkzeug basiert auf der unter JavaScript bekannten Bibliothek Vega-Lite. Diese Bibliothek ist für ihren einfachen Umgang bekannt. Die Entwicklerinnen und Entwickler von Altair haben ihr Python-Modul auf Vega-Lite aufgesetzt. Was den Umgang mit Vega-Lite/Altair so einfach macht, ist der sinnvolle Einsatz von Standardwerten beim Erzeugen von Graphen.

Was sind die Vorteile von Altair?

Kennt man die zum Teil verschwundenen Wege, die man gehen muss, um in Matplotlib eine kleine Anpassung vorzunehmen, dann wird man den simplen Ansatz der API zu schätzen wissen.

Die Schnittstelle zu Altair ist so aufgebaut, dass lediglich drei Parameter gesetzt sein müssen: MarksChannels und Encoding. Mit Marks legen wir fest, welche Darstellung des Graphen wir möchten: Linien, Balken, etc. Eine Übersicht der möglichen Darstellungen findest du hier. Mit Channels legen wir fest, welche Werte auf die x-, respektive auf die y-Achse aufgetragen werden sollen, wobei wir auch mitgeben, auf welcher Basis eine Farbwahl stattfinden soll. Schließlich geben wir beim Encoding an, welchen Typ ein Wert hat: Handelt es dabei um ein Datum, eine Zahl, etc. Eine Übersicht der möglichen Datentypen und ihre Bezeichnungen findest du hier.

Auf Basis dieser wenigen Vorgaben stellt Altair bereits ansprechende und gleichzeitig sinnvolle Visualisierungen dar, indem beispielsweise bei der Farbwahl schon Rücksicht auf die Art der Daten genommen wird: Liegen zum Beispiel Daten einer Kategorie vor, die sich lediglich in der Quantität unterscheiden, wählt Altair eine Farbe mit Übergängen von dunkel zu hell. Sind es hingegen unterschiedliche Kategorien die verglichen werden, kommen auch verschiedene Farben zum Einsatz. Die sinnvolle Darstellung hängt also davon ab, dass du als Datenlieferant für die Visualisierung deine Daten gut kennst. Dies klingt in der Theorie zwar einfach, kann in der Praxis aber so manche diskussionswürdige Frage aufwerfen.

Was sind die Nachteile von Altair?

Ein Nachteil per se ist die genaue Kenntnis der eigenen Datenbasis selbstverständlich nicht. Man kann sich auch fragen, ob die fehlenden 3D-Chart-Möglichkeiten ein Nachteil sind, denn viele Anwenderinnen und Anwender sehen in der 3D-Darstellung von Daten lediglich überflüssigen Spielkram und keinen praktischen Nutzen.

Praxis-Beispiel mit Altair

Am besten lernt man ein Werkzeug kennen, wenn man es benutzt. Somit tauchen wir in die Praxis mit Altair ein.

Wir haben eine CSV-Datei namens COVID-19_cases_germany_may.csv von data.europa.eu und lesen diese mit dem pandas-Modul ein, anschließend lassen wir uns die Daten grafisch mit Altair ausgeben. Damit die Ausgabe unabhängig von einer webbasierten Umgebung funktioniert, benötigen wir noch zusätzlich den altair_viewer.

So sieht unsere CSV-Datei aus.

Wir öffnen das Terminal unserer Wahl und erstellen uns einen Ordner und navigieren dorthin:

mkdir altair_beispiel

cd altair_beispiel

Wahlweise können wir nun eine virtuelle Umgebung einrichten:

python3 -m venv altair_venv

Und die virtuelle Umgebung aktivieren:

source altair_venv/bin/activate

Mehr über die Einrichtung und den Umgang mit der virtuellen Einrichtung kannst du im Post „machine-learning-blog.de/2019/09/13/virtuelle-umgebung-venv-fur-die-entwicklung-mit-python-einrichten-und-sichern“ lesen.

Im Terminal laden wir die benötigten Module mithilfe von pip; pandas für den Umgang mit den Daten, altair für die Aufbereitung des Charts und altairviewer für die Darstellung des Diagramms.

pip install pandas

pip install altair

pip install altair_viewer

Nun kümmern wir uns um die Erstellung unseres Diagramms. Dafür legen wir die zu verarbeitenden Daten in unseren Arbeitsordner ab. Hier für ziehen wir unser COVID-19_cases_germany_may.csv in den Ordner.

Schließlich öffnen wir den Editor unserer Wahl – bei mir ist es VS Code – und schreiben unser Programm.

Das Programm

import pandas as pd

import altair as alt

# CSV-Daten einlesen, klarstellen,

# dass das Semikolon der Trenner ist.

# Der Pfad unterscheidet sich von Benutzer zu Benutzer.

df = pd.read_csv("/Users/uem/Desktop/altair_beispiel/COVID-19_cases_germany_may.csv", sep=';')

# Wir machen uns das zu Beginn einfach und nehmen nur zwei der vorhandenen elf Spalten:

# Das Datum und die Anzahl der Fälle.

df_date_cases = df[['dateRep', 'cases']]

# Wir benennen die Spalten um.

df_date_cases.columns = ['Datum', 'Fälle']

# Nun erstellen wir den Chart, als Besonderheit fügen wir an,

# dass dieser 800 px breit und 450 px hoch sein soll.

the_chart = alt.Chart(df_date_cases).mark_bar().encode(

x='Datum',

y='Fälle'

).properties(

width=800,

height=450

)

# Schließlich lassen wir uns den Chart anzeigen.

the_chart.show()

Unser Chart – dargestellt im Browser.

Die Kommentare erklären die einzelnen Zeilen. Lassen wir das Programm nun laufen, so öffnet sich in unserem bevorzugten Browser ein neues Fenster oder Tab und zeigt uns den Chart. Hierfür startet Altair einen eigenen kleinen Server, der mit dem Schließen des Browserfensters auch wieder beendet wird.

Fazit

Es ist dank Altair also möglich, nur mit minimalen Einstellungen schnell eine Visualisierung zu erhalten. Dieses kurze Beispiel hat gezeigt, dass dafür keine außergewöhnlichen Programmierkenntnisse notwendig sind. Viel Spaß beim Experimentieren.