Python come workbench statistico


355

Molte persone usano uno strumento principale come Excel o un altro foglio di calcolo, SPSS, Stata o R per le loro esigenze statistiche. Potrebbero rivolgersi a un pacchetto specifico per esigenze molto speciali, ma molte cose possono essere fatte con un semplice foglio di calcolo o un pacchetto di statistiche generali o un ambiente di programmazione delle statistiche.

Mi è sempre piaciuto Python come linguaggio di programmazione e, per esigenze semplici, è facile scrivere un breve programma che calcola ciò di cui ho bisogno. Matplotlib mi permette di tracciarlo.

Qualcuno è passato completamente, diciamo R, a Python? R (o qualsiasi altro pacchetto di statistiche) ha molte funzionalità specifiche per le statistiche e ha strutture di dati che ti consentono di pensare alle statistiche che desideri eseguire e meno alla rappresentazione interna dei tuoi dati. Python (o qualche altro linguaggio dinamico) ha il vantaggio di consentirmi di programmare in un linguaggio familiare di alto livello e mi permette di interagire a livello di programmazione con i sistemi del mondo reale in cui risiedono i dati o dai quali posso prendere le misure. Ma non ho trovato alcun pacchetto Python che mi permettesse di esprimere le cose con "terminologia statistica" - da semplici statistiche descrittive a metodi multivariati più complicati.

Cosa puoi consigliare se volessi usare Python come "banco di lavoro delle statistiche" per sostituire R, SPSS, ecc.?

Cosa guadagnerei e perderei, in base alla tua esperienza?


5
Cordiali saluti, c'è un nuovo subreddit di statistiche Python che si sta spegnendo: reddit.com/r/pystats
nought101

Quando è necessario spostare le cose sulla riga di comando, pythonpy ( github.com/Russell91/pythonpy ) è uno strumento utile.
RussellStewart,

Risposte:


307

È difficile ignorare la ricchezza di pacchetti statistici disponibili in R / CRAN. Detto questo, passo molto tempo nella terra di Python e non dissuaderei mai nessuno dal divertirmi quanto me. :) Ecco alcune librerie / collegamenti che potresti trovare utili per il lavoro statistico.

  • NumPy / Scipy Probabilmente li conosci già. Vorrei sottolineare il libro di cucina in cui è possibile leggere informazioni su molte strutture statistiche già disponibili e l' elenco di esempi che è un ottimo riferimento per le funzioni (compresa la manipolazione dei dati e altre operazioni). Un altro riferimento utile è Distribuzioni di John Cook in Scipy .

  • Panda Questa è una libreria davvero piacevole per lavorare con dati statistici - dati tabulari, serie temporali, dati del pannello. Include molte funzioni integrate per riepiloghi di dati, raggruppamento / aggregazione, pivot. Ha anche una libreria statistica / econometrica.

  • larry Array con etichetta che funziona bene con NumPy. Fornisce funzioni statistiche non presenti in NumPy e utili per la manipolazione dei dati.

  • python-statlib Uno sforzo abbastanza recente che ha combinato una serie di librerie di statistiche sparse. Utile per statistiche di base e descrittive se non stai usando NumPy o Panda.

  • statsmodels Modellistica statistica: modelli lineari, GLM, tra gli altri.

  • scikits Pacchetti di calcolo statistico e scientifico - in particolare livellamento, ottimizzazione e apprendimento automatico.

  • PyMC Per le vostre esigenze di modellazione bayesiana / MCMC / gerarchica. Altamente raccomandato.

  • Modelli di miscela PyMix .

  • Biopython Utile per caricare i tuoi dati biologici in Python e fornisce alcuni strumenti statistici / di apprendimento automatico rudimentali per l'analisi.

Se la velocità diventa un problema, considera Theano , usato con successo dalle persone che apprendono in profondità.

Ci sono molte altre cose là fuori, ma questo è ciò che trovo più utile secondo le linee che hai citato.


