Auswertung von CSV- und Log-Dateien auf der Command Line mit awk

Die Programmiersprache awk ist klein und unscheinbar, unter Data Science at the Command Line-Verfechtern allerdings ein häufiges Tool zur schnellen Analyse von CSV-Datein und vergleichbar strukturierten Daten (z. B. Logfiles) mit über Trennzeichen differenzierten Spalten. Auch in Shell-Skripten kommt awk meistens dann zum Einsatz, wenn es um den Zugriff, aber auch um die Manipulation von solchen Dateien geht.

Data Science at the Command Line: Facing the Future with Time-Tested Tools

awk wird als Skriptsprache mit nahezu jeder Linux-Distribution ausgeliefert und ist recht einfach eingehalten, kann jedoch auch schnell kryptisch werden. awk wird meistens ad-hoc auf der Kommandozeile ausgeführt, es können jedoch auch Skripte in awk-Dateien erstellt werden. Häufiger Grund für den Einsatz von awk ist die Anwendung von regulären Ausdrücken (Textmustersuche) auf Logdateien.

Nachfolgend ein kleines Tutorial für den Schnelleinstieg in diese interessante Analysetool auf Kommandozeile. Die CSV-Datei einfach hier downloaden: (einen Überblick über den Inhalt bietet auch eine Einführung in Python, die ebenfalls auf dieser CSV-Datei basiert)

CSV-Datei gedownloaded? Dann kann es losgehen im Terminal jeder beliebiger Linux-Distribution:

Anweisungen, so auch die obige, beginnen stets mit “awk”. Da diese CSV-Datei nicht mit dem Standardchar (Komma), sondern einem vertikalen Strich (Pipe) getrennt ist, muss dies via “-F’|'” angegeben werden. Wäre das Trennzeichen ein Semikolon, wäre der Parameter “-F’;'” korrekt. Der Befehl gibt jede Zeile des CSV in der Kommandozeile aus, so dass wie nachfolgend den gesamten Dateiinhalt sehen:

Viele CSV- und Logdateien haben keinen Header, diese hier hat jedoch die erste Zeile als Header, die daher bei der Analyse nicht als Werte-Zeile fehlinterpretiert werden darf, daher wird nachfolgend von nun an die Anweisung “NR>1” mitgegeben:

Spalten werden in awk über das Dollarzeichen angesprochen, folgende Anweisung zeigt uns alle Zeilen der zweiten Spalte:

Diese Skriptsprache beherrscht assoziative Arrays. Es können demnach auch nicht-numerische Schlüssel für den Zugriff auf Datenfelder verwendet werden. Dies machen wir uns für das Anzeigen aller Standorte mit Angabe der jeweiligen Mitarbeiterzahl an dem Standort zu nutze. Die Variable a speichert alle Mitarbeiterzahlen in Spalte 4 über den Schlüssel des Standortnamens in Spalte 2, dann endet der Anweisungsblock und es folgt eine For-Schleife, die alle Schlüsselwerte ausgibt und den dazugehörigen Speicherwert (Mitarbeiterzahl) ausgibt.

Auch If-Anweisungen sind einfach machbar. Folgendes Beispiel unterscheidet die Zeilennummern (Spalte1) nach geraden und ungeraden Zahlen und gibt den dazugehörigen Standortnamen (Spalte 2) aus.

Folgendes Beispiel klassifiziert alle Standorte mit weniger als 10 Mitarbeitern, allerdings nicht über “if…else…”, sondern über die Kurzabfrage nach dem Schema a>b?”True”:”False”.

Folgendes Code-Beispiel zeigt die Zählung der Vorkommnisse (Entsprechung: GROUP BY Spalte3, Count(*)).

Etwas umformuliert, können wir auch die Werte pro Gruppe aufsummieren, nachfolgend beispielhaft der Gewinn (Einnahmen aus Spalte 5 – Kosten aus Spalte 6) und die Mitarbeiterzahl über die jeweilige Gruppe.

Das Zusammenführen von Zeichenketten erfolgt simpel durch Aneinandereihung:

