Was ist für Data Scientists besser: R oder Python?
Wenn Sie wollen, dass sich zwei Data Scientists aus den Finanzdienstleistungen streiten, dann müssen Sie sie lediglich fragen, ob sie R oder Python bevorzugen. Falls Sie anderer Meinung sind, dann setzt unvermeidlich eine hitzige, emotionale Debatte ein. Doch wer ist im Recht?
R ist derzeit die meistgebrauchte Sprache in Data Science
Traditionell wird in der Data Science-Community R mehr genutzt, was auf seine Beliebtheit an Universitäten zurückgeht. Viele angehende Data Scientists haben R bereits für ihre Masterarbeit oder Promotion benutzt. Tatsächlich habe auch ich die Sprache während meiner Masterarbeit kennengelernt.
Doch mittlerweile hat Python aufgeholt. Zwar war R noch 2016 die beliebteste Sprache der Data Scientists, aber Python schaffte es schon auf den zweiten Platz. 2018 haben sie bereits die Positionen getauscht. Mittlerweile nutzen zwei Drittel Python und 49 Prozent R.
R hatte schon immer die besseren Pakete
Traditionell bringt R die größere Vielfalt von Paketen für statistische Analysen und deren Visualisierung mit. Zu den beliebtesten Bibliotheken gehören dplyr, zoo und ggplot2 – und es gibt dutzende mehr. Python hat zwar nur langsam zu R aufgeschlossen, doch mittlerweile gibt es auch viele Lösungen für Data Scientists wie Pandas, Scippy und Matplotlib.
R ermöglicht schlechtes Programmieren
R steht im Ruf, schwer zu erlernen zu sein, wenn man sich bereits mit gebräuchlicheren Programmiersprachen auskennt. Meiner Erfahrung nach läuft man auch leicht Gefahr, einen schlechten Programmiercode zu verfassen. Im Vergleich dazu fällt das Programmieren mit Python leichter. Besonders im objektorientierten Programmieren (OOP) wird es schnell dreckig. OOP wurde bei R gewissermaßen im Nachhinein eingeführt. Es stellt also keinen integralen Teil der Sprache wie bei Python dar.
Sowohl R als auch Python sind dynamisch programmierte Sprachen. Dies macht sie sehr flexibel, aber auch fehleranfällig. Dennoch wirken sich schlechte Programmierungen in R besonders verheerend aus. R-Funktionen haben die schlechte Angewohnheit, bei unerwarteten Objekten zurückzukehren und sie nehmen viel zu schnell den falschen Typ von Argument an. Dies erschwert, die Fehler in dem Code zu finden. Daher brechen nach dem eigentlichen Fehler rasch tausende von Code-Zeilen zusammen.
R ist langsamer als Python
Java-Programmierer spotten regelmäßig darüber, wie langsam Python ist. Dennoch ist Python immer noch beträchtlich schneller als R – und zwar etwa um den Faktor vier. In beiden Sprachen kann jedoch Gas gegeben werden, indem C oder C++-Code integriert wird. Allerdings ist die dafür erforderliche Schnittstelle in R wesentlich schwerfälliger als in Python.
Python eignet sich besser für Handelssysteme
Da man die gleiche Sprache für Research und Produktion nutzen kann, ist sie gut für den schnellen Einsatz geeignet. In der Vergangenheit habe ich R für die Entwicklung automatisierter Handelssysteme verwendet; das würde ich nicht wieder machen. Das Memory-Management von R ist bescheiden und die oben genannten Programmierungsprobleme können zu sonderbaren Fehlern führen, die sich nur schwer beheben lassen. Dagegen ist Python gut für Handelssysteme geeignet, solange keine kurzen Latenzzeiten verlangt werden. In diesem Fall wären C++ und Java bessere Optionen. Darüber hinaus besitzt es wohlbekannte Schwächen wie das Global Interpreter Lock. Doch im Allgemeinen handelt es sich um eine robuste Plattform für einen Produktions-Code.
Fazit…
Allein aus Sicht der Data Science liegt R immer noch vor Python, obgleich sich der Vorsprung deutlich verringert hat. Doch die breiteren Anwendungsmöglichkeiten sprechen für Python. Wer sich am Start seiner Karriere befindet, der besitzt mit Python mehr Optionen für die Zukunft.
Robert Craver hat früher im Investmentbanking und Assetmanagement gearbeitet und mit exotischen Optionen gehandelt. So hat er das Geschäft mit festverzinslichen Anleihen beim Hedgefonds AHL geleitet. Er besitzt Bachelor und Master, aber keinen MBA. Carver ist Autor von „Systematic Trading“ und „Smart Portfolios“.