16
Tutte le risposte sono state utili e utili e meriterebbero tutte di essere accettate. Questo, tuttavia, fa un ottimo lavoro nel rispondere alla domanda: con Python, devi mettere insieme molti pezzi per fare quello che vuoi. Questi suggerimenti saranno senza dubbio molto utili per chiunque voglia fare statistiche / modellizzazione / ecc. con Python. Grazie a tutti!
Fabian Fagerholm,

1
@ars, per favore, sai qual è il modo migliore per usare Python con Windows?
Stéphane Laurent,

1
@ StéphaneLaurent Di solito installo i vari pezzi da solo, ma per un rapido avvio / installazione, potresti considerare: pythonxy .
ars

Questo script installa molte delle librerie sopra citate: fonnesbeck.github.com/ScipySuperpack
P.

Pythonxy è carino ma può diventare fastidioso se si desidera eseguire calcoli di grandi dimensioni in quanto è disponibile solo per 32 bit. Qui ci sono file binari non ufficiali per l'installazione di molti pacchetti python. Possono essere molto utili se decidi di lavorare sotto Windows. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua

140

Come piattaforma numerica e sostituto di MATLAB, Python ha raggiunto la maturità almeno 2-3 anni fa ed è ora molto meglio di MATLAB per molti aspetti. Ho provato a passare a Python da R in quel periodo, e fallito miseramente. Ci sono troppi pacchetti R che uso quotidianamente che non hanno equivalenti Python. L'assenza di ggplot2 è sufficiente per essere uno showtopper, ma ce ne sono molti altri. Inoltre, R ha una sintassi migliore per l'analisi dei dati. Considera il seguente esempio di base:

Python :

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

R :

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

Cosa ritieni più espressivo? In R, puoi pensare in termini di variabili e puoi facilmente estendere un modello, per esempio

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

Rispetto a R, Python è un linguaggio di basso livello per la costruzione di modelli.

Se avessi meno requisiti per funzioni statistiche avanzate e stavo già programmando Python su un progetto più ampio, considererei Python un buon candidato. Lo prenderei in considerazione anche quando è necessario un approccio bare-bone, sia a causa dei limiti di velocità, sia perché i pacchetti R non forniscono un vantaggio.

Per coloro che stanno facendo statistiche relativamente avanzate in questo momento , la risposta è semplice e no . In effetti, credo che Python limiterà il modo in cui pensi all'analisi dei dati. Ci vorranno alcuni anni e molti anni-uomo di sforzi per produrre i moduli sostitutivi per i 100 pacchetti R essenziali, e anche allora, Python si sentirà come un linguaggio su cui sono state sfruttate le capacità di analisi dei dati. Dato che R ha già acquisito la più grande percentuale relativa di statistici applicati in diversi campi, non vedo che ciò accadrà presto. Detto questo, è un paese libero e conosco persone che fanno statistiche in APL e C.


9
+1 Mi piace proprio questa risposta a causa dell'enfasi che hai posto su R come linguaggio statistico per lavorare con i dati usando formule e simili. Detto questo, mi aspetto un grande impatto positivo dai panda (in combinazione con statsmodels) nella comunità Python.
chl,

28
nella comunità Python, patsy sta rispondendo alla necessità di "formula", che descrivi, a volte migliorando ciò che R offre: patsy.readthedocs.org/en/v0.1.0/index.html La cosa bella di Python è che tutti questi gli aspetti sono gestiti ortogonalmente. Panda si occuperà della creazione di serie temporali e serie di dati. patsy per le formule. intorpidito per la rappresentazione e la vettorializzazione di array. statsmodels racchiude gli algoritmi delle statistiche. scipy per l'ottimizzazione e un sacco di altre cose. Il risultato sono interfacce più pulite. R, in confronto, è più maturo, ma è una palla di capelli. ../ ..
blais,

3
../ .. Penso che nel lungo periodo le forze spingano nella direzione di una sempre maggiore integrazione di Python e scoprirai che diventerà abbastanza un concorrente di R. La pulizia dei dati in R è un PIA simile rispetto a Python, e non è mai una parte banale del lavoro. - Blais
chl

