Vraag:
Python als een werkbank voor statistieken
Fabian Fagerholm
2010-08-12 15:46:45 UTC
view on stackexchange narkive permalink

Veel mensen gebruiken een hoofdtool zoals Excel of een andere spreadsheet, SPSS, Stata of R voor hun statistische behoeften. Ze kunnen een specifiek pakket gebruiken voor zeer speciale behoeften, maar er kunnen veel dingen worden gedaan met een eenvoudige spreadsheet of een algemeen stats-pakket of een stats-programmeeromgeving.

Ik heb Python altijd leuk gevonden als een programmering taal, en voor eenvoudige behoeften is het gemakkelijk om een ​​kort programma te schrijven dat berekent wat ik nodig heb. Met Matplotlib kan ik het plotten.

Is iemand volledig overgeschakeld van bijvoorbeeld R naar Python? R (of een ander statistiekenpakket) heeft veel functionaliteit die specifiek is voor statistieken, en het heeft datastructuren waarmee u kunt nadenken over de statistieken die u wilt uitvoeren en minder over de interne weergave van uw gegevens. Python (of een andere dynamische taal) heeft het voordeel dat ik kan programmeren in een vertrouwde taal van hoog niveau, en het laat me programmatisch communiceren met echte systemen waarin de gegevens zich bevinden of waaruit ik metingen kan doen. Maar ik heb geen Python-pakket gevonden waarmee ik dingen zou kunnen uitdrukken met "statistische terminologie" - van eenvoudige beschrijvende statistieken tot meer gecompliceerde multivariate methoden.

Wat kun je aanbevelen als ik Python zou willen gebruiken als een "statistische werkbank" ter vervanging van R, SPSS, enz .?

Wat zou ik winnen en verliezen, op basis van uw ervaring?

Ter info, er is een nieuwe subreddit voor python-statistieken die afgaat: http://www.reddit.com/r/pystats
Als je dingen op de opdrachtregel moet verplaatsen, is pythonpy (https://github.com/Russell91/pythonpy) een leuke tool.
26 antwoorden:
#1
+313
ars
2010-08-13 10:30:09 UTC
view on stackexchange narkive permalink

Het is moeilijk om de rijkdom aan statistische pakketten die beschikbaar zijn in R / CRAN te negeren. Dat gezegd hebbende, ik breng veel tijd door in Pythonland en zou nooit iemand ervan weerhouden zoveel plezier te hebben als ik. :) Hier zijn enkele bibliotheken / links die u wellicht nuttig vindt voor statistisch werk.

  • NumPy / Scipy Je kent deze waarschijnlijk al. Maar laat me wijzen op het kookboek waar u kunt lezen over vele statistische faciliteiten die al beschikbaar zijn en de lijst met voorbeelden die een uitstekende referentie is voor functies (inclusief gegevensmanipulatie en andere bewerkingen) . Een andere handige referentie is John Cook's Distributions in Scipy.

  • panda's Dit is echt een leuke bibliotheek om met statistische gegevens te werken - tabelgegevens, tijdreeksen, paneldata. Bevat veel ingebouwde functies voor gegevenssamenvattingen, groepering / aggregatie, pivoteren. Heeft ook een bibliotheek met statistieken / econometrie.

  • larry Gelabelde array die goed speelt met NumPy. Biedt statistische functies die niet aanwezig zijn in NumPy en goed voor datamanipulatie.

  • python-statlib Een vrij recente inspanning die een aantal verspreide statistische bibliotheken combineerde. Nuttig voor basisstatistieken en beschrijvende statistieken als u NumPy of panda's niet gebruikt.

  • statsmodels Statistische modellen: lineaire modellen, GLM's, onder andere.

  • scikits Statistische en wetenschappelijke computerpakketten - met name afvlakking, optimalisatie en machine learning.

  • PyMC Voor uw behoeften op het gebied van Bayesian / MCMC / hiërarchische modellen. Sterk aanbevolen.

  • PyMix -mengselmodellen.

  • Biopython Handig voor het laden van uw biologische gegevens in Python, en biedt een aantal rudimentaire statistische / machine learning-tools voor analyse.

Als snelheid een probleem wordt, overweeg dan Theano - met goed succes gebruikt door mensen die diep leren.

Er zijn nog veel meer dingen die er zijn, maar dit is wat ik het nuttigst vind in de zin die je noemde.

