In diesem Blogbeitrag möchten wir uns mit den möglichen Tools beschäftigen, die für Data Science zum Einsatz kommen. Wir bei OpenAdvice (mittlerweile Teil der TIMETOACT) bevorzugen den Einsatz von Jupyter Notebooks in Kombination mit einer Python Version. Welche Vorteile solche Notebooks haben und wie sie mit ihnen arbeiten können, werden wir in diesem Beitrag aufzeigen.
Über Jupyter Notebooks
Jupyter (eine Mischung aus den drei Programmiersprachen Julia, Python & R) ist ein Open Source Projekt, um das Arbeiten mit diversen Programmiersprachen in einer Umgebung möglichst simpel und anschaulich zu gestalten. Ein riesiger Vorteil ist die Darstellung. Wo andere GUIs (graphische Benutzeroberflächen) viele Möglichkeiten, insbesondere Debugger, liefern und oft erschlagend umfangreich sind, glänzt Jupyter mit Übersichtlichkeit ohne Abstriche in der Funktionalität. Den Grundstock bilden sogenannte Zellen. Hier gibt es die Möglichkeit zwischen Code-Zellen (zum Programmieren) und Markdown-Zellen zu wählen. Man kann dementsprechend seinen Code mit Texten, Bildern und z.B. auch .gif Datein kombinieren. Erzeugte Plots, Karten oder Grafiken werden ebenfalls direkt im Notebook dargestellt. Das leichte Exportieren in verschiedene Formate (.pdf, .html, .py, .tex,…) kreiert so ein vollständiges Dokument. So ist es möglich seine Erkenntnisse direkt auszuformulieren und mit dem Code und Grafiken zusammen zu einer Analyse im PDF Format zu exportieren. Alle Beitrage aus dieser Reihe sind und werden aus demonstrationszwecken ebenfalls ausschließlich mit Jupyter Notebooks erstellt. Gerade im Bereich Data Science, wo es u.a. darum geht mit Daten zu jonglieren, sie zu untersuchen, zu visualisieren und die daraus gezogenen Kenntnisse auszuformulieren, liefern Jupyter Notebooks die perfekte Basis alle Aufgabe mit einem (kostenlosen) Tool zu bewältigen. Die einzelnen Stationen eines typischen Projekts wollen wir kurz anschneiden und erklären.
ETL - Extract Transform Load
Nachdem man sich mit der Materie des Projekt vertraut gemacht hat, ist es essenziell die zugehörigen Daten zu sammeln, diese aufzubereiten und anschließend zur Weiterverarbeitung zu sichern. Dieses Vorgehen nennt man auch ETL-Prozess.
Ein typischer ETL Prozess könnte so aussehen:
Einlesen von Daten
Wir wollen einige Möglichkeiten präsentieren, wie man verschiedene Datenquellen mit Python einlesen kann. Zur Datensicherung und -aufbereitung bietet sich das Package Pandas an. Damit werden eingelesene Daten in DataFrames (Tabellen) gespeichert. Ein mal eingelesen kann man diese beliebig weiterverarbeiten. Das macht das Aufbereiten sehr viel handlicher. Neben der Möglichkeit lokal mit Jupyter Notebooks zu arbeiten, gibt es auch in IBM Cognos Analytics die Möglichkeit mit Notebooks zu arbeiten. Die in IBM Cognos Analytics erstellen Datenmodule, Data Sources und auch hochgeladenen Datein können leicht eingelesen werden. Hierfür gibt es einen integrierten Data Connector (CADataConnector). Auch diese eingelesenen Daten werden in einem DataFrame gespeichert.
Datenverarbeitung
Nachdem wir nun Daten eingelesen haben, können wir mit ihnen arbeiten, sie aufbereiten und auch damit rechnen. Die Pandas library bietet hierfür eine Vielzahl von Möglichkeiten. Wie man Daten in ein Notebook einliest haben wir bereits gesehen. Einige der oben aufgeführten Transformationen wollen wir ihnen vorführen. Viele dieser Verarbeitungsschritte sind sogenannte One-liner, das heißt, sie können in nur einer Zeile Code umgesetzt werden. Wir wollen annehmen, dass wir unsere Daten in einem DataFrame namens “df_Beispiel” eingelesen haben.
Datensicherung
Je nach Anforderung können die Daten direkt in eine Datenbank geschrieben werden, oder lokal in Form einer Datei gesichert werden.
Natürlich ist ein ETL Prozess weitaus komplexer und umfangreicher und je nach Projektziel müssen auch weitere Transformationen passieren. Mit diesem Beitrag sollten sie einen kurzen Einblick erhalten wie ein ETL Prozess aussehen könnte. Im nächsten Beitrag dieser Serie freuen wir uns, ihnen verschiedene Arten von Visualisierungen zu zeigen, um die bearbeiteten Daten zielgerecht präsentieren zu können.