Ein letztes Beispiel möchte keine einzelnen Zeilen des Datensatzes auflisten und auch keine Gruppierung unterscheiden, sondern die Zusammenfassung über die Angabe der gesamten Mitarbeiteranzahl und der Gewinn-Summe über alle Standorte angeben.

Fazit

Als Programmiersprache ist awk sicherlich nur ein nice-to-have, aber wenn man das Prinzip dieser Sprache erstmal verstanden hat, kann sie ein interessantes Tool darstellen, um schon auf Kommandozeilenebene sich schnell einen Überblick über Datenbestände zu beschaffen und auch um Datenqualitätstests durchzuführen.

 

KNN: Was sind künstliche neuronale Netze?

Ein künstliches neuronales Netzwerk (KNN) besteht aus vielen miteinander verbundenen künstlichen Neuronen. Die einzelnen Neuronen haben unterschiedliche Aufgaben und sind innerhalb von Schichten (layer) angeordnet. Sogenannte Netzwerk Topologien geben vor, wie viele Neuronen sich auf einer Schicht befinden und welche Neuronen miteinander vernetzt sind. Neuronale Netze werden im Bereich der künstlichen Intelligenz eingesetzt und sind ein Ansatz im Machine Learning, haben hier jedoch besondere Vor- und Nachteile.

Es gibt drei Schicht- und vier grundlegende Neuronen-Arten. Bei den Schichten wird unterschieden zwischen Eingabe-, Ausgabe- und verborgener Schicht (Visible, Output & Hidden Layer). Alle eingehenden Daten werden an den Eingabe-Neuronen (Visible Unit) in der Eingabeschicht angelegt. Diese wiederum geben die Daten weiter an die verbundenen Ausgabe- oder verborgenen Neuronen (Output, Hidden Unit). Zusätzlich kann in jeder Schicht noch ein Bias Neuron (Bias Unit) zum Einsatz kommen. Read more

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:

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

Balkendiagramm

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

balkendiagram

Gestapeltes Balkendiagramm

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

balkendiagram-gestapelt

Histogramm (Histogram)

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

histogramm

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

Kastengrafik (Box Plot)

Ein Box Plot zeigt sehr gut Schwerpunkte in einer Verteilung.

box-plot-diagam

Punktverteilungsdiagramm (Scatter Plot)

punktdiagramm

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

 

Extraktion von Software-Metriken aus Java-Dateien mit ANTLR4

In der Software-Entwicklung wird mehr und mehr auf Metriken gesetzt, um den Entwicklungsprozess zu messen und zu verbessern. Tools wie SonarQube und FindBugs helfen dabei – doch sie haben ihre Grenzen. Sie brauchen build-fähige Projekte. Die Metriken sind manchmal nicht genau genug dokumentiert oder lassen sich nur schwer anpassen.

Dabei ist es gar nicht so schwierig, ein eigenes Tool zu schreiben. So können die Metriken selbst definiert, auf Textdateien angewendet, als Skript automatisiert und an beliebige Schnittstellen weitergeben werden – z. B. als CSV-Datei nach R, per Webinterface oder als E-Mail.

Im Folgenden wird gezeigt, wie mit ANTLR4 aus Java-Textdateien Metriken erhoben werden können. Das Beispiel-Projekt steht auf GitHub zur Verfügung.

Statische Code-Analyse mit ANTLR4

ANTLR4 (ANother Tool for Language Recognition) wird seit 1989 von Terence Parr, Professor an der University of San Francisco, entwickelt. Das Tool selbst ist kostenlos; die ausführliche Dokumentation kostet jedoch 27 US-Dollar. Für den Einstieg reicht die kostenlose Dokumentation. ANTLR4 ist eine Java-Bibliothek.

Beim Parsen erstellt ANTLR4 auf Basis einer Grammatik einen Syntaxbaum. Nach dem Parsen wird der Syntaxbaum mit einem Walker abgelaufen. Dabei auftretende Events können über ein Listener-Interface abgefangen werden. Durch das Verarbeiten der Events können eigene Metriken berechnet werden.

