Datenvisualisierung in Python [Tutorial]

Python ist eine der wichtigsten Programmiersprachen in der Data Science Szene. Der Einstieg in diese Programmiersprache fällt zum Beispiel im Vergleich zur Programmiersprache R etwas einfacher, da Python eine leicht zu verstehende Syntax hat. Was jedoch beim Einstieg zur größeren Hürde werden kann, ist der Umgang mit den unüberschaubar vielen Bibliotheken. Die wichtigsten Bibliotheken für Data Science / Data Analytics stellte ich bereits in diesem Artikel kurz vor. Hier ist es wichtig, einfach erstmal anzufangen – Warum nicht mit den ersten Datenvisualisierungen?

Natürlich gibt es sehr viele tolle und schön anzusehende Visualisierungen, die teilweise sehr speziell sind. In einem anderen Artikel stellte ich beispielsweise die 3D-Visualisierung von Graphen mit Python und UbiGraph vor. Dieser Artikel hier gilt aber vor allem Einsteigern, die erste Diagramme hergezaubert bekommen möchten.

Damit wir beginnen können, müssen im Python-Skript zuerst zwei wichtige Bibliotheken eingebunden werden:

import matplotlib.pyplot as pyplot

import pandas as pandas

Beide Bibliotheken können direkt gedownloaded werden, sind aber auch im Anaconda Framework enthalten (Empfehlung: Anaconda für Python 2.7).

Die Bibliothek matplotlib (library) ist mit Sicherheit die gängigste zur Visualisierung von Daten. Die Bibliothek pandas ist eine der verbreitetsten, die für den Zugriff, die Manipulation und Analyse von Daten eingesetzt wird. In diesen einfachsten Beispielen benutzen wir pandas nur zum Zugriff auf Daten.

Für die Visualisierung benötigen wir natürlich auch ein Beispiel-Dataset (Tabelle). Eine solche kann sich jeder selber erstellen, wer die nachfolgenden Code-Beispiele aber nachstellen möchte, kann diese Daten verwenden:

ID|Standort|Funktion|Mitarbeiter|Umsatz|Kosten 
1|Muenchen|Verwaltung + Vertrieb|45|3500000|2300000 
2|Stuttgart|Nur Vertrieb|23|2800000|800000 
3|Hannover|Verwaltung + Vertrieb|45|1800000|1000000 
4|Leipzig|Nur Vertrieb|12|1000000|320000 
5|Dresden|Produktio + Vertrieb|65|450000|700000 
6|Frankfurt am Main|Nur Vertrieb|12|240000|20000 
7|Duesseldorf|Nur Vertrieb|43|45000|53000 
8|Kassel|Nur Vertrieb|23|250000|90000 
9|Hamburg|Verwaltung + Vertrieb|89|2800000|690000 
10|Koeln|Nur Vertrieb|21|110000|12000 
11|Potsdam|Nur Vertrieb|12|20000|67000 
12|Nuernberg|Nur Vertrieb|15|60000|30000 
13|Ingolstadt|Nur Vertrieb|8|80000|10000 
14|Wolfsburg|Nur Vertrieb|8|90000|23000 
15|Braunschweig|Nur Vertrieb|32|900000|750000 
16|Augsburg|Verwaltung + Vertrieb|45|700000|370000 
17|Chemnitz|Nur Vertrieb|4|95000|78000 
18|Bochum|Nur Vertrieb|9|32000|67000 
19|Dortmund|Produktio + Vertrieb|56|2100000|450000
20|Essen|Nur Vertrieb|10|190000|140000

Diese 20 Zeilen können einfach via Copy + Paste in eine Datei kopiert werden, die dann als data-science-blog-python-beispiel.txt abgespeichert werden kann.

Der Zugriff von Python aus erfolgt dann mit pandas wie folgt:

dataset = pandas.read_csv(“data-science-blog-python-beispiel.txt”, sep=”|”, header=0, encoding=”utf8″)