Alle antwoorden waren zowel nuttig als nuttig, en zouden het allemaal verdienen om geaccepteerd te worden. Deze beantwoordt de vraag echter heel goed: met Python moet je veel stukjes samenstellen om te doen wat je wilt. Deze aanwijzingen zullen ongetwijfeld erg handig zijn voor iedereen die statistieken / modellering / etc wil doen. met Python. Bedankt, iedereen!
@ars weet je alstublieft wat de beste manier is om Python met Windows te gebruiken?
@StéphaneLaurent Meestal installeer ik de verschillende onderdelen zelf, maar voor een snelle start / installatie zou je kunnen overwegen: [pythonxy] (http://code.google.com/p/pythonxy/).
Dit script installeert veel van de hierboven genoemde bibliotheken: http://fonnesbeck.github.com/ScipySuperpack/
Pythonxy is leuk, maar het kan vervelend worden als je grote berekeningen wilt uitvoeren, omdat het alleen beschikbaar is voor 32 bits. Hier zijn niet-officiële binaire bestanden voor het installeren van veel python-pakketten. Ze kunnen erg handig zijn als u besluit om onder vensters te werken. http://www.lfd.uci.edu/~gohlke/pythonlibs/ @StéphaneLaurent
Iemand moet een Kickstarter maken voor een Python-achtige GUI-app om statistieken te maken met al deze ingebouwde tools. Als ik Stata nog een minuut moet gebruiken, zou ik misschien iemand vermoorden ...
Is ["rpy2"] (http://rpy2.bitbucket.org/) daar ergens verborgen?Het voelt essentieel als je R vanuit Python wilt uitvoeren
Ja .. Je kunt R vanuit Python relatief gemakkelijk, native of via andere bibliotheken uitvoeren.Het belangrijkste argument voor R lijkt te zijn dat de meeste functies noodzakelijkerwijs al in R zijn verpakt of beschikbaar zijn in CRAN.Python heeft ook Spyder, Anaconda, En hoewel Python, Jupyter Notebooks ... en tegenwoordig zou ik met de populariteit van Python verwachten dat de meeste functies die beschikbaar zijn in R waarschijnlijk al beschikbaar zijn in Python. De vorige antwoorden lijken van een hele tijd geleden te zijn.Vraagt u zich af of R nog steeds beter is dan Python .. is het meer op gelijke voet?
Ook voor degenen onder u die R sterk aanbevelen, heeft u de programmeermogelijkheden van Pythons OO geprobeerd?Gebruikt u de OO-mogelijkheden in Python niet, waardoor het in feite dezelfde mogelijkheden krijgt als R?
Hoe verhoudt larry zich tot [xarry] (http://xarray.pydata.org/en/stable/why-xarray.html)?
Theano is behoorlijk verouderd.De meeste mensen gebruiken Tensorflow nu.
#2
+144
gappy
2011-10-13 21:41:40 UTC
view on stackexchange narkive permalink

Als numeriek platform en een substituut voor MATLAB, bereikte Python minstens 2-3 jaar geleden volwassenheid en is het nu in veel opzichten veel beter dan MATLAB. Ik probeerde rond die tijd van R over te schakelen naar Python, maar dat mislukte jammerlijk. Er zijn gewoon te veel R-pakketten die ik dagelijks gebruik en die geen Python-equivalent hebben. De afwezigheid van ggplot2 is genoeg om een ​​showstopper te zijn, maar er zijn er nog veel meer. Daarnaast heeft R een betere syntaxis voor gegevensanalyse. Beschouw het volgende basisvoorbeeld:

Python :

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

R :

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

Wat vindt u expressiever? In R kun je denken in termen van variabelen, en je kunt een model gemakkelijk uitbreiden naar bijvoorbeeld

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

Vergeleken met R is Python een low-level taal voor modelbouw. ​​

Als ik minder vereisten had voor geavanceerde statistische functies en Python al aan het coderen was op een grotere project, zou ik Python als een goede kandidaat beschouwen. Ik zou het ook overwegen als een kale benadering nodig is, hetzij vanwege snelheidsbeperkingen, of omdat R-pakketten geen voordeel bieden.

Voor degenen die op dit moment relatief geavanceerde statistieken doen , het antwoord is een no-brainer, en is nee . Ik geloof zelfs dat Python de manier waarop je denkt over gegevensanalyse zal beperken. Het zal een paar jaar en vele manjaren van inspanningen vergen om de module-vervangingen voor de 100 essentiële R-pakketten te produceren, en zelfs dan zal Python aanvoelen als een taal waarop gegevensanalysemogelijkheden zijn toegepast. Aangezien R al het grootste relatieve aandeel toegepaste statistici in verschillende velden heeft vastgelegd, zie ik dit niet snel gebeuren. Dat gezegd hebbende, het is een vrij land, en ik ken mensen die statistiek doen in APL en C.

+1 Ik vind dit antwoord gewoon leuk vanwege de nadruk die u legt op R als een statistische taal om met gegevens te werken met behulp van formules en dergelijke. Dat gezegd hebbende, verwacht ik een grote positieve impact van panda's (gecombineerd met statsmodels) in de Python-gemeenschap.
in de Python-gemeenschap richt patsy zich op de behoefte aan "formule", die u beschrijft, en verbetert soms wat R biedt: http: //patsy.readthedocs.org/en/v0.1.0/index.html Wat is er leuk in Python is dat al deze aspecten orthogonaal worden behandeld. Panda's zorgen voor tijdreeksen en weergave van dataframes / series. patsy voor de formules. numpy voor array-weergave en vectorisatie. statsmodels omvat statistische algo's. scipy voor optimalisatie en een heleboel andere dingen. Het resultaat is schonere interfaces. R is in vergelijking volwassener, maar is een haarbal. ../ ..
../ .. Ik denk dat de krachten op de lange termijn in de richting van meer en meer Python-integratie zullen duwen en je zult merken dat het een behoorlijke concurrent wordt van R. Het opschonen van gegevens in R is zo'n PIA vergeleken met Python, en het is nooit een triviaal onderdeel van het werk. - [blais] (http://stats.stackexchange.com/users/13247/blais)
Ik zou liever python gebruiken voor tekstmining en andere intensieve codering, terwijl ik voor grafische en statistische doeleinden, eerlijk gezegd, ik mezelf niet zie overschakelen naar een ander platform van R. Maar coderen in Python is leuk en als een volwaardige programmeertaal, doe ik dat niet Het kan geen kwaad om het samen met R en Matlab te leren.
als update: het eerste voorbeeld in de statsmodels documentatie is nu `results = smf.ols ('Lottery ~ Literacy + np.log (Pop1831)', data = dat) .fit ()`. Statsmodels loopt nog ver achter op andere statistische pakketten zoals R in termen van dekking, maar er zijn steeds meer dingen die je in Python kunt doen voordat je een andere taal of een statistisch pakket moet pakken. (GEE en Mixed komen in de volgende release.)
"Wat leuk is in Python is dat al deze aspecten orthogonaal worden afgehandeld ...". Ik ben het op een aantal punten oneens. Er is een aanzienlijke overlap tussen numpy, scipy en statsmodellen. Het ontwerp van R is veel modulair en economischer. Trouwens, de meeste van niet alle conceptuele innovaties in datageoriënteerde talen (niet alleen formules, maar ook dataframes, een grammatica van afbeeldingen, caret als grammatica van medels, knitr en de nog steeds ontwikkelende grammatica van gegevens van dplyr) zijn ontstaan ​​in R. De Python-gemeenschap lijkt altijd een stap achter te lopen en te veel gefocust op prestaties.
@gappy: komt omdat python een algemene programmeertaal is, en er zijn veel andere toepassingen die prestaties vereisen.Het is niet verwonderlijk dat dat binnenkomt in de python-statistiekencommunity.Bovendien is er tegenwoordig zoveel vraag naar big data-analyse (zelfs als dat 2 Gb-datasets op een laptop betekent), dat het begrijpelijk is dat een statistiekencommunity zich wil focussen op efficiëntie.
#3
+95
Josh Hemann
2010-08-25 10:19:47 UTC
view on stackexchange narkive permalink

Laat me eerst zeggen dat ik het eens ben met het antwoord van John D Cook: Python is geen domeinspecifieke taal zoals R, en daarom kun je er verderop nog veel meer mee doen. Als R een DSL is, betekent dit natuurlijk dat de nieuwste algoritmen die in JASA zijn gepubliceerd vrijwel zeker in R zullen staan. Als je voornamelijk ad-hocwerk doet en wilt experimenteren met de nieuwste lasso-regressietechniek, is R bijvoorbeeld moeilijk te verslaan. Als u meer analytisch werk doet, integreert met bestaande software en omgevingen, en u zich zorgen maakt over snelheid, uitbreidbaarheid en onderhoudbaarheid, zal Python u veel beter van dienst zijn.

Ten tweede gaf ars een geweldig antwoord met goede links. Hier zijn nog een paar pakketten die ik beschouw als essentieel voor analytisch werk in Python:

  • matplotlib voor prachtige grafische afbeeldingen van publicatiekwaliteit.
  • IPython voor een verbeterde, interactieve Python-console. Belangrijk is dat IPython een krachtig raamwerk biedt voor interactief, parallel computergebruik in Python.
  • Cython om gemakkelijk C-extensies in Python te schrijven. Met dit pakket kunt u een stuk computerintensieve Python-code eenvoudig converteren naar een C-extensie. Je kunt dan de C-extensie laden zoals elke andere Python-module, maar de code zal erg snel werken omdat deze zich in C bevindt.
  • PyIMSL Studio voor een verzameling van honderden van wiskundige en statistische algoritmen die grondig worden gedocumenteerd en ondersteund. Je kunt exact dezelfde algoritmen aanroepen vanuit Python en C, met bijna dezelfde API en je krijgt dezelfde resultaten. Full disclosure: ik werk aan dit product, maar ik gebruik het ook veel.
  • xlrd om gemakkelijk in Excel-bestanden te lezen.

Als je een meer MATLAB-achtige interactieve IDE / console wilt, bekijk dan Spyder, of de PyDev -plug-in voor Eclipse.

Nog een geweldig antwoord! PyIMSL Studio klinkt interessant, jammer dat het niet open source is. Er is echter enige overlap met NumPy / SciPy. In ieder geval denk ik dat dit goede tips waren voor iedereen die zijn eigen Python-statistiekwerkbank wil samenstellen!
Het is gratis zoals in bier (voor niet-commercieel gebruik), maar helaas niet vrij zoals in meningsuiting.
R is geen DSL in de gebruikelijke zin van het woord. Het is een volledige Turing-programmeertaal.
@hadley: Misschien gebruik ik "DSL" te informeel, maar voor wat het waard is, vermeldt de Wikipedia-pagina over DSL's expliciet S + en R als voorbeelden van DSL's en Python als algemene taal. Zie http://en.wikipedia.org/wiki/Domain-specific_language. In dezelfde geest is SAS Turing-compleet (alleen als de IML-macrocomponent wordt gebruikt), maar ik zou het in praktische zin nauwelijks een complete taal noemen. Ik vind R van onschatbare waarde in mijn werk, maar ik probeer zoveel mogelijk te coderen met algemene talen in plaats van alles in R (of Excel trouwens) te doen.
Ik vind het oneerlijk om R en S in dezelfde lijst op te nemen als die andere talen in Wikipedia - er is niets dat je niet kunt doen in R dat je kunt doen in Python. Natuurlijk zijn er veel dingen die beter passen bij een andere programmeertaal, maar hetzelfde geldt voor Python.
Ik zie ARE niet vermeld in het WP-artikel over DSL. Een meer correct statistisch voorbeeld lijken bugs / jags te zijn. Ik zal ze toevoegen.
Ahh, hadley verwijderde R en S + van de Wikipedia-pagina op dezelfde dag dat we opmerkingen uitwisselden, 13 oktober 2011. Dus ik hoor vaak de mantra "R is ontwikkeld door en voor statistici" als zijn fundamentele kracht. Blijkbaar is het nu ook een algemene taal ...
Kan ik multi-threaded code hebben met R?Netwerk asynchrone I / O?Geloof me, deze usecases doen zich eigenlijk voor bij wetenschappelijk computergebruik.R is naar mijn mening een DSL.Het is sterk in statistieken en slecht in de meeste andere dingen.
@hadley: Je moet waarschijnlijk ook shellscripts, PostScript, HTML + CSS3, [MediaWiki-sjablonen en meer] (http://beza1e1.tuxen.de/articles/accidentally_turing_complete.html) van die pagina verwijderen.
Ik merk dat, in de productie, als het oude het werk niet doet, het nieuwe het soms wel doet.En het is niet zo dat de basisprincipes niet ook in R.
@hadley citeert Wikipedia: * "Een domeinspecifieke taal (DSL) is een computertaal die gespecialiseerd is in een bepaald toepassingsdomein. Dit in tegenstelling tot een algemene taal (GPL), die breed toepasbaar is op domeinen, en waarin gespecialiseerde functies ontbrekenvoor een bepaald domein. "* Moeilijk te rechtvaardigen R en S + vallen niet onder deze definitie.
Ik hou van python en gebruik het, maar als R DSL is en python niet, waarom ben ik dan nog steeds aan het worstelen om een goed pakket te vinden dat eenvoudig in een OLS past met meerdere antwoorden en fatsoenlijke statistieken krijgt.Het moet zijn vleugels overal kunnen laten glijden.Er zijn een aantal dingen die gerijpt zijn in python en er zijn andere dingen die gerijpt zijn in R. Vandaag denk ik dat het gaat om het samenvoegen van dingen voor het doel, aangezien R en python slechts een hulpmiddel zijn om wat werk te volbrengen.
#4
+61
csgillespie
2010-08-12 15:59:17 UTC
view on stackexchange narkive permalink

Ik denk niet dat er enig argument is dat het aanbod aan statistische pakketten in cran en Bioconductor veel groter is dan het aanbod van andere talen, maar dat is niet het enige waar ik rekening mee moet houden.

In mijn onderzoek gebruik ik R wanneer ik kan, maar soms is R gewoon te traag. Bijvoorbeeld een grote MCMC-run.

Onlangs heb ik python en C gecombineerd om dit probleem aan te pakken. Korte samenvatting: een groot stochastisch populatiemodel passen met ~ 60 parameters en ongeveer 150 latente toestanden afleiden met MCMC.

  1. Lees de gegevens in python
  2. Construeer de C-gegevensstructuren in python met behulp van ctypes.
  3. Met behulp van een python voor lus, roep de C-functies aan die de parameters hebben bijgewerkt en de waarschijnlijkheid hebben berekend.

Een snelle berekening toonde aan dat het programma 95% aan C-functies besteedde. Ik hoefde echter geen pijnlijke C-code te schrijven om gegevens in te lezen of C-gegevensstructuren te construeren.


Ik weet dat er ook rpy is, waar python R kan noemen functies. Dit kan handig zijn, maar als je "gewoon" statistieken doet, zou ik R.

gebruiken
Schaamteloze plug invoegen voor Rcpp :)
benieuwd of je PyMC hebt geprobeerd en hoe de prestaties zich verhouden (ten opzichte van python / C) voor je modellen.
@ars: In het bovenstaande geval omvatte elke iteratie (van de 10 ^ 8 iteraties) het oplossen van 5 GDV's. Dit moest echt in C worden gedaan. De rest van de code was vrij eenvoudig en dus was de C-code duidelijk. Mijn applicatie was niet-standaard en dus was PyMC niet van toepassing - het was ook ~ 2 jaar geleden.
#5
+40
Jeromy Anglim
2010-08-12 15:58:37 UTC
view on stackexchange narkive permalink

De volgende StackOverflow-discussies kunnen nuttig zijn

Al deze discussies zijn verwijderd :-(. Misschien moet dit antwoord ook worden verwijderd?
Dat is droevig. Ik heb de links bijgewerkt om te verwijzen naar kopieën van wayback-machines.
#6
+36
Gael Varoquaux
2011-02-05 16:49:46 UTC
view on stackexchange narkive permalink

Ik heb de scikit-learn niet expliciet genoemd in de bovenstaande antwoorden. Het is een Python-pakket voor machine learning in Python. Het is vrij jong maar groeit extreem snel (disclaimer: ik ben een scikit-learn-ontwikkelaar). Het doel is om standaard algoritmische tools voor machine learning te bieden in een uniforme interface met de nadruk op snelheid en bruikbaarheid. Voor zover ik weet, kun je niets vergelijkbaars vinden in Matlab. De sterke punten zijn:

  • Een gedetailleerde documentatie, met veel voorbeelden

  • Standaard leerondersteuning van hoge kwaliteit (regressie / classificatie). Specifiek:

  • De mogelijkheid om modelselectie uit te voeren door kruisvalidatie met behulp van meerdere CPU's

  • Ongecontroleerd leren om de gegevens te verkennen of een eerste dimensionaliteitsreductie uit te voeren, die gemakkelijk kan worden gekoppeld aan leren onder supervisie.

  • Open source , BSD-licentie. Als je je niet in een puur academische omgeving bevindt (ik ben in wat een nationaal laboratorium in de staat zou zijn), is dit erg belangrijk omdat de kosten van Matlab dan erg hoog zijn en je misschien overweegt om producten uit je werk af te leiden.

Matlab is een geweldige tool, maar in mijn eigen werk begint scipy + scikit-learn me een voorsprong te geven op Matlab omdat Python het beter doet met geheugen vanwege zijn uitzicht mechanisme (en ik heb big data), en omdat de scikit-learn me in staat stelt heel gemakkelijk verschillende benaderingen te vergelijken.

#7
+29
John D. Cook
2010-08-12 17:43:41 UTC
view on stackexchange narkive permalink

Een voordeel van verhuizen naar Python is de mogelijkheid om meer werk in één taal te doen. Python is een redelijke keuze voor het maken van getallen, het schrijven van websites, administratieve scripts, enz. Dus als u uw statistieken in Python doet, hoeft u niet van taal te wisselen om andere programmeertaken uit te voeren.

Update: Op 26 januari 2011 kondigde Microsoft Research Sho aan, een nieuwe op Python gebaseerde omgeving voor gegevensanalyse. Ik heb nog geen kans gehad om het te proberen, maar het klinkt als een interessante mogelijkheid als ik Python wil draaien en ook wil communiceren met .NET-bibliotheken.

Ik heb veel getallen gekraakt, een website en een paar administratieve scripts in R gedaan en ze werken best goed.
#8
+28
Griffith Rees
2011-09-13 21:05:45 UTC
view on stackexchange narkive permalink

Misschien is dit antwoord vals spelen, maar het lijkt vreemd dat niemand het rpy -project heeft genoemd, dat een interface biedt tussen R en Python. Je krijgt een pythonische api voor de meeste functionaliteit van R met behoud van de (ik zou mooier vinden) syntaxis, gegevensverwerking en in sommige gevallen snelheid van Python. Het is onwaarschijnlijk dat Python ooit zo veel geavanceerde statistiekenhulpmiddelen zal hebben als R, alleen omdat R een dsl is en de statistiekencommunity meer in R geïnvesteerd is dan mogelijk in welke andere taal dan ook.

Ik zie dit als analoog aan een ORM gebruiken om de voordelen van SQL te benutten, terwijl Python Python is en SQL SQL is.

Andere nuttige pakketten specifiek voor datastructuren zijn:

  • pydataframe repliceert een data.frame en kan worden gebruikt met rpy. Hiermee kunt u R-achtige filtering en bewerkingen gebruiken.
  • pyTables Gebruikt het snelle hdf5-gegevenstype eronder, bestaat al eeuwen
  • h5py Ook hdf5, maar specifiek gericht op samenwerking met numpy
  • panda's Een ander project dat data.frame-achtige data beheert, werkt met rpy, pyTables en numpy
Ik heb altijd rpy slordig gevonden om mee te werken. Het vereist bijvoorbeeld grote regels codes met enkele eenvoudige functies.
Misschien kan de rmagic-extensie voor IPython (zoals aangegeven door @CarlSmith) het gemakkelijker maken om met rpy2 te werken? Zie http://ipython.org/ipython-doc/dev/config/extensions/rmagic.html.
#9
+26
Carl Smith
2012-07-24 06:09:46 UTC
view on stackexchange narkive permalink

Het is sowieso niet nodig om R voor Python op te geven. Als je IPython met een volledige stapel gebruikt, heb je de extensies R, Octave en Cython, dus je kunt die talen gemakkelijk en netjes gebruiken in je IPython-notebooks. Je hebt ook ondersteuning voor het doorgeven van waarden tussen hen en je Python-naamruimte. U kunt uw gegevens uitvoeren als plots, met behulp van matplotlib, en zoals correct weergegeven wiskundige uitdrukkingen. Er zijn tal van andere functies, en u kunt dit allemaal in uw browser doen.

IPython heeft een lange weg afgelegd :)

#10
+26
Fomite
2011-08-15 18:52:43 UTC
view on stackexchange narkive permalink

Ik zou willen zeggen dat vanuit het standpunt van iemand die sterk afhankelijk is van lineaire modellen voor mijn statistische werk, en van Python houdt voor andere aspecten van mijn werk, ik zeer teleurgesteld ben in Python omdat een platform om allesbehalve vrij eenvoudige statistieken te doen.

Ik vind dat R veel betere ondersteuning krijgt van de statistische gemeenschap, een veel betere implementatie van lineaire modellen, en om eerlijk te zijn van de statistische kant van de dingen, zelfs met uitstekende distributies zoals Enthought, Python voelt een beetje als het Wilde Westen.

En tenzij je solo werkt, is de kans dat je medewerkers hebt die Python gebruiken voor statistieken op dit moment vrij klein.

#11
+26
fonnesbeck
2011-10-13 22:34:22 UTC
view on stackexchange narkive permalink

Ik ben een biostatisticus in wat in wezen een R-winkel is (~ 80 van de mensen gebruiken R als hun belangrijkste hulpmiddel). Toch besteed ik ongeveer 3/4 van mijn tijd aan het werken in Python. Ik schrijf dit voornamelijk toe aan het feit dat mijn werk betrekking heeft op Bayesiaanse en machine learning-benaderingen van statistische modellering. Python komt veel dichter bij de sweet spot voor prestaties / productiviteit dan R, althans voor statistische methoden die iteratief of op simulatie zijn gebaseerd. Als ik ANOVAS, regressies en statistische tests zou uitvoeren, ben ik er zeker van dat ik voornamelijk R zou gebruiken. Het meeste van wat ik nodig heb, is echter niet beschikbaar als een ingeblikt R-pakket.

+1 om te onderscheiden op welk gebied van statistieken u werkt. Er zijn gebieden van statistisch computergebruik (bijv. Ongestructureerde tekstanalyse en computervisie) waarvoor veel functionaliteit bestaat in Python, en Python is schijnbaar de lingua franca in die subdomeinen. Ik denk dat de Python-gemeenschap een inhaalslag moet maken, het verbeteren van de datastructuren en semantiek rond klassieke statistische modellen, waar het ontwerp van R zo goed in is. De ontwikkelaars van scikits.statsmodels boeken veel vooruitgang op dat vlak: http://scikits.appspot.com/statsmodels
#12
+19
Adam
2011-10-13 00:40:10 UTC
view on stackexchange narkive permalink

Wat je zoekt heet Sage: http://www.sagemath.org/

Het is een uitstekende online interface voor een goed gebouwde combinatie van Python hulpmiddelen voor wiskunde.

Het briljante aan Sage is dat het in wezen _de vereniging_ is van een aantal geweldige gratis tools voor wiskunde, statistiek, data-analyse, enz. Het is meer dan alleen Python; het heeft toegang tot R, maxima, GLPK, GSL en meer.
#13
+18
pythOnometrist
2013-04-06 01:59:03 UTC
view on stackexchange narkive permalink

Rpy2 - speel met R blijf in Python ...

Verdere uitwerking op verzoek van Gung:

Rpy2-documentatie is te vinden op http: //rpy.sourceforge .net / rpy2 / doc-dev / html / introductie.html

Uit de documentatie, De interface op hoog niveau in rpy2 is ontworpen om het gebruik van R door Python-programmeurs. R-objecten worden weergegeven als instanties van door Python geïmplementeerde klassen, met R-functies als gebonden methoden voor die objecten in een aantal gevallen. Deze sectie bevat ook een inleiding tot afbeeldingen met R: trellis (lattice) plots en de grammatica van afbeeldingen geïmplementeerd in ggplot2 laat je complexe en informatieve plots maken met weinig code geschreven, terwijl de onderliggende rasterafbeeldingen alle mogelijke aanpassingen toelaten.

Waarom ik het leuk vind:

Ik kan mijn gegevens verwerken met de flexibiliteit van Python, het in een matrix veranderen met numpy of panda's en de berekening uitvoeren in R, en haal r objecten terug om de nabewerking uit te voeren. Ik gebruik econometrie en python zal simpelweg niet de meest geavanceerde statistieken van R. hebben. En R zal waarschijnlijk nooit zo flexibel zijn als python. Dit vereist wel dat je R begrijpt. Gelukkig heeft het een leuke ontwikkelaarsgemeenschap.

Rpy2 zelf wordt goed ondersteund en de heer die het ondersteunt, bezoekt de SO-forums. Windows-installatie misschien een beetje pijn - 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 kan helpen.

Welkom op de site, @pythOnometrist. Ik vermoed dat dit een nuttige bijdrage is. Zou je het erg vinden om een ​​korte samenvatting van Rpy2 te geven, zodat lezers kunnen beslissen of dit is wat ze zoeken?
#14
+17
Turukawa
2010-08-27 15:10:36 UTC
view on stackexchange narkive permalink

Ik gebruik Python voor statistische analyse en prognoses. Zoals door anderen hierboven vermeld, zijn Numpy en Matplotlib goede werkpaarden. Ik gebruik ReportLab ook voor het produceren van PDF-uitvoer.

Ik kijk momenteel naar zowel Resolver als Pyspread, dit zijn Excel-achtige spreadsheet-applicaties die zijn gebaseerd op Python. Resolver is een commercieel product, maar Pyspread is nog steeds open-source. (Excuses, ik ben beperkt tot slechts één link)

Wederom een ​​aantal interessante tools. Ik wist van Numpy, Matplotlib en ReportLab, maar Pyspread lijkt me een interessant idee. Ik zou tenminste Python-expressies in spreadsheetcellen willen typen. Hoewel het niet alle mogelijke problemen oplost, kan het goed zijn voor het maken van prototypes en het spelen met gegevens.
+1 Wow python-spreadsheets! Ik had daar nog niet van gehoord. Ik heb altijd gewild dat OpenOffice / LibreOffice Python-scripting echt zou omarmen en integreren in hun spreadsheetsoftware
#15
+15
kgarten
2011-02-06 00:31:42 UTC
view on stackexchange narkive permalink

goed overzicht tot nu toe. Ik gebruik python (met name scipy + matplotlib) als matlab-vervanging sinds 3 jaar aan de universiteit. Ik ga soms nog steeds terug omdat ik bekend ben met specifieke bibliotheken, b.v. het matlab wavelet-pakket is echt geweldig.

Ik hou van de http://enthought.com/ python-distributie. Het is commercieel, maar gratis voor academische doeleinden en, voor zover ik weet, volledig open source. Omdat ik met veel studenten werk, was het voor het gebruik van enthought soms lastig voor hen om numpy, scipy, ipython etc. te installeren. Enthought levert een installatieprogramma voor Windows, Linux en Mac.

Twee andere pakketten het vermelden waard:

  1. ipython (komt al met enthousiasme) geweldige geavanceerde shell. een goede intro staat op showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - the natural language toolkit http://www.nltk.org/ geweldig pakket voor het geval je statistieken / machine learning op een corpus wilt doen.

#16
+12
Steve Lawford
2012-10-08 19:26:14 UTC
view on stackexchange narkive permalink

Dit is een interessante vraag, met geweldige antwoorden.

Misschien vind je een nuttige discussie in een paper die ik met Roseline Bilina heb geschreven. De definitieve versie is hier: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (het is sindsdien in bijna deze vorm verschenen als "Python for Unified Research in Econometrics and Statistics ", in Econometric Reviews (2012), 31 (5), 558-591).

#17
+10
JMS
2011-02-06 10:09:24 UTC
view on stackexchange narkive permalink

Misschien niet direct gerelateerd, maar R heeft een mooie GUI-omgeving voor interactieve sessies (bewerken: op Mac / Windows). IPython is erg goed, maar voor een omgeving die dichter bij Matlab ligt, kun je Spyder of IEP proberen. Ik heb de laatste tijd meer geluk gehad met IEP, maar Spyder ziet er veelbelovender uit.

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

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

En de IEP-site bevat een korte vergelijking van gerelateerde software: http: / /code.google.com/p/iep/wiki/Alternatieven

#18
+9
Wojciech Walczak
2014-05-07 21:36:30 UTC
view on stackexchange narkive permalink

Niemand heeft Orange eerder genoemd:

Datamining door middel van visuele programmering of Python-scripting. Componenten voor machine learning. Add-ons voor bio-informatica en text mining. Boordevol functies voor data-analyse.

Ik gebruik het niet dagelijks, maar het is een must-see voor iedereen die GUI verkiest boven opdrachtregelinterface.

Zelfs als je de voorkeur geeft aan het laatste, is Orange een goede zaak om bekend mee te zijn, aangezien je gemakkelijk stukjes Orange naar je Python-scripts kunt importeren voor het geval je een deel van de functionaliteit nodig hebt.

#19
+8
pnewhook
2011-10-13 04:52:18 UTC
view on stackexchange narkive permalink

Ik zou een shout-out moeten toevoegen voor Sho, de numerieke computeromgeving gebouwd op IronPython. Ik gebruik het nu voor de Stanford machine learning-les en het is echt nuttig geweest. Het is ingebouwd in lineaire algebra-pakketten en kaartmogelijkheden. Omdat het .Net is, is het eenvoudig uit te breiden met C # of een andere .Net-taal. Ik heb het als Windows-gebruiker veel gemakkelijker gevonden om ermee aan de slag te gaan dan met Python en NumPy.

#20
+8
padawan
2013-03-17 00:13:02 UTC
view on stackexchange narkive permalink

Ik heb hier een geweldige introductie voor panda's gevonden die ik wil bekijken. Pandas is een verbazingwekkende toolset en biedt de gegevensanalysemogelijkheden op hoog niveau van R met de uitgebreide bibliotheken en productiekwaliteit van Python.

Deze blogpost geeft een geweldige introductie tot Panda's vanuit het perspectief van een complete beginner:

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

Kunt u alstublieft een paar woorden schrijven over welke kwaliteiten het "geweldig" maken, zodat lezers van tevoren kunnen bepalen of het voor hen geschikt is om het te bekijken?
Sorry. Ik realiseerde me net dat ik de verkeerde link in mijn oorspronkelijke bericht had toegevoegd.
#21
+7
JKP
2012-08-10 02:13:57 UTC
view on stackexchange narkive permalink

Merk op dat SPSS Statistics een geïntegreerde Python-interface heeft (ook R). U kunt dus Python-programma's schrijven die statistische procedures gebruiken en ofwel de gebruikelijke mooi opgemaakte statistische uitvoer produceren of resultaten naar uw programma retourneren voor verdere verwerking. Of u kunt Python-programma's uitvoeren in de statistiekopdrachtstroom. U moet nog steeds de Commandotaal Statistieken kennen, maar u kunt profiteren van al het gegevensbeheer, de uitvoer van presentaties, enz. Dat Statistieken biedt, evenals de procedures.

#22
+6
Learner
2015-05-15 12:15:02 UTC
view on stackexchange narkive permalink

Recente vergelijking van DataCamp geeft een duidelijk beeld van R en Python.

Het gebruik van deze twee talen op het gebied van gegevensanalyse. Python wordt over het algemeen gebruikt wanneer de gegevensanalysetaken moeten worden geïntegreerd met web-apps of als statistische code moet worden opgenomen in een productiedatabase. R wordt voornamelijk gebruikt wanneer de gegevensanalysetaken standalone computing of analyse op individuele servers vereisen.

Ik vond het zo nuttig in dit blog en hoop dat het anderen ook zou helpen om de recente trends in beide talen te begrijpen. Julia komt ook in de buurt. Ik hoop dat dit helpt!

#23
+6
Digio
2015-07-23 17:35:45 UTC
view on stackexchange narkive permalink

Python heeft nog een lange weg te gaan voordat het vergeleken kan worden met R. Het heeft aanzienlijk minder pakketten dan R en van mindere kwaliteit. Mensen die bij de basis blijven of alleen vertrouwen op hun aangepaste bibliotheken, kunnen waarschijnlijk hun werk uitsluitend in Python doen, maar als je iemand bent die meer geavanceerde kwantitatieve oplossingen nodig heeft, durf ik te zeggen dat niets in de buurt komt van R.

Er moet ook worden opgemerkt dat Python tot op heden geen echte wetenschappelijke Matlab-achtige IDE heeft die vergelijkbaar is met R-Studio (zeg alsjeblieft niet Spyder) en dat je alles op de console moet uitwerken. Over het algemeen vereist de hele Python-ervaring een behoorlijke hoeveelheid "geekness" die de meeste mensen missen en waar ze niet om geven.

Begrijp me niet verkeerd, ik hou van Python, het is eigenlijk mijn favoriete taal die is, in tegenstelling tot R, een echte programmeertaal. Toch ben ik als het gaat om pure data-analyse afhankelijk van R, dat verreweg de meest gespecialiseerde en ontwikkelde oplossing tot nu toe is. Ik gebruik Python als ik data-analyse moet combineren met software engineering, bijv. maak een tool die automatisering zal uitvoeren op de methoden die ik eerst in een vuil R-script heb geprogrammeerd. In veel gevallen gebruik ik rpy2 om R vanuit Python aan te roepen, omdat in de overgrote meerderheid van de gevallen R-pakketten zoveel beter zijn (of helemaal niet bestaan ​​in Python). Op deze manier probeer ik het beste van twee werelden te krijgen.

Ik gebruik nog steeds Matlab voor pure algoritme-ontwikkeling, omdat ik hou van de wiskundige syntaxis en snelheid ervan.

#24
+6
Gene Burinsky
2016-04-06 07:38:23 UTC
view on stackexchange narkive permalink

Ik geloof dat Python een superieure werkbank is in mijn vakgebied. Ik doe veel aan scraping, data-wrangling, groot data-werk, netwerkanalyse, Bayesiaanse modellering en simulaties. Al deze dingen hebben doorgaans snelheid en flexibiliteit nodig, dus ik vind dat Python in deze gevallen beter werkt dan R. Hier zijn een paar dingen over Python die ik leuk vind (sommige worden hierboven genoemd, andere niet):

-Cleaner syntax; beter leesbare code. Ik geloof dat Python een modernere en syntactisch consistente taal is.

-Python heeft Notebook, Ipython en andere geweldige tools voor het delen van codes, samenwerken en publiceren.

-iPythons notebook stelt iemand in staat om R te gebruiken in zijn Python-code, dus het is altijd mogelijk om terug te gaan naar R.

-Aanzienlijk sneller zonder een beroep te doen op C. Met behulp van Cython, NUMBA, en andere methoden van C-integratie zullen uw code op snelheden brengen die vergelijkbaar zijn met pure C. Dit kan, voor zover ik weet, niet worden bereikt in R.

-Pandas, Numpy en Scipy blazen standaard R uit van het water. Ja, er zijn een paar dingen die R in een enkele regel kan doen, maar panda's 3 of 4 nodig hebben. In het algemeen kunnen panda's grotere gegevenssets aan, zijn ze gemakkelijker te gebruiken en bieden ze ongelooflijke flexibiliteit met betrekking tot integratie met andere Python. pakketten en methoden.

-Python is stabieler. Probeer een 2gig-gegevensset in RStudio te laden.

-Een handig pakket dat hierboven niet genoemd lijkt te zijn, is PyMC3 - geweldig algemeen pakket voor de meeste van je Bayesiaanse modellen.

-Sommige, hierboven noemen ggplot2 en grub over zijn afwezigheid van Python. Als je ooit de grafische functies van Matlab en / of matplotlib in Python hebt gebruikt, weet je dat de laatste opties over het algemeen veel beter zijn dan ggplot2.

Misschien is R echter gemakkelijker te leren en gebruik ik het vaak in gevallen waarin ik nog niet zo vertrouwd ben met de modelleerprocedures. In dat geval is de diepte van de standaard statistische bibliotheken van R onverslaanbaar. Idealiter zou ik beide goed genoeg kennen om ze naar behoefte te kunnen gebruiken.

#25
+5
Yu-Yang
2015-03-18 21:54:20 UTC
view on stackexchange narkive permalink

Voor degenen die onder Windows moeten werken, helpt Anaconda ( https://store.continuum.io/cshop/anaconda/) echt veel. Het installeren van pakketten onder Windows was een probleem. Anaconda geïnstalleerd, kunt u een gebruiksklare ontwikkelomgeving opzetten met een one-liner.

Bijvoorbeeld met

  conda create -n stats_env python pip numpy scipy matplotlib panda's  

al deze pakketten worden automatisch opgehaald en geïnstalleerd.

#26
  0
Adrian Keister
2020-04-01 01:58:47 UTC
view on stackexchange narkive permalink

Ik dacht dat ik een actueler antwoord zou toevoegen dan de antwoorden. Ik ben een Python-man, door en door, en hier is waarom:

  1. Python is veruit de meest intuïtieve syntaxis van elke programmeertaal die ik ooit heb gebruikt, behalve mogelijk LabVIEW. Ik kan niet tellen hoe vaak ik 20-30 regels code in Python heb geprobeerd, en ze hebben gewerkt . Dat is zeker meer dan voor elke andere taal kan worden gezegd, zelfs LabVIEW. Dit zorgt voor een extreem snelle ontwikkeltijd.

  2. Python is performant. Dit is in andere antwoorden genoemd, maar het is voor herhaling vatbaar. Ik vind dat Python grote datasets betrouwbaar opent.

  3. De pakketten in Python halen snel de pakketten van R in. Zeker, het gebruik van Python heeft het gebruik van R de afgelopen jaren aanzienlijk overtroffen, hoewel dit argument technisch gezien natuurlijk een advertentiepopulatie is.

  4. Meer en meer vind ik leesbaarheid een van de belangrijkste eigenschappen die goede code kan bezitten, en Python is de meest leesbare taal ooit (ervan uitgaande dat je natuurlijk redelijk goede codeerpraktijken volgt). Sommige van de eerdere antwoorden hebben geprobeerd te beargumenteren dat R beter leesbaar is, maar de voorbeelden die ze hebben getoond, bewijzen allemaal het tegenovergestelde voor mij: Python is beter leesbaar dan R, en het is ook veel sneller om te leren. Ik heb de basis Python in een week geleerd!

  5. De Lambda Labs Stack is een nieuwere tool dan Anaconda, en naar mijn mening een verbetering. Het nadeel: je kunt het alleen installeren in Ubuntu 16.04, 18.04 en 20.04, en de Ubuntu-derivaten in die versies. Het voordeel: u krijgt alle standaard GPU-versnelde pakketten voor u beheerd, helemaal tot aan de hardwarestuurprogramma's. Anaconda doet dat niet. De Lambda Labs-stack onderhoudt compatibele versienummers helemaal van uw Theano- of Keras-versie tot de NVIDIA GPU-stuurprogrammaversie. Zoals u waarschijnlijk weet, is dit geen triviale taak. Als het gaat om machine learning, is Python zonder twijfel koning. En GPU-versnelling is iets waar de meeste dataprofessionals niet zonder kunnen.

  6. Python heeft nu een buitengewoon goed doordachte IDE: PyCharm. Naar mijn mening is dit wat serieuze Python-ontwikkelaars zouden moeten gebruiken - zeker NIET Jupyter-notebooks. Hoewel veel mensen Visual Studio Code gebruiken, vind ik PyCharm de beste IDE voor Python. Je krijgt alles wat je praktisch zou willen: IPython, terminal, geavanceerde foutopsporingshulpmiddelen inclusief een in-memory rekenmachine en integratie van broncodecontrole.

  7. Veel mensen hebben gezegd dat de statistiekenpakketten van Python niet zo compleet zijn als die van R. Ongetwijfeld is dat nog steeds enigszins waar (hoewel zie 3 hierboven). Aan de andere kant heb ik die ongelooflijk geavanceerde statistiekenpakketten niet nodig. Ik wacht liever op geavanceerde statistische analyse tot ik de zakelijke vraag die wordt gesteld volledig begrijp. Vaak is een relatief eenvoudig algoritme voor het berekenen van een metriek de oplossing voor het probleem, in welk geval Python een uitstekende tool is voor het berekenen van metrieken.

  8. Veel mensen houden ervan om R's vermogen om krachtige dingen te doen in slechts één regel code aan te prijzen. Naar mijn mening is dat geen erg goed argument. Is die ene regel code leesbaar? Typische code wordt één keer geschreven en tien keer gelezen! Leesbaarheid telt, zoals de Zen van Python het stelt. Ik heb liever meerdere regels leesbare Python-code dan één cryptische regel R-code (niet dat dat natuurlijk de enige keuzes zijn; ik wil alleen maar erop wijzen dat minder regels code niet gelijk staat aan een grotere leesbaarheid). / p>

  9. Overigens kan ik het gewoon niet laten om een ​​opmerking over SAS te maken, ook al is het een beetje off-topic. Zoals ik al eerder zei, heb ik de basis Python in een week geleerd. Toen probeerde ik SAS. Ik heb ongeveer drie hoofdstukken van een boek met elf hoofdstukken over SAS doorgewerkt, en het kostte me twee maanden! Bovendien, wanneer ik iets probeerde, werkte het de eerste keer nooit . Ik zou u STERK willen aansporen om SAS zo snel mogelijk te verlaten. Het heeft een extreem ingewikkelde syntaxis, is buitengewoon meedogenloos, enz. Het enige goede dat erover kan worden gezegd, is dat de statistische mogelijkheden zo compleet zijn als die van R. Whoopty doen.

Dus daar heb je het. Python helemaal!



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...