Das Listener-Interface selbst wird über die Grammatik spezifiziert. ANTLR4 generiert aus der Grammatik Listener in Java, von denen anschließend geerbt wird.

Für viele Programmiersprachen gibt es bereits fertige Grammatiken, die auf GitHub gemeinsam entwickelt werden (siehe z. B. Java-Grammatik). Ansonsten muss die Grammatik selbst geschrieben werden.

Das Beispiel-Projekt

Im Beispiel wird der Klassenname und die Anzahl von Methoden aus einer Java-Klasse erhoben:

Das Ergebnis wird in einer Map<String, Integer> ausgegeben.

Vorbereitungen

Im Beispiel werden Eclipse, ein ANTLR4-Eclipse-Plugin und Maven benutzt. ANTLR4 lässt sich auch unabhängig von Eclipse und Maven benutzen.

Nach der Installation des Eclipse-Plugins muss in der pom.xml eine Dependency ergänzt werden:

Die Java-Grammatik wird von GitHub heruntergeladen und unter src/main/antlr4/Java.g4 abgelegt. Anschließend werden per Rechtsklick auf Java.g4 -> Run As -> Generate ANTLR Recognizer die Hilfsdateien von ANTLR4 angelegt.

Damit die Hilfsdateien von Eclipse als Java-Quellcode erkannt werden, werden sie nach src/main/java/generated kopiert.

Metriken definieren

ANTLR4 erstellt aus der Grammatik einen JavaBaseListener. Zum Definieren der Metriken wird ein eigener Listener programmiert, der vom JavaBaseListener erbt. Wenn ANTLR4 später den Syntaxbaum durchläuft, ruft es die entsprechenden Listener-Methoden auf.

Im JavaBaseListener sind alle Events, auf die gehört werden kann, als Methode aufgeführt. Um nun den Klassennamen für die Metrik zu erfahren, wird das Event ClassDeclaration abgehört:

Um die Anzahl der Methoden zu erhalten, wird ein Counter bei jedem Auftreten einer MethodDeclaration erhöht.

ANTLR ausführen

Damit ANTLR ausgeführt werden kann, braucht es noch die zu lesende Datei und den Listener. Dazu sind nur wenige Zeilen Code notwendig:

Ein Test prüft, ob der Klassenname und die Methodenanzahl richtig extrahiert werden:

Die fertige Projektstruktur sieht in Eclipse so aus:

01_projektstruktur

Abbildung 1: Die fertige Projektstruktur.

Nun kann der Test erfolgreich durchgeführt werden.

02_erfolgreicher_test

Abbildung 2: Der Testfall läuft erfolgreich.

 Fazit

Damit der Code produktiv genutzt werden kann, sollten noch mögliche I/O- und ANTLR-Fehler behandelt werden. Außerdem müssen die erhobenen Daten weitergegeben werden, um z. B. als CSV-Datei in R importiert werden zu können.

Erfahrungsgemäß ergeben sich aus dem großen Sprachumfang viele Sonderfälle, die bei der Definition von Metriken berücksichtigt werden müssen. Hier helfen Testfälle weiter, um eine korrekte Messung sicherzustellen.

Das Beispiel konnte zeigen, dass leicht eigene Metriken aus Java-Quellcode erhoben werden können. So werden Quellcode und strukturierte Texte für die Analyse und Optimierung zugänglich.

 

Referenzen & Links

  • ANTLR4
    Die Projektseite von ANTLR4.
  • Java-Grammatik
    Die ANTLR4-Grammatik für die Java-Programmiersprache.
  • Beispielprojekt auf GitHub
    Das in diesem Tutorial verwendete Beispielprojekt auf GitHub.
  • ANTLR4-Eclipse-Plugin
    Das Eclipse-Plugin, das zum Ausführen von ANTLR4 in Eclipse benutzt werden kann.
  • Rascal MPL
    Eine Meta-Programmiersprache. Erlaubt nicht nur die Analyse, sondern auch das Erzeugen + Verändern von Quellcode.
  • Fallstudie Java-Korpus
    Eine laufende Fallstudie des Autors, in der ANTLR4 benutzt wird, um die typische Verwendung von Java-Sprachkonstrukten in 2,8 Mio. Dateien zu untersuchen.

