Python als Statistik-Workbench

355

Viele Leute verwenden ein Hauptwerkzeug wie Excel oder ein anderes Arbeitsblatt, SPSS, Stata oder R für ihre Statistikanforderungen. Sie können sich für ganz spezielle Anforderungen an ein bestimmtes Paket wenden, aber eine Menge Dinge können mit einer einfachen Tabelle oder einem allgemeinen Statistikpaket oder einer Statistikprogrammierumgebung erledigt werden.

Ich mochte Python immer als Programmiersprache und für einfache Bedürfnisse ist es einfach, ein kurzes Programm zu schreiben, das berechnet, was ich brauche. Matplotlib erlaubt es mir, es zu zeichnen.

Hat jemand komplett von, sagen wir R, zu Python gewechselt? R (oder ein beliebiges anderes Statistikpaket) verfügt über zahlreiche statistikspezifische Funktionen und Datenstrukturen, mit denen Sie über die Statistiken nachdenken können, die Sie ausführen möchten, und weniger über die interne Darstellung Ihrer Daten. Mit Python (oder einer anderen dynamischen Sprache) kann ich in einer vertrauten Hochsprache programmieren und programmgesteuert mit realen Systemen interagieren, in denen sich die Daten befinden oder in denen ich Messungen durchführen kann. Aber ich habe kein Python-Paket gefunden, mit dem ich Dinge mit "statistischer Terminologie" ausdrücken könnte - von einfachen beschreibenden Statistiken bis zu komplizierteren multivariaten Methoden.

Was können Sie empfehlen, wenn ich Python als "Statistik-Workbench" verwenden wollte, um R, SPSS usw. zu ersetzen?

Was würde ich aufgrund Ihrer Erfahrung gewinnen und verlieren?

Fabian Fagerholm
quelle
5
Zu Ihrer
Information
Wenn Sie Dinge auf der Kommandozeile bewegen müssen, ist pythonpy ( github.com/Russell91/pythonpy ) ein nettes Werkzeug.
RussellStewart

Antworten:

307

Es ist schwer, die Fülle der in R / CRAN verfügbaren Statistikpakete zu ignorieren. Trotzdem verbringe ich viel Zeit im Pythonland und würde niemanden davon abhalten, so viel Spaß zu haben wie ich. :) Hier sind einige Bibliotheken / Links, die Sie für statistische Arbeiten nützlich finden könnten.

  • NumPy / Scipy Sie kennen diese wahrscheinlich bereits. Lassen Sie mich jedoch auf das Kochbuch verweisen, in dem Sie über viele bereits verfügbare statistische Funktionen und die Beispielliste lesen können, die eine hervorragende Referenz für Funktionen (einschließlich Datenmanipulation und andere Vorgänge) darstellt. Eine weitere nützliche Referenz ist John Cooks Distributions in Scipy .

  • Pandas Dies ist eine wirklich schöne Bibliothek für die Arbeit mit statistischen Daten - Tabellendaten, Zeitreihen, Paneldaten. Enthält viele integrierte Funktionen für Datenzusammenfassungen, Gruppierung / Aggregation und Pivoting. Hat auch eine Statistik / Ökonometrie-Bibliothek.

  • Larry Labeled Array, das sich gut mit NumPy spielt. Bietet statistische Funktionen, die in NumPy nicht vorhanden und für die Datenmanipulation geeignet sind.

  • python-statlib Ein relativ neuer Versuch, bei dem mehrere verstreute Statistikbibliotheken kombiniert wurden. Nützlich für grundlegende und beschreibende Statistiken, wenn Sie NumPy oder Pandas nicht verwenden.

  • Statistikmodelle Statistische Modellierung: Lineare Modelle, ua GLMs.

  • scikits Pakete für statistische und wissenschaftliche Berechnungen - insbesondere für Glättung, Optimierung und maschinelles Lernen.

  • PyMC Für Ihre Bayesian / MCMC / hierarchischen Modellierungsanforderungen. Sehr empfehlenswert.

  • PyMix Mixture Modelle.

  • Biopython Nützlich zum Laden Ihrer biologischen Daten in Python und bietet einige rudimentäre statistische / maschinelle Lernwerkzeuge zur Analyse.

Wenn Geschwindigkeit zu einem Problem wird, sollten Sie Theano in Betracht ziehen, das von tief lernenden Menschen mit gutem Erfolg eingesetzt wird.

Es gibt viele andere Dinge da draußen, aber dies ist das, was ich am nützlichsten finde, in dem Sinne, wie Sie es erwähnt haben.