9
come aggiornamento: il primo esempio nella documentazione di statsmodels è ora results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Il modello statistico è ancora molto indietro rispetto ad altri pacchetti statistici come R in termini di copertura, ma ci sono sempre più cose che puoi fare in Python prima di dover prendere un'altra lingua o un pacchetto statistico. (GEE e Mixed saranno nella prossima versione.)
Josef

4
"La cosa bella di Python è che tutti questi aspetti sono gestiti ortogonalmente ...". Non sono d'accordo su diversi aspetti. Ci sono significative sovrapposizioni tra numpy, scipy, statsmodels. Il design di R è molto più modulare ed economico. Inoltre, la maggior parte in non tutte le innovazioni concettuali nei linguaggi orientati ai dati (non solo formule, ma anche cornici di dati, una grammatica di grafica, un cursore come una grammatica di medels, knitr e la grammatica di dati ancora in sviluppo di dplyr) hanno avuto origine in R. La community di Python sembra sempre un passo indietro e si concentra eccessivamente sulle prestazioni.
gappy,

95

Per prima cosa, lasciami dire che sono d'accordo con la risposta di John D Cook: Python non è un linguaggio specifico del dominio come R, e di conseguenza, ci sarà molto di più che potrai fare con esso lungo la strada. Naturalmente, essendo R un DSL significa che gli ultimi algoritmi pubblicati in JASA saranno quasi sicuramente in R. Se stai facendo principalmente lavori ad hoc e vuoi sperimentare l'ultima tecnica di regressione del lazo, diciamo, R è difficile da battere. Se stai facendo più lavoro analitico di produzione, integrandoti con software e ambienti esistenti e preoccupato di velocità, estensibilità e manutenibilità, Python ti servirà molto meglio.

In secondo luogo, ars ha dato un'ottima risposta con buoni collegamenti. Ecco alcuni altri pacchetti che considero essenziali per il lavoro analitico in Python:

  • matplotlib per splendide grafiche di qualità editoriale.
  • IPython per una console Python interattiva avanzata. È importante sottolineare che IPython fornisce un potente framework per l'elaborazione interattiva e parallela in Python.
  • Cython per scrivere facilmente estensioni C in Python. Questo pacchetto ti consente di prendere un pezzo di codice Python a elevata intensità computazionale e convertirlo facilmente in un'estensione C. Sarai quindi in grado di caricare l'estensione C come qualsiasi altro modulo Python ma il codice verrà eseguito molto velocemente poiché è in C.
  • PyIMSL Studio per una raccolta di centinaia di algoritmi matematici e statistici accuratamente documentati e supportati. Puoi chiamare gli stessi identici algoritmi da Python e C, con quasi la stessa API e otterrai gli stessi risultati. Informativa completa: lavoro su questo prodotto, ma lo uso anche molto.
  • xlrd per leggere facilmente i file Excel.

Se vuoi un IDE / console interattivo più simile a MATLAB, dai un'occhiata a Spyder o al plug-in PyDev per Eclipse .


15
R non è una DSL nel solito senso del termine. È un linguaggio di programmazione completo e completo di Turing.
Hadley,

4
@hadley: Forse sto usando "DSL" in modo troppo colloquiale, ma per quello che vale, la pagina Wikipedia su DSL elenca esplicitamente S + e R come esempi di DSL e Python come linguaggio di uso generale. Vedi en.wikipedia.org/wiki/Domain-specific_language . Allo stesso modo, SAS è Turing completo (solo se si utilizza il componente macro IML), ma difficilmente lo chiamerei un linguaggio completo in senso pratico. Trovo R inestimabile nel mio lavoro, ma provo a programmare il più possibile usando linguaggi generici piuttosto che cercare di fare tutto in R (o Excel per quella materia).
Josh Hemann,

16
Penso che sia ingiusto includere R e S nella stessa lista di quelle altre lingue in Wikipedia - non c'è niente che non puoi fare in R che puoi fare in Python. Naturalmente ci sono molte cose che si adattano meglio ad un altro linguaggio di programmazione, ma lo stesso vale per Python.
Hadley,

6
Ah, Hadley ha rimosso R e S + dalla pagina di Wikipedia lo stesso giorno in cui ci siamo scambiati commenti, 13 ottobre 2011. Quindi, sento spesso il mantra "R è stato sviluppato da e per gli statistici" come la sua forza fondamentale. Apparentemente, ora è anche un linguaggio generico ...
Josh Hemann,