Datenvisualisierung – Eine Wissenschaft für sich… oder auch zwei

Techniken für die Visualisierung und visuelle Analyse von Datenmengen gehören heute in vielen Unternehmen zu den essentiellen Werkzeugen, um große Datensätze zu untersuchen und sie greifbarer zu gestalten. Während die Anwendungssoftware dazu ständig weiterentwickelt wird, sind die dahinterliegenden Methoden ein beliebtes Forschungsthema in der Wissenschaft. Es gibt zahlreiche Tagungen, Workshops und Fachjournale, in denen neue Erkenntnisse, Verfahren und technische Innovationen ausgetauscht werden.
Interessant ist aber, dass sich in den vergangenen Jahrzehnten zwei große unabhängige Strömungen in der Forschung zum Thema Datenvisualisierung ausgeprägt haben. – Beide hängen mit dem übergeordneten Thema zusammen, begreifen sich jedoch sehr unterschiedlich. Read more

Top 10 der Python Bibliotheken für Data Science

Python gilt unter Data Scientists als Alternative zu R Statistics. Ich bevorzuge Python auf Grund seiner Syntax und Einfachheit gegenüber R, komme hinsichtlich der vielen Module jedoch häufig etwas durcheinander. Aus diesem Grund liste ich hier die – meiner Einschätzung nach – zehn nützlichsten Bibliotheken für Python, um einfache Datenanalysen, aber auch semantische Textanalysen, Predictive Analytics und Machine Learning in die Tat umzusetzen.

NumPy – Numerische Analyse

NumPy ist eine Open Source Erweiterung für Python. Das Modul stellt vorkompilierte Funktionen für die numerische Analyse zur Verfügung. Insbesondere ermöglicht es den einfachen Umgang mit sehr großen, multidimensionalen Arrays (Listen) und Matrizen, bietet jedoch auch viele weitere grundlegende Features (z. B. Funktionen der Zufallszahlenbildung, Fourier Transformation, linearen Algebra). Ferner stellt das NumPy sehr viele Funktionen mathematische Funktionen für das Arbeiten mit den Arrays und Matrizen bereit.

matplotlib – 2D/3D Datenvisualisierung

Die matplotlib erweitert NumPy um grafische Darstellungsmöglichkeiten in 2D und 3D. Das Modul ist in Kombination mit NumPy wohl die am häufigsten eingesetzte Visualisierungsbibliothek für Python.

Die matplotlib bietet eine objektorientierte API, um die dynamischen Grafiken in Pyhton GUI-Toolkits einbinden zu können (z. B. GTL+ oder wxPython).

NumPy und matplotlib werden auch mit den nachfolgenden Bibliotheken kombiniert.

Bokeh – Interaktive Datenvisualisierung

Während die Plot-Funktionen von matplotlib statisch angezeigt werden, kann in den Visualsierungsplots von Bokeh der Anwender interaktiv im Chart klicken und es verändern. Bokeh ist besonders dann geeignet, wenn die Datenvisualisierung als Dashboard im Webbrowser erfolgen soll.

Das Bild über diesen Artikel zeigt Visualiserungen mit dem Python Package Bokeh.

Pandas – Komplexe Datenanalyse

Pandas ist eine Bibliothek für die Datenverarbeitung und Datenanalyse mit Python. Es erweitert Python um Datenstrukturen und Funktionen zur Verarbeitung von Datentabellen. Eine besondere Stärke von Pandas ist die Zeitreihenanalyse. Pandas ist freie Software (BSD License).

Statsmodels – Statistische Datenanalyse

Statsmodels is a Python module that allows users to explore data, estimate statistical models, and perform statistical tests. An extensive list of descriptive statistics, statistical tests, plotting functions, and result statistics are available for different types of data and each estimator.