ars
quelle
16
Alle Antworten waren sowohl hilfreich als auch nützlich und würden es verdienen, akzeptiert zu werden. Dieser jedoch kann die Frage sehr gut beantworten: Mit Python müssen Sie viele Teile zusammenstellen, um das zu tun, was Sie wollen. Diese Hinweise sind zweifellos für alle sehr nützlich, die Statistiken / Modellierungen / etc. Durchführen möchten. mit Python. Danke an alle!
Fabian Fagerholm
1
@ars, wissen Sie bitte, wie Sie Python am besten unter Windows einsetzen können?
Stéphane Laurent
1
@ StéphaneLaurent Normalerweise installiere ich die verschiedenen Teile selbst, aber für einen schnellen Start / eine schnelle Installation könnten Sie Folgendes in Betracht ziehen: pythonxy .
Ars
Dieses Skript installiert viele der oben genannten Bibliotheken: fonnesbeck.github.com/ScipySuperpack
Fr.
Pythonxy ist nett, aber es kann ärgerlich werden, wenn Sie große Berechnungen durchführen möchten, da es nur für 32 Bit verfügbar ist. Hier sind inoffizielle Binärdateien für die Installation vieler Python-Pakete. Sie können sehr nützlich sein, wenn Sie unter Windows arbeiten möchten. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua
140

Als numerische Plattform und Ersatz für MATLAB ist Python vor mindestens zwei bis drei Jahren ausgereift und in vielerlei Hinsicht besser als MATLAB. Ich habe damals versucht, von R zu Python zu wechseln und bin kläglich gescheitert. Es gibt einfach zu viele R-Pakete, die ich täglich verwende und die kein Python-Äquivalent haben. Das Fehlen von ggplot2 ist genug, um ein Showstopper zu sein, aber es gibt noch viel mehr. Darüber hinaus verfügt R über eine bessere Syntax für die Datenanalyse. Betrachten Sie das folgende grundlegende Beispiel:

Python :

results = sm.OLS(y, X).fit()

R :

results <- lm(y ~ x1 + x2 + x3, data=A)

Was halten Sie für ausdrucksvoller? In R können Sie in Variablen denken und ein Modell leicht erweitern, um beispielsweise

lm(y ~ x1 + x2 + x3 + x2:x3, data=A)

Im Vergleich zu R ist Python eine einfache Sprache für die Modellbildung.

Wenn ich weniger Anforderungen an erweiterte statistische Funktionen hätte und Python bereits in einem größeren Projekt codiert hätte, würde ich Python als einen guten Kandidaten betrachten. Ich würde es auch in Betracht ziehen, wenn ein Bare-Bone-Ansatz erforderlich ist, entweder aufgrund von Geschwindigkeitsbegrenzungen oder weil R-Pakete keinen Vorteil bieten.

Für diejenigen , relativ fortgeschrittene Statistiken tun jetzt , die Antwort ist ein Kinderspiel, und ist nicht . Tatsächlich glaube ich, dass Python die Art und Weise, wie Sie über Datenanalysen denken, einschränken wird. Es wird einige Jahre und viele Jahre dauern, bis die Module für die 100 wesentlichen R-Pakete ausgetauscht sind, und selbst dann wird sich Python wie eine Sprache anfühlen, auf die die Datenanalysemöglichkeiten aufgesetzt wurden. Da R bereits den größten relativen Anteil angewandter Statistiker in mehreren Bereichen erfasst hat, sehe ich dies in Kürze nicht. Abgesehen davon ist es ein freies Land und ich kenne Leute, die Statistik in APL und C betreiben.

gappy
quelle
9
+1 Ich mag diese Antwort nur, weil Sie R als statistische Sprache für die Arbeit mit Daten unter Verwendung von Formeln und dergleichen hervorheben. Abgesehen davon erwarte ich einen großen positiven Einfluss von Pandas (kombiniert mit Statistikmodellen) in der Python-Community.
Chl
28
In der Python-Community geht Patsy auf die Notwendigkeit von "Formeln" ein, die Sie beschreiben, und verbessert gelegentlich das, was R bietet: Aspekte werden orthogonal behandelt. Pandas kümmert sich um die Darstellung von Zeitreihen und Datenrahmen / Serien. Patsy für die Formeln. Numpy für Array-Darstellung und Vektorisierung. statsmodels schließt Statistikalgen ein. scipy für die Optimierung und eine Reihe von anderen Sachen. Das Ergebnis sind sauberere Schnittstellen. R ist im Vergleich reifer, aber es ist ein Haarball. ../ ..
Blais
3
../ .. Ich denke, auf lange Sicht werden die Kräfte in Richtung einer immer stärkeren Python-Integration vordringen, und Sie werden feststellen, dass es ein ziemlicher Konkurrent von R wird es ist nie ein trivialer Teil des Jobs. - blais
chl
9
als update: das erste beispiel in der statsmodels dokumentation ist jetzt results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels ist in Bezug auf die Abdeckung immer noch weit hinter anderen Statistikpaketen wie R zurück, aber es gibt immer mehr Dinge, die Sie in Python tun können, bevor Sie sich eine andere Sprache oder ein anderes Statistikpaket zulegen müssen. (GEE und Mixed werden in der nächsten Veröffentlichung sein.)
Josef
4
"Was in Python gut ist, ist, dass alle diese Aspekte orthogonal behandelt werden ...". In einigen Punkten bin ich anderer Meinung. Es gibt signifikante Überlappungen zwischen numpy, scipy und statsmodels. Das Design von R ist viel modularer und wirtschaftlicher. Außerdem die meisten nicht aller konzeptionellen Neuerungen in datenorientierten Sprachen (nicht nur Formeln, sondern auch Datenrahmen, eine Grammatik der Grafiken, Caret als eine Grammatik der Medaillen, Knitr und die sich noch entwickelnde Grammatik der Daten von Dplyr) haben ihren Ursprung in R. Die Python-Community scheint immer einen Schritt zurückzubleiben und sich zu sehr auf die Leistung zu konzentrieren.
gappy
95