5
Bene, posso avere un codice multi-thread con R? I / O asincrono di rete? Credetemi, questi casi d'uso in realtà sorgono nell'informatica scientifica. R è una DSL, secondo me. È forte nelle statistiche e cattivo nella maggior parte delle altre cose.
Gael Varoquaux,

61

Non credo che ci sia alcun dubbio sul fatto che la gamma di pacchetti statistici in cran e Bioconductor superi di gran lunga qualsiasi cosa offerta da altre lingue, tuttavia, questa non è l'unica cosa da considerare.

Nella mia ricerca, uso R quando posso, ma a volte R è troppo lento. Ad esempio, una grande corsa MCMC.

Di recente, ho combinato Python e C per affrontare questo problema. Riassunto: adattamento di un modello di popolazione stocastica di grandi dimensioni con ~ 60 parametri e inferimento di circa 150 stati latenti usando MCMC.

  1. Leggi i dati in Python
  2. Costruisci le strutture di dati C in Python usando i tipi .
  3. Usando un forloop Python , chiama le funzioni C che hanno aggiornato i parametri e calcolato la probabilità.

Un rapido calcolo ha mostrato che il programma ha speso il 95% in funzioni C. Tuttavia, non ho dovuto scrivere un codice C doloroso per leggere i dati o costruire strutture di dati C.


So che c'è anche rpy , dove Python può chiamare funzioni R. Questo può essere utile, ma se stai "solo" facendo statistiche allora userei R.


29
Inserimento di una spina spudorata per Rcpp :)
Dirk Eddelbuettel,

curioso se hai provato PyMC e come le prestazioni confrontano (rispetto a Python / C) per i tuoi modelli.
ars

@ars: Nel caso sopra, ogni iterazione (delle 10 ^ 8 iterazioni) implicava la risoluzione di 5 ODE. Questo in realtà doveva essere fatto in C. Il resto del codice era abbastanza semplice e quindi il codice C era semplice. La mia applicazione non era standard e quindi PyMC non era applicabile - lo era anche ~ 2 anni fa.
csgillespie,


36

Non ho visto lo scikit-learn esplicitamente menzionato nelle risposte sopra. È un pacchetto Python per l'apprendimento automatico in Python. È abbastanza giovane ma cresce molto rapidamente (dichiarazione di non responsabilità: sono uno sviluppatore di scikit-learn). I suoi obiettivi sono fornire strumenti algoritmici di apprendimento automatico standard in un'interfaccia unificata con attenzione alla velocità e all'usabilità. Per quanto ne so, non puoi trovare nulla di simile in Matlab. I suoi punti di forza sono:

  • Una documentazione dettagliata , con molti esempi

  • Strumenti di apprendimento supervisionato (regressione / classificazione) di alta qualità . In particolare:

  • La capacità di eseguire la selezione del modello mediante convalida incrociata utilizzando più CPU

  • Apprendimento senza supervisione per esplorare i dati o fare una prima riduzione di dimensionalità, che può essere facilmente incatenata all'apprendimento supervisionato.

  • Open source, con licenza BSD. Se non ti trovi in ​​un ambiente puramente accademico (io sono in quello che sarebbe un laboratorio nazionale nello stato), questo è molto importante in quanto i costi di Matlab sono molto elevati e potresti pensare di derivare prodotti dal tuo lavoro.

Matlab è un ottimo strumento, ma nel mio lavoro, scipy + scikit-learn sta iniziando a darmi un vantaggio su Matlab perché Python fa un lavoro migliore con la memoria grazie al suo meccanismo di visualizzazione (e ho i big data), e perché il scikit-learn mi permette di confrontare facilmente diversi approcci.


29

Uno dei vantaggi del passaggio a Python è la possibilità di fare più lavoro in una lingua. Python è una scelta ragionevole per scricchiolare i numeri, scrivere siti Web, script amministrativi, ecc. Quindi, se fai le tue statistiche in Python, non dovresti cambiare lingua per svolgere altre attività di programmazione.