Die explorative Datenanalyse, statistische Modellierung und statistische Tests ermöglicht das Modul Statsmodels. Das Modul bringt neben vielen statistischen Funktionen auch eigene Plots (Visualisierungen) mit. Mit dem Modul wird Predictive Analytics möglich. Statsmodels wird häufig mit NumPy, matplotlib und Pandas kombiniert.

SciPy – Lineare Optimierung

SciPy ist ein sehr verbreitetes Mathematik-Modul für Python, welches den Schwerpunkt auf die mathematische Optimierung legt. Funktionen der linearen Algebra, Differenzialrechnung, Interpolation, Signal- und Bildverarbeitung sind in SciPy enthalten.

scikit-learn – Machine Learning

scikit-learn ist eine Framework für Python, das auf NumPy, matplotlob und SciPy aufsetzt, dieses jedoch um Funktionen für das maschinelle Lernen (Machine Learning) erweitert. Das Modul umfasst für das maschinelle Lernen notwendige Algorithmen für Klassifikationen, Regressionen, Clustering und Dimensionsreduktion.

Mlpy – Machine Learning

Alternativ zu scikit-learn, bietet auch Mlpy eine mächtige Bibliothek an Funktionen für Machine Learning. Mlpy setzt ebenfalls auf NumPy und SciPy, auf, erweitert den Funktionsumfang jedoch um Methoden des überwachten und unüberwachten maschinellen Lernens.

NLTK – Text Mining

NLTK steht für Natural Language Toolkit und ermöglicht den effektiven Einstieg ins Text Mining mit Python. Das Modul beinhaltet eigene (eher einfache) Visualisierungsmöglichkeiten zur Darstellung von Textmuster-Zusammenhängen, z. B. in Baumstrukturen. Für Text Mining und semantische Textanalysen mit Python gibt es wohl nichts besseres als NLTK.

Theano – Multidimensionale Berechnungen & GPU-Processing

Theano is a Python library that allows you to define, optimize, and evaluate mathematical expressions involving multi-dimensional arrays efficiently

Für multidimensionale Datenanalysen bzw. die Verarbeitung und Auswertung von multidimensionalen Arrays gibt es wohl nichts schnelleres als die Bibliothek Theano. Theano ist dabei eng mit NumPy verbunden.

Theano ermöglicht die Auslagerung der Berechnung auf die GPU (Grafikprozessor), was bis zu 140 mal schneller als auf der CPU sein soll. Getestet habe ich es zwar nicht, aber grundsätzlich ist es wahr, dass die GPU multidimensionale Arrays schneller verarbeiten kann, als die CPU. Zwar ist die CPU universeller (kann quasi alles berechnen), die GPU ist aber auf die Berechnung von 3D-Grafiken optimiert, die ebenfalls über multidimensionalen Vektoren verarbeitet werden.

Data Science Evolution

Wie wurde aus Business Intelligence eigentlich Big Data? Aus Sicht der Unternehmen herrscht große Verwirrung darüber, welcher Begriff nun eigentlich was bedeutet und was dieser für das Unternehmen bedeutet.

Es stellt sicadvanced-data-scienceh die Frage, ob Business Intelligence nun veraltet ist und von Big Data Analytics ersetzt wird oder ob Big Data Analytics die Weiterführung von Business Intelligence darstellt. Darüber gibt es unterschiedliche Meinungen, aber die Evolution, die sich über das letzte Jahrzehnt von einfachen Reports zu den aktuellen Möglichkeiten im Bereich von Big Data Analytics erstreckt, können wir uns recht deutlich vor Augen führen.

Raw Data

Rohdaten stellen das “Material” da, welches die Grundlage für jegliche Analysen bildet. Auch wenn Rohdaten erstmal nicht besonders erwähnenswert klingen, so existiert viel Wissenschaft und Business rund um Rohdaten, denn deren Speicherung kann durchaus sehr komplex sein. Abhängig von Art und Struktur der Daten kommen hier unterschiedliche relationale und nicht-relationale (NoSQL) Datenbanken zum Einsatz. Aktueller Trend ist ferner die InMemory-Datenhaltung, die unabhängig von der eigentlichen Datenbankstruktur möglich ist.