Lassen Sie mich zunächst sagen, dass ich der Antwort von John D. Cook zustimme: Python ist keine domänenspezifische Sprache wie R, und dementsprechend können Sie später noch viel mehr damit anfangen. Natürlich bedeutet R als DSL, dass die neuesten in JASA veröffentlichten Algorithmen mit ziemlicher Sicherheit in R vorliegen. Wenn Sie hauptsächlich ad-hoc arbeiten und mit der neuesten Lasso-Regressionstechnik experimentieren möchten, ist R beispielsweise schwer zu schlagen. Wenn Sie mehr produktionsanalytische Arbeiten ausführen, sich in vorhandene Software und Umgebungen integrieren und sich Gedanken über Geschwindigkeit, Erweiterbarkeit und Wartbarkeit machen, ist Python für Sie viel besser geeignet.

Zweitens gab ars eine großartige Antwort mit guten Links. Hier sind einige weitere Pakete, die ich für die analytische Arbeit in Python als wesentlich erachte:

  • matplotlib für schöne Grafiken in Publikationsqualität.
  • IPython für eine erweiterte, interaktive Python-Konsole. Wichtig ist, dass IPython ein leistungsstarkes Framework für interaktives, paralleles Computing in Python bietet.
  • Cython zum einfachen Schreiben von C-Erweiterungen in Python. Mit diesem Paket können Sie einen Teil des rechenintensiven Python-Codes in eine C-Erweiterung konvertieren. Sie können dann die C-Erweiterung wie jedes andere Python-Modul laden, aber der Code läuft sehr schnell, da er sich in C befindet.
  • PyIMSL Studio für eine Sammlung von Hunderten mathematischen und statistischen Algorithmen, die umfassend dokumentiert und unterstützt werden. Sie können dieselben Algorithmen von Python und C mit nahezu derselben API aufrufen und erhalten dieselben Ergebnisse. Vollständige Offenlegung: Ich arbeite an diesem Produkt, benutze es aber auch häufig.
  • xlrd zum einfachen Einlesen von Excel-Dateien.

Wenn Sie eine MATLAB-ähnliche interaktive IDE / Konsole wünschen , schauen Sie sich Spyder oder das PyDev- Plugin für Eclipse an .

Josh Hemann
quelle
15
R ist kein DSL im üblichen Sinne. Es ist eine vollständige Programmiersprache.
Hadley
4
@hadley: Vielleicht verwende ich "DSL" zu umgangssprachlich, aber für das, was es wert ist, listet die Wikipedia-Seite über DSLs explizit S + und R als Beispiele für DSLs und Python als allgemeine Sprache auf. Siehe en.wikipedia.org/wiki/Domain-specific_language . Ebenso ist SAS Turing-vollständig (nur wenn die IML-Makrokomponente verwendet wird), aber ich würde es im praktischen Sinne kaum als vollständige Sprache bezeichnen. Ich finde R in meiner Arbeit von unschätzbarem Wert, aber ich versuche, so viel wie möglich mit Mehrzwecksprachen zu programmieren, anstatt zu versuchen, alles in R (oder Excel) zu tun.
Josh Hemann
16
Ich finde es unfair, R und S in dieselbe Liste wie diese anderen Sprachen in Wikipedia aufzunehmen - es gibt nichts, was Sie in R nicht tun können, was Sie in Python tun können. Natürlich gibt es viele Dinge, die besser für eine andere Programmiersprache geeignet sind, aber das Gleiche gilt für Python.
Hadley
6
Ahh, Hadley hat R und S + am selben Tag, an dem wir am 13. Oktober 2011 Kommentare ausgetauscht haben, von der Wikipedia-Seite entfernt. Daher höre ich oft, dass das Mantra "R wurde von und für Statistiker entwickelt" die grundlegende Stärke ist. Anscheinend ist es jetzt auch eine Allzwecksprache ...
Josh Hemann
5
Kann ich Multithread-Code mit R haben? Netzwerk asynchrone E / A? Glauben Sie mir, diese Verwendungszwecke treten tatsächlich beim wissenschaftlichen Rechnen auf. R ist meiner Meinung nach ein DSL. Es ist stark in Statistiken und schlecht in den meisten anderen Dingen.
Gael Varoquaux
61