Aggiornamento: il 26 gennaio 2011 Microsoft Research ha annunciato Sho , un nuovo ambiente basato su Python per l'analisi dei dati. Non ho ancora avuto modo di provarlo, ma sembra una possibilità interessante se si desidera eseguire Python e interagire anche con le librerie .NET.


4
Ho fatto un sacco di scricchiolii di numeri, un sito Web e alcuni script amministrativi in ​​R e funzionano abbastanza bene.

28

Forse questa risposta è barare, ma sembra strano che nessuno abbia menzionato il progetto rpy , che fornisce un'interfaccia tra R e Python. Ottieni un'API Pythonic per la maggior parte delle funzionalità di R mantenendo la sintassi (direi più bella), l'elaborazione dei dati e in alcuni casi la velocità di Python. È improbabile che Python disponga di tanti strumenti statistici all'avanguardia come R, solo perché R è un dsl e la comunità delle statistiche è più investita in R di qualsiasi altra lingua.

Lo considero analogo all'utilizzo di un ORM per sfruttare i vantaggi di SQL, lasciando che Python sia Python e SQL sia SQL.

Altri pacchetti utili specifici per le strutture dati includono:

  • pydataframe replica un data.frame e può essere usato con rpy. Consente di utilizzare il filtro e le operazioni simili a R.
  • pyTables Utilizza il veloce tipo di dati hdf5 sottostante, in circolazione da anni
  • h5py Anche hdf5, ma mirato specificamente a interagire con numpy
  • PANDAS Un altro progetto che gestisce data.frame dati come, funziona con RPY, pyTables e numpy

1
Ho sempre trovato rpy sciatto con cui lavorare. Richiede grandi linee di codici con alcune semplici funzioni, ad esempio.
Néstor,

Forse l'estensione rmagic per IPython (come sottolineato da @CarlSmith) può semplificare il lavoro con rpy2? Vedi ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan,

26

Sono un biostatista in quello che è essenzialmente un negozio R (~ 80 persone usano R come strumento principale). Tuttavia, passo circa 3/4 del mio tempo a lavorare in Python. Attribuisco questo principalmente al fatto che il mio lavoro prevede approcci bayesiani e di apprendimento automatico alla modellistica statistica. Python colpisce molto più vicino al punto debole di prestazioni / produttività rispetto a R, almeno per i metodi statistici che sono iterativi o basati sulla simulazione. Se eseguissi ANOVAS, regressioni e test statistici, sono sicuro che utilizzerei principalmente R. Gran parte di ciò che mi serve, tuttavia, non è disponibile come pacchetto R fisso.


5
+1 per distinguere in quale area di statistica lavori. Ci sono aree di calcolo statistico (ad es. Analisi di testo non strutturato e visione artificiale) per cui esistono molte funzionalità in Python, e Python sembra essere la lingua franca in quei sottodomini. Penso che il punto in cui la comunità Python debba recuperare il ritardo sia il miglioramento delle strutture dei dati e della semantica attorno alla modellistica statistica classica in cui il design di R è così bravo. Gli sviluppatori di scikits.statsmodels stanno facendo molti progressi su questo fronte: scikits.appspot.com/statsmodels
Josh Hemann,

26

Vorrei dire che dal punto di vista di qualcuno che si affida fortemente a modelli lineari per il mio lavoro statistico e che ama Python per altri aspetti del mio lavoro, sono rimasto molto deluso da Python come piattaforma per fare qualsiasi cosa tranne che statistiche abbastanza elementari.

Trovo che R abbia un supporto molto migliore da parte della comunità statistica, un'implementazione molto migliore di modelli lineari, e per essere sincero dal lato statistico delle cose, anche con distribuzioni eccellenti come Enthought, Python sembra un po 'come il selvaggio West.

E a meno che tu non lavori da solo, le probabilità che tu abbia collaboratori che usano Python per le statistiche, a questo punto, sono piuttosto scarse.


26