Das Angebot an kostenpflichtigen und kostenfreien Datenbanken ist bereits beinahe unüberschaubar groß. Beispielsweise können die relationalen Datenbanken MariaDB, Oracle DB oder PostgreeSQL genannt werden. Neo4J (graphenorientiert), MongoDB (dokumentenorientiert), Apache Cassandra und SAP HANA (beide spaltenorientiert) sowie Redis (Key-Value-Datenbank) sind hingegen Beispiele für sogenannte NoSQL-Datenbanken.

Clean Data

Bereinigte Daten sollte heutzutage eine Selbstverständlichkeit sein? Weit gefehlt! Aus Erfahrung kann ich sagen, dass eine wirklich saubere Datenbasis die Ausnahme darstellt. Die Regel sind Inkonsistenzen zwischen relationalen Daten, Formatfehler, leere Datenfelder (die nicht leer sein dürften) usw. Mit der Bereinigung der Daten haben zurzeit noch alle Unternehmen und Institute zu kämpfen, sofern sie sich diesen Kampf überhaupt stellen.

Standard-Reporting

Reporting in Excel gibt es nun schon mindestens zwei Jahrzehnte und wird auch heute noch (mehr) betrieben. Mit der Etablierung von ERP-Systemen, beispielsweise Microsoft Dynamics NAV oder SAP ERP, fand auch das automatisierte Reporting Einzug in die deutschen Unternehmen. Heute bieten alle ERP-Systeme (bzw. CRM-, SRM-, PLM-Systeme) zumindest grundlegende Reporting-Funktionen in Form von Tabellen, Balken- und Kuchendiagrammen. Diese Reports sind allerdings in der Regel wenig anpassbar durch die Anwender.

Business Intelligence

Kurz nach dem Einsetzen des Wachstums auf dem Markt der ERP-Systeme lebte auch das Business Intelligence mit den schönen grafischen Dashboards auf. BI bedient sich dabei überwiegend aus den Daten des ERP-Systems. Ferner werden noch weitere – vorwiegend unternehmensinterne – Daten hinzugezogen, z. B. aus Excel-Dateien. Der Erfolg von Business Intelligence kam insbesondere mit den Dashboards und einer einfachen Bedienbarkeit, denn BI wurde für ERP-Anwender gemacht.

Im Bereich BI hatte QlikTech mit der Software QlikView einen Volltreffer gelandet, denn diese hat den Weg in viele Unternehmen als BI-Lösung gefunden.

(Big) Data Analytics – Causality Analytics

Data Analytics geht einen Schritt weiter als BI, denn hier geht es nicht nur darum zu analysieren, welche Ereignisse eingetreten sind, sondern auch warum. Data Analytics ist sehr viel flexibler als BI und wird tendenziell eher programmiert als zusammengeklickt. Hier spielen Daten aus externen Datenquellen (z. B. dem Internet) oftmals eine wichtige Rolle und machen daraus Big Data. Zudem kommt vermehrt Statistik und Machine Learning zum Einsatz um Kausalitäten aus den vielfältigen Datenmengen

Gearbeitet wird beispielsweise mit den Programmiersprachen R und Python, aber auch mit IBM SPSS oder SAS Advanced Analytics.

Predictive Modeling

Prädiktive Analysemodelle gehen noch einen Schritt weiter, denn nach der Frage nach dem Warum stellt sich für viele Geschäftszwecke die Frage, wann es wieder geschehen wird. Predictive Analytics gilt als eine Königsdisziplin, arbeitet mit induktiver Statistik und scheint mit der Einbindung von Big Data beinahe unbegrenzte Möglichkeiten der Vorhersage z. B. von Umsätzen, Lagerbeständen und Maschinenabnutzung zu bieten.

Optimierung

Der letzte Schritt in der Evolution ist die Simulation von allen Stellschrauben mit dem Ziel zur Optimierung des Systems (z. B. das Geschäft, die Fabrik oder die Maschine). Was in der Industriebetriebswirtschaft schon lange als Operations Research bekannt ist, wird mit Big Data Analytics einen neuen Aufschwung erfahren, denn hier werden immer mehr relevante Stellschrauben identifiziert und berücksichtigt werden können.