Ich glaube nicht, dass es ein Argument dafür gibt, dass das Angebot an statistischen Paketen in Cran und Bioconductor das Angebot in anderen Sprachen bei weitem übersteigt.

In meiner Forschung verwende ich R, wenn ich kann, aber manchmal ist R einfach zu langsam. Zum Beispiel ein großer MCMC-Lauf.

Kürzlich habe ich Python und C kombiniert, um dieses Problem anzugehen. Kurze Zusammenfassung: Anpassung eines großen stochastischen Populationsmodells mit ~ 60 Parametern und Ableitung von etwa 150 latenten Zuständen mithilfe von MCMC.

  1. Lies die Daten in Python ein
  2. Konstruieren Sie die C-Datenstrukturen in Python mit ctypes .
  3. forRufen Sie mit einer Python- Schleife die C-Funktionen auf, mit denen die Parameter aktualisiert und die Wahrscheinlichkeit berechnet wurden.

Eine schnelle Berechnung ergab, dass das Programm 95% in C-Funktionen ausgegeben hat. Ich musste jedoch keinen schmerzhaften C-Code schreiben, um Daten einzulesen oder C-Datenstrukturen zu erstellen.


Ich weiß, dass es auch rpy gibt , wo Python R-Funktionen aufrufen kann. Dies kann nützlich sein, aber wenn Sie "nur" Statistiken erstellen, würde ich R verwenden.

csgillespie
quelle
29
Einfügen von schamlosen Stecker für Rcpp :)
Dirk Eddelbuettel
Ich bin gespannt, ob Sie PyMC ausprobiert haben und wie sich die Leistung (im Verhältnis zu Python / C) für Ihre Modelle verhält.
ars
@ars: Im obigen Fall umfasste jede Iteration (der 10 ^ 8 Iterationen) das Lösen von 5 ODEs. Das musste wirklich in C gemacht werden. Der Rest des Codes war ziemlich einfach und so war der C-Code einfach. Meine Bewerbung war nicht standardisiert und daher war PyMC nicht anwendbar - auch das war vor ~ 2 Jahren.
Csgillespie
36

Ich habe das in den obigen Antworten explizit erwähnte Scikit-Learn nicht gesehen . Es ist ein Python-Paket für maschinelles Lernen in Python. Es ist ziemlich jung, wächst aber extrem schnell (Haftungsausschluss: Ich bin ein Entwickler, der sich mit Scikits auskennt). Ziel ist es, standardmäßige algorithmische Tools für maschinelles Lernen in einer einheitlichen Benutzeroberfläche bereitzustellen, bei der Geschwindigkeit und Benutzerfreundlichkeit im Vordergrund stehen. Soweit ich weiß, gibt es in Matlab nichts Vergleichbares. Ihre Stärken sind:

Matlab ist ein großartiges Tool, aber in meiner eigenen Arbeit verschafft mir scipy + scikit-learn einen Vorsprung vor Matlab, da Python aufgrund seines Ansichtsmechanismus (und meiner großen Datenmengen) und des Mit scikit-learn kann ich sehr einfach verschiedene Ansätze vergleichen.

Gael Varoquaux
quelle
29

Ein Vorteil des Wechsels zu Python ist die Möglichkeit, mehr in einer Sprache zu arbeiten. Python ist eine vernünftige Wahl für das Knacken von Zahlen, das Schreiben von Websites, das Erstellen von Verwaltungsskripten usw. Wenn Sie also Ihre Statistiken in Python erstellen, müssen Sie nicht die Sprache wechseln, um andere Programmieraufgaben auszuführen.

Update: Am 26. Januar 2011 kündigte Microsoft Research Sho an , eine neue Python-basierte Umgebung für die Datenanalyse. Ich hatte noch keine Gelegenheit, es zu versuchen, aber es klingt nach einer interessanten Möglichkeit, um Python auszuführen und auch mit .NET-Bibliotheken zu interagieren.

John D. Cook
quelle
4
Ich habe eine Menge Zahlen berechnet, eine Website und ein paar administrative Skripte in R und sie funktionieren ganz gut.
28

Vielleicht ist diese Antwort ein Betrug, aber es scheint seltsam, dass niemand das RPY- Projekt erwähnt hat, das eine Schnittstelle zwischen R und Python bietet. Sie erhalten eine pythonische API für die meisten Funktionen von R, während Sie die (ich würde mich als angenehmer erachten) Syntax, die Datenverarbeitung und in einigen Fällen die Geschwindigkeit von Python beibehalten. Es ist unwahrscheinlich, dass Python jemals so viele aktuelle Statistik-Tools wie R haben wird, nur weil R ein dsl ist und die Statistik-Community mehr in R investiert ist als möglicherweise jede andere Sprache.