Non c'è davvero bisogno di rinunciare a R per Python comunque. Se si utilizza IPython con uno stack completo, sono disponibili estensioni R, Octave e Cython, in modo da poter utilizzare in modo semplice e pulito quelle lingue all'interno dei notebook IPython. Hai anche il supporto per il passaggio di valori tra loro e il tuo spazio dei nomi Python. Puoi generare i tuoi dati come grafici, usando matplotlib e come espressioni matematiche rese correttamente. Ci sono tonnellate di altre funzionalità e puoi fare tutto questo nel tuo browser.

IPython ha fatto molta strada :)


19

Quello che stai cercando si chiama Sage: http://www.sagemath.org/

È un'eccellente interfaccia online per una combinazione ben costruita di strumenti Python per la matematica.


4
La parte geniale di Sage è che è essenzialmente l'unione di una serie di grandi strumenti gratuiti per matematica, statistica, analisi dei dati, ecc. È più di un semplice Python; ha accesso a R, maxima, GLPK, GSL e altro.
shabbychef,

18

Rpy2 - gioca con R resta in Python ...

Ulteriore elaborazione su richiesta di Gung:

La documentazione di Rpy2 è disponibile all'indirizzo http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

Dalla documentazione, l'interfaccia di alto livello in rpy2 è progettata per facilitare l'uso di R da parte dei programmatori Python. Gli oggetti R sono esposti come istanze di classi implementate da Python, con funzioni R come metodi associati a tali oggetti in un numero di casi. Questa sezione contiene anche un'introduzione alla grafica con grafici R: trellis (reticolo) e la grammatica della grafica implementata in ggplot2 consente di creare grafici complessi e informativi con poco codice scritto, mentre la griglia grafica sottostante consente di delineare tutte le possibili personalizzazioni.

Perchè mi piace:

Posso elaborare i miei dati usando la flessibilità di Python, trasformarli in una matrice usando numpy o panda e fare il calcolo in R, e recuperare oggetti r per eseguire la post elaborazione. Uso econometria e Python semplicemente non avrà gli strumenti di statistiche all'avanguardia di R. E R probabilmente non sarà mai flessibile come Python. Questo richiede di capire R. Fortunatamente, ha una bella comunità di sviluppatori.

Rpy2 stesso è ben supportato e il signore che lo supporta frequenta i forum SO. L'installazione di Windows potrebbe essere una leggera seccatura - 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 potrebbe aiutare.


1
Benvenuto nel sito, @pythOnometrist. Sospetto che questo sia un contributo utile. Ti dispiacerebbe dare un breve riassunto di Rpy2, in modo che i lettori possano decidere se è quello che stanno cercando?
gung

17

Uso Python per analisi statistiche e previsioni. Come menzionato da altri sopra, Numpy e Matplotlib sono buoni cavalli da lavoro. Uso anche ReportLab per produrre output PDF.

Attualmente sto esaminando sia Resolver che Pyspread, che sono applicazioni per fogli di calcolo simili a Excel basate su Python. Resolver è un prodotto commerciale ma Pyspread è ancora open-source. (Mi scuso, sono limitato a un solo link)


1
Ancora alcuni strumenti interessanti. Conoscevo Numpy, Matplotlib e ReportLab, ma Pyspread sembra un'idea interessante. Almeno vorrei digitare le espressioni Python nelle celle del foglio di calcolo. Sebbene non risolva tutti i possibili problemi, potrebbe essere utile per la prototipazione e il gioco con i dati.
Fabian Fagerholm,

1
+1 Wow fogli di calcolo in pitone! Non ne avevo ancora sentito parlare. Ho sempre desiderato che OpenOffice / LibreOffice accettasse e integrasse davvero gli script Python nel loro software per fogli di calcolo
Utente

15

ottima panoramica finora. Sto usando Python (in particolare scipy + matplotlib) come sostituto di matlab da 3 anni che lavora all'università. A volte torno ancora perché ho familiarità con librerie specifiche, ad esempio il pacchetto wavelet matlab è semplicemente fantastico.

Mi piace il http://enthought.com/ distribuzione python. È commerciale, ma gratuito per scopi accademici e, per quanto ne so, completamente open-source. Dato che sto lavorando con molti studenti, prima di usare il pensiero, a volte era difficile per loro installare intorpidimento, scipy, ipython ecc. Enthought fornisce un programma di installazione per Windows, Linux e Mac.

