Zum Hauptinhalt springen

IMHO lernt Python

Anfang der 90er konnte ich mich als Kind das erste Mal an einer Programmiersprache versuchen, damals Turbo Pascal. Mittlerweile habe ich durch meine Berufserfahrungen und private Interessen kleinere Codes in C++, etwas größere Codes in Java, Perl und JavaScript, ausgereifte Apps für Endkunden in VBA und für professionelle Projekte über 5 Jahre mit PHP entwickelt. Dennoch, keine dieser Programmiersprachen hat mich vom ersten Moment an so überzeugt wie Python.

Sicher ist Python in seiner normalen Distribution als "High-Level"-Sprache nicht geeignet, um etablierten Sprachen wie C++ oder Java in Sachen Performance das Wasser zu reichen. Letztere sind einfach schneller und optimierter und haben den Vorrang in der professionellen Softwareentwicklung.

Warum Programmieren als Data Scientist?

Kein Problem für uns ... Data Scientists müssen vermutlich selten komplexe Anwendungen entwickeln. Warum sollten wir uns überhaupt mit Programmiersprachen auseinandersetzen?

Ich habe vor kurzem mehrere Stellenausschreibungen für "Data Scientists" gesehen, die nur Erfahrung in einem Statistiktool sowie leichte SQL-Kenntnisse voraussetzen. Kein Wunder, dass man im Zusammenhang mit "Data Scientists" von einem Hype spricht, wenn man es nur als Rebranding von reinen Statistikerinnen/Statistikern versteht.

Nun, jeder echte Data Scientist ist ständig mit der Aufgabe konfrontiert, seine Daten erst mal aufzubereiten, Analyseergebnisse anderen Usern zugänglich zu machen und teilweise Reportings oder Präsentationen vorzubereiten oder selbst zu erstellen. Ich zumindest stoße dabei ständig auf kleinere und größere Probleme, die ich ohne die Hilfe einer kleineren Programmierung nur umständlich oder mit hohem händischen Aufwand lösen kann. Zusätzlich bieten mir Programmierungen die Möglichkeit, die Prozesse zu automatisieren und dabei Flüchtigkeitsfehler zu vermeiden.

Python, die Sprache der Data Scientists?

Genau hier kommt Python als Skriptsprache ins Spiel. Man kann sich schnell und ohne großes Setup ein kleines Skript zusammenschustern, das im Nu das Problem löst. Klar, für eigentlich alle diese Anwendungsfälle hätte ich auch Perl verwenden oder PHP missbrauchen können. Aber kein Konkurrent zu Python besitzt dessen Potential nach oben. Python darf nicht als eine von vielen Skriptsprachen abgetan werden. Python vereinigt eine Vielzahl der großen Programmierparadigmen. Die Sprache ist beispielsweise völlig objektorientiert, unterstützt aber auch funktionale Programmierung. Python kann vorgeworfen werden, die besten Ideen aus anderen Sprachen geklaut zu haben. Der Schöpfer Guido von Rossum antwortete darauf einmal sinngemäß, dass es ja genau die Absicht war, die Highlights anderer Sprachen zu bündeln.

Gerade in den letzten 5 Jahren habe ich eine rasant wachsende Verbreitung der Sprache erlebt. Jeder, der sich im Web bewegt, hat mit Sicherheit schon Dienste genutzt, die u. a. Python nutzen, allen voran z. B. Google, YouTube und Dropbox.

Für Data Scientists wächst ständig das Angebot an dedizierten Modulen zur Datenaufbereitung (z. B. http://pandas.pydata.org/), Analyse (z. B. http://www.scipy.org/) und Reporting (z. B. http://matplotlib.org/). Vor kurzem bin ich sogar über einen Artikel gestolpert, der die Sprache als künftige Ablösung von Tools wie R sieht: http://readwrite.com/2013/11/25/python-displacing-r-as-the-programming-language-for-data-science.

So extrem würde ich es bei weitem nicht sehen. Es gehört schon viel Erfahrung im Umgang mit der Sprache dazu, um etablierte Lösungen wie R abzulösen.

Vorzüge von Python

Mich persönlich überzeugt die Sprache sehr, weil ...

  • sie gut lesbaren und verständlichen Code verwendet.
  • sehr viel Funktionalität schon von Anfang an mitgeliefert wird.
  • man mit wenigen Zeilen sehr viel erreicht. It gets the job done!
  • sie über mittlerweile Berge an guter Literatur verfügt.
  • man nach kurzem, einfachem Setup sofort loslegen kann.

Gute Erfahrungen mit Python

Ich habe Python in den letzten etwa 7 Jahren im Arbeitsumfeld für Dinge verwendet wie:

  • Parsen von Files
  • Parsen von Webquellen
  • ETLs aller Art mit verschiedenen Datenbanksystemen
  • Dynamische Webanwendungen mit dem web2py-framework
  • Massen an automatisierten Reportings in Excel oder Latex

und so manches mehr ...

Ein kleines Beispiel

Genug geschwärmt. Hier ein kleines Beispiel. Die Nachricht aus der ersten Zeile soll in "IMHO lernt Python" umgewandelt werden. Oben gibt es die langsame Variante, welche die Wörter abläuft und nur die ersten 4 umwandelt. 

Zunächst wird die Nachricht anhand eines Leerzeichens in eine Liste von Wörtern überführt (Split-Befehl). Später wird diese Liste in einer Schleife abgelaufen. Wenn das jeweilige Wort zu den ersten 4 gehört, wird für jedes dieser Wörter nur der erste Buchstabe ausgewählt und der neuen Nachricht angehängt. Die restlichen Wörter werden unverändert mit einem führenden Leerzeichen übernommen. Da die neue Nachricht im Moment noch eine Liste von Wörtern ist, wird sie zum Ausgeben im Print-Befehl noch mit Hilfe eines leeren Strings als Kleber zwischen den Wörtern zu einem einzigen String verknüpft (Join-Befehl).

Weiter unten gibt es die Variante für Fortgeschrittene, alles in einer Zeile :-D

message = "In My Humble Opinion lernt Python!" 
#hier die ausführliche Variante 
message_list = message.split(' ')
new_message = []
for word in message_list:
    if word in message_list[0:4]:
        new_message.append(word[0:1])
    else:
        new_message.append(" "+word)
print(''.join(new_message))
 
#und hier all das in nur einer Ziele
print(''.join([word[0:1] if word in message.split(' ')[0:4] else ' '+word for word in message.split(' ')]))

 

Stefan Seltmann
Dein Ansprechpartner
Stefan Seltmann
Lead Expert
Stefan liebt das Programmieren, vor allem rund um Data Engineering und Data Science, und arbeitet quasi in seinem Hobby. Gerade für Softwareentwicklung mit Python und/oder Spark punktet er als b.telligents Telefonjoker.
#CodeFirst, #TestMore, #CodeDoctor