Ich betrachte dies als analog zur Verwendung eines ORM, um die Vorteile von SQL zu nutzen, während Python Python und SQL SQL ist.

Andere nützliche Pakete speziell für Datenstrukturen sind:

  • pydataframe repliziert einen data.frame und kann mit rpy verwendet werden. Ermöglicht die Verwendung von R-ähnlichen Filtern und Operationen.
  • pyTables Verwendet den schnellen hdf5-Datentyp, den es schon seit Ewigkeiten gibt
  • h5py Auch hdf5, aber speziell auf die Zusammenarbeit mit Numpy ausgerichtet
  • pandas Ein weiteres Projekt, das data.frame-ähnliche Daten verwaltet, arbeitet mit rpy, pyTables und numpy
Griffith Rees
quelle
1
Ich habe immer rpy schlampig gefunden, um damit zu arbeiten. Es erfordert beispielsweise große Codezeilen mit einigen einfachen Funktionen.
Néstor,
Vielleicht kann die rmagic-Erweiterung für IPython (auf die @CarlSmith hingewiesen hat) die Arbeit mit rpy2 erleichtern? Siehe ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan
26

Ich bin ein Biostatistiker in einem R-Laden (~ 80 Leute benutzen R als primäres Werkzeug). Trotzdem verbringe ich ungefähr 3/4 meiner Zeit mit Python. Ich schreibe dies in erster Linie auf die Tatsache zurück, dass meine Arbeit bayesianische und maschinelle Lernansätze zur statistischen Modellierung umfasst. Python kommt dem Performance / Productivity Sweet Spot viel näher als R, zumindest bei iterativen oder simulationsbasierten statistischen Methoden. Wenn ich ANOVAS, Regressionen und statistische Tests durchführen würde, würde ich sicher hauptsächlich R verwenden. Das meiste, was ich brauche, ist jedoch nicht als R-Paket in Dosen erhältlich.

Fonnesbeck
quelle
5
+1 zur Unterscheidung, in welchem ​​Bereich der Statistik Sie arbeiten. Es gibt Bereiche der statistischen Datenverarbeitung (z. B. unstrukturierte Textanalyse und Computer Vision), für die in Python viele Funktionen zur Verfügung stehen, und Python scheint die Verkehrssprache in diesen Unterdomänen zu sein. Ich denke, die Python-Community muss nachholen, indem sie die Datenstrukturen und die Semantik der klassischen statistischen Modellierung verbessert, in denen Rs Design so gut ist. Die Entwickler von scikits.statsmodels machen auf diesem Gebiet große Fortschritte: scikits.appspot.com/statsmodels
Josh Hemann 13.10.11
26

Ich möchte sagen, dass ich vom Standpunkt einer Person aus, die sich bei meiner statistischen Arbeit stark auf lineare Modelle stützt und Python für andere Aspekte meines Jobs liebt, von Python als Plattform für alles andere als recht einfache Statistiken sehr enttäuscht bin .

Ich finde, dass R von der statistischen Community viel besser unterstützt wird, dass lineare Modelle viel besser implementiert werden und dass Python, um ehrlich zu sein, auch bei exzellenten Distributionen wie Enthought ein bisschen wie der Wilde Westen ist.

Und wenn Sie nicht alleine arbeiten, ist die Wahrscheinlichkeit, dass Sie Mitarbeiter haben, die Python für Statistiken verwenden, derzeit recht gering.

Fomite
quelle
26

Es ist sowieso nicht nötig, R für Python aufzugeben. Wenn Sie IPython mit einem vollständigen Stapel verwenden, verfügen Sie über die Erweiterungen R, Octave und Cython, sodass Sie diese Sprachen problemlos und sauber in Ihren IPython-Notizbüchern verwenden können. Sie können auch Werte zwischen ihnen und Ihrem Python-Namespace übergeben. Sie können Ihre Daten mit matplotlib als Diagramme und als ordnungsgemäß gerenderte mathematische Ausdrücke ausgeben. Es gibt unzählige andere Funktionen, und Sie können dies alles in Ihrem Browser tun.

IPython hat einen langen Weg zurückgelegt :)

Carl Smith
quelle
19

Was Sie suchen, heißt Sage: http://www.sagemath.org/

Es ist eine hervorragende Online-Schnittstelle zu einer gut aufgebauten Kombination von Python-Werkzeugen für die Mathematik.

Adam
quelle
4
Das Geniale an Sage ist, dass es im Wesentlichen die Vereinigung einer Reihe großartiger kostenloser Tools für Mathematik, Statistik, Datenanalyse usw. ist. Es ist mehr als nur Python; Es hat Zugriff auf R, Maxima, GLPK, GSL und mehr.
Shabbychef
18