Altri due pacchetti degni di nota:

  1. ipython (viene già fornito con entusiasmo) ottima shell avanzata. una buona introduzione è su showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk - il toolkit in linguaggio naturale http://www.nltk.org/ ottimo pacchetto nel caso in cui si desideri eseguire alcune statistiche / apprendimento automatico su qualsiasi corpus.



10

Forse non direttamente correlato, ma R ha un bel ambiente GUI per sessioni interattive (modifica: su Mac / Windows). IPython è molto buono ma per un ambiente più vicino a quello di Matlab potresti provare Spyder o IEP. Ho avuto più fortuna di usare IEP in ritardo, ma Spyder sembra più promettente.

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

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

E il sito IEP include un breve confronto del software correlato: http://code.google.com/p/iep/wiki/Alternatives


9

Ho trovato un'ottima introduzione ai panda qui che suggerisco di provare. Pandas è un fantastico set di strumenti e fornisce le funzionalità di analisi dei dati di alto livello di R con le ampie librerie e la qualità di produzione di Python.

Questo post sul blog offre un'ottima introduzione ai panda dal punto di vista di un principiante assoluto:

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


3
Potresti per favore scrivere alcune parole su quali qualità lo rendono "fantastico" in modo che i lettori possano determinare in anticipo se visualizzarlo sarebbe appropriato per loro?
whuber

1
Scusate. Ho appena realizzato che ho allegato il link sbagliato nel mio post originale.
padawan,

8

Dovrei aggiungere un messaggio per Sho, l'ambiente di calcolo numerico basato su IronPython. Lo sto usando proprio ora per il corso di machine learning di Stanford ed è stato davvero utile. È costruito in pacchetti di algebra lineare e funzionalità di creazione di grafici. Essendo .Net è facile estenderlo con C # o qualsiasi altro linguaggio .Net. Ho trovato molto più facile iniziare, essendo un utente di Windows, che direttamente Python e NumPy.


8

Nessuno ha mai menzionato Orange prima di:

Data mining tramite programmazione visiva o script Python. Componenti per l'apprendimento automatico. Componenti aggiuntivi per bioinformatica e text mining. Ricco di funzionalità per l'analisi dei dati.

Non lo uso quotidianamente, ma è assolutamente da vedere per chiunque preferisca la GUI all'interfaccia della riga di comando.

Anche se preferisci quest'ultimo, Orange è una buona cosa da conoscere, poiché puoi facilmente importare pezzi di Orange nei tuoi script Python nel caso in cui tu abbia bisogno di alcune delle sue funzionalità.


7

Nota che SPSS Statistics ha un'interfaccia Python integrata (anche R). Quindi puoi scrivere programmi Python che usano le procedure statistiche e produrre il solito output Statistico ben formattato o restituire risultati al tuo programma per ulteriori elaborazioni. Oppure puoi eseguire i programmi Python nel flusso di comandi Statistiche. Devi ancora conoscere il linguaggio dei comandi di Statistica, ma puoi sfruttare tutta la gestione dei dati, l'output di presentazione, ecc. Che Statistica fornisce, nonché le procedure.


7

Il recente confronto di DataCamp fornisce un'immagine chiara di R e Python.

L'uso di queste due lingue nel campo dell'analisi dei dati. Python viene generalmente utilizzato quando le attività di analisi dei dati devono essere integrate con le app Web o se il codice statistico deve essere incorporato in un database di produzione. R viene utilizzato principalmente quando le attività di analisi dei dati richiedono elaborazione autonoma o analisi su singoli server.

L'ho trovato così utile in questo blog e spero che possa aiutare gli altri anche a comprendere le tendenze recenti in entrambe queste lingue. Anche Julia sta arrivando nella zona. Spero che sia di aiuto !


6

Credo che Python sia un banco di lavoro superiore nel mio campo. Faccio molto scraping, wrangling dei dati, lavoro di grandi quantità di dati, analisi di rete, modellazione bayesiana e simulazioni. Tutte queste cose in genere richiedono velocità e flessibilità, quindi in questi casi trovo che Python funzioni meglio di R. Ecco alcune cose su Python che mi piacciono (alcune sono menzionate sopra, altre no):