DataQuest.io – Online Einstieg in Data Science mit Python

Data Science hat unglaublich viele Facetten und eine davon, ist die Analyse von Daten mit der Programmiersprache Python. Diese Programmiersprache ist neben R eine der am häufigsten eingesetzten Programmiersprachen für alle möglichen Aufgaben rund um die Auswertung von Daten.

Wer schon immer in die Datenanalyse mit Python einsteigen wollte, kann dies nun sehr einfach über einen ausgeklügelten Online-Kurs namens DataQuest tun.

Ich selbst habe DataQuest ausprobiert und finde es super. Die ersten Module waren für mich erstmal sehr zäh, da sich diese mit Pythen und einigen Programmiergrundlagen befassen. Die Module können allerdings in beliebiger Reihenfolge abgearbeitet werden. Hat man den “Learning Python”-Teil aber durch, wird es schnell sehr spezifisch und auch als Experte kann die Aufgaben als guten Denksport verstehen.

Sehr gut dabei ist, dass der komplette Kurs online in der Cloud stattfindet. Benötigt wird nichts weiter als ein gewöhnlicher Internet-Browser und man muss sich nicht mit der Einrichtung von Python und der Entwicklungsumgebung auf dem Computer beschäftigen. DataQuest stellt über den Browser server-seitig die Entwicklungsumgebung bereit. Es kann also sofort nach der Account-Einrichtung losgehen! Die Kurse von DataQuest gibt es allerdings nur auf Englisch.

Der Kursumfang beginnt recht ausführlich über die Grundlagen der Programmierung, basierend auf Python. Die Grundlagen werden jedoch bereits überwiegend anhand von Aufgaben im Bereich der Datenanalyse erklärt, beispielsweise den Zugriff auf Textdateien.

Zumindest alle Grundlagen-Kurse sind kostenlos. Der weitere Kursinhalt über die Programmiergrundlagen hinaus befasst sich direkt mit dem Einstieg in Data Science mit der explorativen Datenanalyse, der Datenvisualisierung und der Statistik im Allgemeinen und Predictive Analytics im Speziellen. Ferner sollen in der Zukunft Kurse mit einen Einstieg ins Maschinelle Lernen (Machine Learning) angeboten werden. Die interessantesten Kurse können jedoch nur über den Premium-Account gestartet werden. Dieser ist für bezahlbare 35 US-Dollar pro Monat zu haben.

URL zum Anbieter: www.dataquest.io

Was ist Data Science?

Was bitte soll Data Science bedeuten? Diese Frage bekomme ich häufig von meinen Kunden (überwiegend kaufmännische Leiter größerer Wirtschaftsunternehmen) gestellt. Und überraschenderweise können auch viele IT-affine Professionals, die sich beispielsweise schon mit Business Intelligence auseinandergesetzt haben, noch nichts mit dieser Bezeichnung anfangen.

Data Science ist eine recht neue Bezeichnung und entstammt – wie nicht anders zu vermuten – aus dem angelsächsischen Sprachraum, genau wie auch Business Intelligence und Big Data Analytics. Dadatasciencebei ist meiner Meinung nach Data Science ein vergleichsweise sehr treffender Name (wesentlich besser als etwa der irreführende Begriff Big Data). Zwar besagt ein Blick auf Wikipedia zum Thema, dass Data Science als Begriff schon fast ein halbes Jahrhundert existiert, aber so richtig in Verwendung ist es eigentlich erst seit einem halben Jahrzehnt, bestenfalls.

Data Science als angewandte Wissenschaft