Rpy2 - mit R spielen bleiben in Python ...

Weitere Ausarbeitung nach Gungs Wunsch:

Die Rpy2-Dokumentation finden Sie unter http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

Aus der Dokumentation geht hervor, dass die übergeordnete Schnittstelle in rpy2 die Verwendung von R durch Python-Programmierer erleichtern soll. R-Objekte werden als Instanzen von in Python implementierten Klassen verfügbar gemacht, wobei R in einigen Fällen als gebundene Methoden für diese Objekte fungiert. Dieser Abschnitt enthält auch eine Einführung in Grafiken mit R: Trellis (Gitter) -Diagrammen sowie die in ggplot2 implementierte Grammatik von Grafiken, mit der komplexe und informative Diagramme mit wenig geschriebenem Code erstellt werden können, während die zugrunde liegenden Gittergrafiken alle möglichen Anpassungen ermöglichen.

Warum ich es mag:

Ich kann meine Daten mit der Flexibilität von Python verarbeiten, sie mit Numpy oder Pandas in eine Matrix verwandeln und die Berechnung in R ausführen und r-Objekte für die Nachbearbeitung zurückholen. Ich benutze Ökonometrie und Python wird einfach nicht die neuesten Statistiken von R haben. Und R wird wahrscheinlich nie so flexibel sein wie Python. Das setzt voraus, dass du R verstehst. Zum Glück hat es eine nette Entwickler-Community.

Rpy2 selbst wird gut unterstützt und der Gentleman, der es unterstützt, besucht die SO-Foren. Windows - Installation möglicherweise ein leichter Schmerz - https://stackoverflow.com/questions/5068760/bizzarre-issue-trying-to-make-rpy2-2-1-9-work-with-r-2-12-1-using -python-2-6-un? rq = 1 könnte helfen.

pythOnometrist
quelle
1
Willkommen auf der Website, @pythOnometrist. Ich vermute, dass dies ein hilfreicher Beitrag ist. Würde es Ihnen etwas ausmachen, eine kurze Zusammenfassung von Rpy2 zu geben, damit die Leser entscheiden können, ob es das ist, wonach sie suchen?
Gung
17

Ich benutze Python für statistische Analysen und Prognosen. Wie bereits erwähnt, sind Numpy und Matplotlib gute Arbeitspferde. Ich benutze ReportLab auch zur Erzeugung von PDF-Ausgaben.

Momentan beschäftige ich mich sowohl mit Resolver als auch mit Pyspread, bei denen es sich um Excel-ähnliche Tabellenkalkulationsanwendungen handelt, die auf Python basieren. Resolver ist ein kommerzielles Produkt, aber Pyspread ist immer noch Open Source. (Entschuldigung, ich bin auf nur einen Link beschränkt)

Turukawa
quelle
1
Wieder einige interessante Tools. Ich wusste von Numpy, Matplotlib und ReportLab, aber Pyspread scheint eine interessante Idee zu sein. Zumindest möchte ich Python-Ausdrücke in Tabellenzellen eingeben. Es löst zwar nicht alle möglichen Probleme, kann jedoch für das Prototyping und das Herumspielen von Daten hilfreich sein.
Fabian Fagerholm
1
+1 Wow Python-Tabellenkalkulation! Hatte noch nicht davon gehört. Ich wünschte immer, OpenOffice / LibreOffice würde Python-Skripte wirklich in ihre Tabellenkalkulationssoftware integrieren
User
15

tolle übersicht bisher. Ich benutze Python (speziell scipy + matplotlib) als Matlab-Ersatz seit 3 ​​Jahren an der Universität. Ich gehe manchmal immer noch zurück, weil ich mit bestimmten Bibliotheken vertraut bin, z. B. ist das matlab Wavelet-Paket einfach fantastisch.

Ich mag die http://enthought.com/ Python-Distribution. Es ist kommerziell, aber für akademische Zwecke kostenlos und, soweit ich weiß, vollständig Open Source. Da ich mit vielen Studenten zusammenarbeite, war es für sie vor der Verwendung von enthought manchmal schwierig, numpy, scipy, ipython usw. zu installieren. Enthought bietet ein Installationsprogramm für Windows, Linux und Mac.

Zwei weitere erwähnenswerte Pakete:

  1. ipython (kommt schon mit begeistert) tolle advanced shell. Ein gutes Intro finden Sie auf showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - das Toolkit für natürliche Sprachen http://www.nltk.org/ ein großartiges Paket für den Fall, dass Sie Statistiken / maschinelles Lernen mit einem beliebigen Korpus durchführen möchten.

kgarten
quelle
12

Dies ist eine interessante Frage mit großartigen Antworten.