- Sintassi più pulita; codice più leggibile. Credo che Python sia un linguaggio più moderno e sintatticamente coerente.

-Python ha Notebook, Ipython e altri incredibili strumenti per la condivisione del codice, la collaborazione, la pubblicazione.

-Il notebook di IPython consente di utilizzare R nel proprio codice Python, quindi è sempre possibile tornare a R.

-Sostanzialmente più veloce senza ricorrere a C. L'uso di Cython, NUMBA e altri metodi di integrazione C porterà il tuo codice a una velocità paragonabile a C. puro. Questo, per quanto ne so, non può essere raggiunto in R.

-Panda, Numpy e Scipy soffiano R standard fuori dall'acqua. Sì, ci sono alcune cose che R può fare in una sola riga ma accetta Pandas 3 o 4. In generale, tuttavia, Pandas è in grado di gestire set di dati più grandi, è più facile da usare e offre un'incredibile flessibilità per quanto riguarda l'integrazione con altri Python pacchetti e metodi.

-Python è più stabile. Prova a caricare un set di dati 2gig in RStudio.

-Un pacchetto ordinato che non sembra menzionato sopra è PyMC3 - un ottimo pacchetto generale per la maggior parte della tua modellazione bayesiana.

-Alcuni, sopra menzionati ggplot2 e grub sulla sua assenza da Python. Se hai mai usato le funzionalità grafiche di Matlab e / o usato matplotlib in Python, allora saprai che queste ultime opzioni sono generalmente molto più capaci di ggplot2.

Tuttavia, forse R è più facile da imparare e lo uso spesso nei casi in cui non ho ancora familiarità con le procedure di modellazione. In tal caso, la profondità delle librerie statistiche standardizzate di R è imbattibile. Idealmente, vorrei conoscerli entrambi abbastanza bene da poterli utilizzare in caso di necessità.


5

Per coloro che devono lavorare con Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) aiuta davvero molto. L'installazione di pacchetti in Windows era un mal di testa. Con Anaconda installato, è possibile configurare un ambiente di sviluppo pronto per l'uso con una sola riga.

Ad esempio, con

conda create -n stats_env python pip numpy scipy matplotlib pandas

tutti questi pacchetti verranno recuperati e installati automaticamente.


5

Python ha ancora molta strada da fare prima che possa essere paragonato a R. Ha un numero significativamente inferiore di pacchetti rispetto a R e di qualità inferiore. Le persone che si attengono alle basi o fanno affidamento solo sulle loro librerie personalizzate potrebbero probabilmente fare il loro lavoro esclusivamente in Python ma se sei qualcuno che ha bisogno di soluzioni quantitative più avanzate, oso dire che nulla si avvicina a R là fuori.

Va anche notato che, ad oggi, Python non ha un IDE scientifico adeguato in stile Matlab paragonabile a R-Studio (per favore non dire Spyder) e devi elaborare tutto sulla console. In generale, l'intera esperienza di Python richiede una buona dose di "geekness" di cui la maggior parte delle persone non si preoccupa.

Non fraintendetemi, adoro Python, in realtà è il mio linguaggio preferito che, a differenza di R, è un vero linguaggio di programmazione. Tuttavia, quando si tratta di pura analisi dei dati, sono dipendente da R, che è di gran lunga la soluzione più specializzata e sviluppata fino ad oggi. Uso Python quando devo combinare l'analisi dei dati con l'ingegneria del software, ad esempio creare uno strumento che eseguirà l'automazione sui metodi che ho programmato per la prima volta in uno script R sporco. In molte occasioni uso rpy2 per chiamare R da Python perché nella stragrande maggioranza dei casi i pacchetti R sono molto migliori (o non esistono affatto in Python). In questo modo cerco di ottenere il meglio da entrambi i mondi.

Uso ancora alcuni Matlab per lo sviluppo di algoritmi puri poiché adoro la sua sintassi e la sua velocità in stile matematico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.