Kreisdiagramm

Ein Kreisdiagramm (Pie Chart) lässt sich basierend auf diesen Daten beispielsweise wie folgt erstellen:

kreisdiagramm

# Pie Chart
var= dataset.groupby(['Funktion']).sum().stack()
temp = var.unstack()
type(temp)
x_list = temp['Mitarbeiter']
label_list = temp.index
pyplot.axis("equal") # Kreisdiagramm rund gestaltet (sonst Standard: oval!)
pyplot.pie(x_list, labels=label_list, autopct="%1.1f%%")
pyplot.title('Aufteilung alle Mitarbeiter auf die Standorte nach Funktion')
pyplot.show()

Balkendiagramm

Balkendiagramme können einfachste Größenverhältnisse aufzeigen.

balkendiagram

var = dataset.groupby('Funktion').Umsatz.sum()
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.set_xlabel('Funktion')
ax.set_ylabel('Umsatz in Summe')
ax.set_title('Umsatzvolumen nach Funktion der Filialen')
var.plot(kind='bar')
pyplot.show()

Gestapeltes Balkendiagramm

Mit nur wenig Erweiterung wird aus dem einfachen Balkendiagramm ein gestapeltes.

balkendiagram-gestapelt

var = dataset.groupby(['Funktion', 'Standort']).Umsatz.sum()
var.unstack().plot(kind='bar', stacked=True, grid=True)
pyplot.legend(bbox_to_anchor=(1.09, 1), loc=0, borderaxespad=0.5)
pyplot.show()

Histogramm (Histogram)

Histogramme sind ein wichtiges Diagramm der Statistik, mit dem sich Verteilungen aufzuzeigen lassen.

histogramm

# Histogramm
fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.hist(dataset['Mitarbeiter'], bins=5, color='#9400D3')
pyplot.title('Mitarbeiter Verteilung')
pyplot.xlabel('Verteilung')
pyplot.ylabel('Anzahl Mitarbeiter')
pyplot.show()

Lininediagramm

Der Beispieldatensatz gibt kein gutes Szenario her, um ein korrektes Liniendiagramm darstellen zu können; aber dennoch hier ein How-To für ein Liniendiagramm:

line-diagam

#Line Chart
var = dataset.groupby('Standort').Umsatz.sum()
fig = pyplot.figure()
ax1 = fig.add_subplot(1,1,1)
ax1.set_xlabel('Umsatz')
ax1.set_ylabel('Standort')
var.plot(kind='line')
pyplot.show()

Kastengrafik (Box Plot)

Ein Box Plot zeigt sehr gut Schwerpunkte in einer Verteilung.

box-plot-diagam

fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.boxplot(dataset['Mitarbeiter'])
pyplot.show()

Punktverteilungsdiagramm (Scatter Plot)

punktdiagramm

fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(dataset["Mitarbeiter"], dataset["Umsatz"])
ax.set_xlabel('Anzahl Mitarbeiter')
ax.set_ylabel('Umsatz')
pyplot.show()

Blasendiagramm (Bubble Chart)

Das Punktdiagramm kann leicht durch hinzufügen einer dritten Dimension zu einem Bubble-Chart erweitert werden. In dieser Darstellung mit logarithmischen x-/y-Achsen (log).

bubblechart

fig = pyplot.figure()
ax = fig.add_subplot(1,1,1)
ax.scatter(dataset['Kosten'], dataset['Umsatz'], s=dataset['Mitarbeiter'])
ax.set_xlabel('Umsatz')
ax.set_ylabel('Kosten')
pyplot.xscale('log')
pyplot.yscale('log')
pyplot.show()

 

Benjamin Aunkofer ist Lead Data Scientist bei DATANOMIQ und Hochschul-Dozent für Data Science und Data Strategy. Darüber hinaus arbeitet er als Interim Head of Business Intelligence und gibt Seminare/Workshops zu den Themen BI, Data Science und Machine Learning für Unternehmen.

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *

851 Views