Vielleicht finden Sie in einem Artikel, den ich mit Roseline Bilina geschrieben habe, eine nützliche Diskussion. Die endgültige Version ist hier zu finden: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (seitdem ist sie in fast dieser Form als "Python für einheitliche Forschung in Ökonometrie und Statistik" erschienen ", in Econometric Reviews (2012), 31 (5), 558-591).

Steve Lawford
quelle
10

Vielleicht nicht direkt verwandt, aber R hat eine schöne GUI-Umgebung für interaktive Sitzungen (bearbeiten: auf Mac / Windows). IPython ist sehr gut, aber für eine Umgebung, die Matlab ähnelt, können Sie Spyder oder IEP ausprobieren. Ich hatte in letzter Zeit mehr Glück mit IEP, aber Spyder sieht vielversprechender aus.

IEP: http://code.google.com/p/iep/

Spyder: http://packages.python.org/spyder/

Die IEP-Website enthält einen kurzen Vergleich der zugehörigen Software: http://code.google.com/p/iep/wiki/Alternatives

JMS
quelle
9

Ich habe hier ein großartiges Intro für Pandas gefunden, das ich ausprobieren möchte. Pandas ist ein erstaunliches Toolset und bietet die umfangreichen Datenanalysemöglichkeiten von R mit den umfangreichen Bibliotheken und der Produktionsqualität von Python.

Dieser Blog-Beitrag bietet eine großartige Einführung in Pandas aus der Sicht eines Anfängers:

http://manishamde.github.com/blog/2013/03/07/pandas-and-python-top-10/

Padawan
quelle
3
Könnten Sie bitte ein paar Worte darüber schreiben, welche Eigenschaften es "großartig" machen, damit die Leser im Voraus feststellen können, ob es für sie angemessen ist, es anzusehen?
Whuber
1
Es tut uns leid. Gerade wurde mir klar, dass ich in meinem ursprünglichen Beitrag den falschen Link angehängt habe.
Padawan
8

Ich sollte ein Shout-out für Sho hinzufügen, die auf IronPython basierende numerische Computerumgebung. Ich benutze es gerade für den maschinellen Lernkurs in Stanford und es war wirklich hilfreich. Es ist in lineare Algebra-Pakete und Diagrammfunktionen integriert. Als .NET ist es einfach, es mit C # oder einer anderen .NET-Sprache zu erweitern. Ich fand es viel einfacher, als Windows-Benutzer mit Python und NumPy anzufangen.

pnewhook
quelle
8

Niemand hat Orange zuvor erwähnt:

Data Mining durch visuelle Programmierung oder Python-Scripting. Komponenten für maschinelles Lernen. Add-Ons für Bioinformatik und Text Mining. Vollgepackt mit Funktionen für die Datenanalyse.

Ich benutze es nicht täglich, aber es ist ein Muss für jeden, der GUI gegenüber Kommandozeilenschnittstelle vorzieht.

Auch wenn Sie letzteres bevorzugen, ist Orange eine gute Sache, mit der Sie vertraut sein sollten, da Sie ganz einfach Teile von Orange in Ihre Python-Skripte importieren können, falls Sie einige Funktionen benötigen.

Wojciech Walczak
quelle
7

Beachten Sie, dass SPSS Statistics eine integrierte Python-Schnittstelle (auch R) hat. Auf diese Weise können Sie Python-Programme schreiben, die Statistics-Prozeduren verwenden und entweder die üblichen, gut formatierten Statistics-Ausgaben erstellen oder die Ergebnisse zur weiteren Verarbeitung an Ihr Programm zurückgeben. Oder Sie können Python-Programme im Statistik-Befehlsstrom ausführen. Sie müssen die Befehlssprache Statistik noch kennen, können jedoch alle von Statistik bereitgestellten Funktionen für die Datenverwaltung, die Präsentationsausgabe usw. sowie die Verfahren nutzen.

JKP
quelle
7

Der aktuelle Vergleich von DataCamp bietet ein klares Bild über R und Python.

Die Verwendung dieser beiden Sprachen im Bereich der Datenanalyse. Python wird im Allgemeinen verwendet, wenn die Datenanalysetasks in Web-Apps integriert werden müssen oder wenn Statistikcode in eine Produktionsdatenbank integriert werden muss. R wird hauptsächlich verwendet, wenn die Datenanalyseaufgaben ein Standalone-Computing oder eine Analyse auf einzelnen Servern erfordern.

Ich fand es in diesem Blog so nützlich und hoffe, es würde auch anderen helfen, die neuesten Trends in beiden Sprachen zu verstehen. Julia kommt auch in die Gegend. Hoffe das hilft !

Lerner
quelle
6

Ich glaube, Python ist eine hervorragende Workbench in meinem Bereich. Ich mache viel Scraping, Daten-Wrangling, große Datenmengen, Netzwerkanalyse, Bayes'sche Modellierung und Simulationen. All diese Dinge erfordern normalerweise Schnelligkeit und Flexibilität, sodass ich finde, dass Python in diesen Fällen besser funktioniert als R. Hier sind ein paar Dinge über Python, die mir gefallen (einige sind oben erwähnt, andere nicht):

-Cleaner Syntax; besser lesbarer Code. Ich glaube, dass Python eine modernere und syntaktisch konsistentere Sprache ist.

-Python bietet Notebook, Ipython und andere erstaunliche Tools für die gemeinsame Nutzung von Code, die Zusammenarbeit und das Veröffentlichen.

-iPythons Notizbuch ermöglicht es einem, R in seinem Python-Code zu verwenden, so dass es immer möglich ist, zu R zurückzukehren.

- Ohne Rückgriff auf C wesentlich schneller. Mit Cython, NUMBA und anderen Methoden der C-Integration erreichen Sie eine Geschwindigkeit, die mit der von C vergleichbar ist. Dies ist meines Wissens in R nicht möglich.

-Pandas, Numpy und Scipy blasen Standard R aus dem Wasser. Ja, es gibt einige Dinge, die R in einer einzelnen Zeile tun kann, aber Pandas 3 oder 4 benötigt. Im Allgemeinen können Pandas jedoch größere Datenmengen verarbeiten, sind einfacher zu verwenden und bieten eine unglaubliche Flexibilität in Bezug auf die Integration mit anderen Pythons Pakete und Methoden.

-Python ist stabiler. Versuchen Sie, ein 2gig-Dataset in RStudio zu laden.

-Ein ordentliches Paket, das oben nicht erwähnt zu sein scheint, ist PyMC3 - ein großartiges allgemeines Paket für die meisten Ihrer Bayes'schen Modelle.

-Einige, oben erwähnte ggplot2 und grub über seine Abwesenheit in Python. Wenn Sie jemals die Grafikfunktionen von Matlab und / oder Matplotlib in Python verwendet haben, wissen Sie, dass letztere Optionen im Allgemeinen viel leistungsfähiger sind als ggplot2.

Vielleicht ist R jedoch einfacher zu erlernen und ich verwende es häufig in Fällen, in denen ich mit den Modellierungsverfahren noch nicht allzu vertraut bin. In diesem Fall ist die Tiefe der statistischen Standardbibliotheken von R unschlagbar. Im Idealfall kenne ich beide gut genug, um sie bei Bedarf verwenden zu können.

Gene Burin
quelle
5

Für diejenigen, die unter Windows arbeiten müssen, hilft Anaconda ( https://store.continuum.io/cshop/anaconda/ ) sehr. Das Installieren von Paketen unter Windows bereitete Kopfzerbrechen. Wenn Anaconda installiert ist, können Sie eine einsatzbereite Entwicklungsumgebung mit einem Einzeiler einrichten.

Zum Beispiel mit

conda create -n stats_env python pip numpy scipy matplotlib pandas

Alle diese Pakete werden automatisch abgerufen und installiert.

Yu-Yang
quelle
5

Python hat einen langen Weg vor sich, bevor es mit R verglichen werden kann. Es hat deutlich weniger Pakete als R und von geringerer Qualität. Leute, die sich an die Grundlagen halten oder sich nur auf ihre benutzerdefinierten Bibliotheken verlassen, könnten ihre Arbeit wahrscheinlich ausschließlich in Python erledigen, aber wenn Sie jemand sind, der fortgeschrittenere quantitative Lösungen benötigt, wage ich zu sagen, dass nichts da draußen in der Nähe von R ist.

Es sollte auch beachtet werden, dass Python bis jetzt keine richtige wissenschaftliche Matlab-ähnliche IDE wie R-Studio hat (bitte sagen Sie nicht Spyder) und dass Sie alles auf der Konsole ausarbeiten müssen. Im Allgemeinen erfordert die gesamte Python-Erfahrung ein gutes Maß an "Geekness", das den meisten Menschen fehlt und das sie nicht interessieren.

Versteh mich nicht falsch, ich liebe Python, es ist eigentlich meine Lieblingssprache, die im Gegensatz zu R eine echte Programmiersprache ist. Bei der reinen Datenanalyse bin ich jedoch auf R angewiesen, die mit Abstand spezialisierteste und am weitesten entwickelte Lösung. Ich verwende Python, wenn ich Datenanalyse mit Software-Engineering kombinieren muss, z. B. um ein Tool zu erstellen, mit dem die Methoden, die ich zuerst in einem Dirty-R-Skript programmiert habe, automatisiert werden. In vielen Fällen benutze ich rpy2, um R aus Python heraus aufzurufen, weil in den allermeisten Fällen R-Pakete so viel besser sind (oder überhaupt nicht in Python existieren). Auf diese Weise versuche ich, das Beste aus beiden Welten herauszuholen.

Ich benutze immer noch Matlab für die reine Algorithmusentwicklung, da ich seine mathematische Syntax und Geschwindigkeit liebe.

Digio
quelle