Das Science in Data Science deutet ganz klar auf Wissenschaft hin, auch wenn – meiner Meinung nach – der Begriff wissenschaftlich im Deutschen etwas strenger verwendet wird als Science im Englischen. Data Science hat seinen Ursprung tatsächlich in der Wissenschaft und ist z. B. in der Astronomie, Biologie, Medizin sowie den verschiedensten Sozialwissenschaften längst nicht mehr wegzudenken, hat jedoch auch den Weg in die Geschäftswelt gefunden. Die Data Science Methoden kommen aus der Informatik bzw. Mathematik und werden im Rahmen von universitären Forschungsprojekten weiterentwickelt. Die Methoden können mit etwas Hintergrundverständnis quasi von jedermann angewendet werden. Data Science ist vor allem eine angewandte Wissenschaft, in die jeder Anwender beliebig tief eintauchen kann.

Data Science und die Interdisziplinarität

Eine wichtige Disziplin im Data Science ist die Mathematik, davon insbesondere die Stochastik (Wahrscheinlichkeitstheorie und Statistik). Die Grundlagen der Datenanalyse zur Beschreibung von Sachverhalten erfolgt dabei mit den Methoden der deskriptiven Statistik. Bei der Generierung von neuen Erkenntnissen direkt aus Datenmengen heraus (Data Mining bzw. explorative Datenanalyse), wird von der explorativen Statistik ermöglicht. Die induktive Statistik geht noch einen Schritt weiter und ermöglicht Schätzverfahren bzw. Prognosen über zukünftige Ereignisse (Predictive Analytics). Neben den stochastischen Methoden spielen aber auch andere Bereiche der Mathematik eine Rolle, wie etwa die lineare Optimierung oder Systeme der künstlichen Intelligenz.

Mathematik ist jedoch längst nicht alles, was im Data Science eine Rolle spielt, denn mindestens ebenso wichtig ist Wissen über Datenverarbeitung (früher als EDV bekannt). Um Daten analysieren zu können, muss auf diese erstmal zugegriffen werden können, ggf. müssen diese auch überhaupt erstmal gesammelt werden. Zum Data Science gehören mindestens Grundkenntnisse über relationale Datenbanken und die Structured Query Language (SQL) auf jeden Fall dazu. Insbesondere im aktuellen Big Data Kontext, spielen aber vermehrt auch andersartige Datenbanken (sogenannte NoSQL-Datenbanken) eine wichtige Rolle, denn diese Datenbanken eignen sich zur Speicherung von besonders großen und/oder unstrukturierten Datenmengen.
Die besten Erkenntnisse bringen oftmals Datenanalysen über Daten aus unterschiedlichsten Datenquellen, welche über Extract-Transform-Load-Strecken (ETL) zusammen geführt werden. Die eigentlichen Analysen können mit verschiedensten Tools durchgeführt werden oder aber über dutzende Programmiersprachen. Wissen um Tools rund um ETL und Datenanalysen beschleunigen den Arbeitsalltag, stoßen jedoch schnell an gewisse Grenzen, bei denen man mit Programmiersprachen ansetzen muss. Im Data Science spielt Software Engineering grundsätzlich keine Rolle. Ein Data Scientist muss sich also für gewöhnlich keine Gedanken über eine Software-Architektur oder GUI-Entwürfe machen, auch spielt für Ihn Software-Sicherheit oder -Ergonomie keine entscheidende Rolle. Im Data Science kommen überwiegend Script-Sprachen (z. B. R, Perl oder Python) zum Einsatz. Sauberer Quellcode jedoch, ist auch im Data Science wichtig, da die Analyse und somit auch die Ergebnisse reproduzierbar bleiben müssen.

Neben der Mathematik und dem Wissen um IT, gibt es jedoch noch einen dritten Bereich, der im Data Science eine wirklich wichtige Rolle spielt: Die eigentliche Substanzwissenschaft. Es versteht sich von selbst, dass z. B. Datenanalyse für medizinische Zwecke nur effektiv nur von jemanden durchgeführt werden können, der über eine entsprechende medizinische Kompetenz verfügt. Genauso gut aber, ist Wissen über die Betriebswirtschaft und das aktuelle Geschäftsgeschehen von entscheidender Bedeutung, wenn es um Datenanalyse zum Zwecke der Geschäftsoptimierung (Business Analytics) geht.