Python como banco de trabajo de estadísticas

355

Mucha gente usa una herramienta principal como Excel u otra hoja de cálculo, SPSS, Stata o R para sus necesidades estadísticas. Pueden recurrir a algún paquete específico para necesidades muy especiales, pero se pueden hacer muchas cosas con una simple hoja de cálculo o un paquete de estadísticas generales o un entorno de programación de estadísticas.

Siempre me ha gustado Python como lenguaje de programación, y para necesidades simples, es fácil escribir un programa corto que calcule lo que necesito. Matplotlib me permite trazarlo.

¿Alguien ha cambiado completamente de, digamos R, a Python? R (o cualquier otro paquete de estadísticas) tiene muchas funciones específicas para las estadísticas, y tiene estructuras de datos que le permiten pensar en las estadísticas que desea realizar y menos en la representación interna de sus datos. Python (o algún otro lenguaje dinámico) tiene el beneficio de permitirme programar en un lenguaje familiar de alto nivel, y me permite interactuar programáticamente con sistemas del mundo real en los que residen los datos o desde los cuales puedo tomar medidas. Pero no he encontrado ningún paquete de Python que me permita expresar cosas con "terminología estadística", desde estadísticas descriptivas simples hasta métodos multivariados más complicados.

¿Qué me puede recomendar si quisiera usar Python como un "banco de trabajo de estadísticas" para reemplazar R, SPSS, etc.?

¿Qué ganaría y perdería, según su experiencia?

Fabian Fagerholm
fuente
55
Para su información, hay un nuevo subreddit de estadísticas de Python que se está apagando: reddit.com/r/pystats
naught101
Cuando necesite mover cosas en la línea de comando, pythonpy ( github.com/Russell91/pythonpy ) es una buena herramienta.
RussellStewart

Respuestas:

307

Es difícil ignorar la gran cantidad de paquetes estadísticos disponibles en R / CRAN. Dicho esto, paso mucho tiempo en Python land y nunca disuadiría a nadie de divertirse tanto como yo. :) Aquí hay algunas bibliotecas / enlaces que pueden resultarle útiles para el trabajo estadístico.

  • NumPy / Scipy Probablemente ya sepas sobre esto. Pero permítanme señalar el Cookbook donde puede leer sobre muchas facilidades estadísticas ya disponibles y la Lista de ejemplos, que es una gran referencia para las funciones (incluida la manipulación de datos y otras operaciones). Otra referencia útil son las distribuciones de John Cook en Scipy .

  • pandas Esta es una biblioteca realmente agradable para trabajar con datos estadísticos: datos tabulares, series de tiempo, datos de panel. Incluye muchas funciones integradas para resúmenes de datos, agrupación / agregación, pivote. También tiene una biblioteca de estadísticas / econometría.

  • Larry Matriz etiquetada que juega bien con NumPy. Proporciona funciones estadísticas que no están presentes en NumPy y que son buenas para la manipulación de datos.

  • python-statlib Un esfuerzo bastante reciente que combinó varias bibliotecas de estadísticas dispersas. Útil para estadísticas básicas y descriptivas si no está utilizando NumPy o pandas.

  • statsmodels Modelado estadístico: modelos lineales, GLM, entre otros.

  • scikits Paquetes informáticos estadísticos y científicos: notablemente suavizado, optimización y aprendizaje automático.

  • PyMC Para sus necesidades de modelado jerárquico / bayesiano / MCMC. Muy recomendable.

  • Modelos PyMix Mixture.

  • Biopython Útil para cargar sus datos biológicos en python, y proporciona algunas herramientas rudimentarias de estadística / aprendizaje automático para el análisis.

Si la velocidad se convierte en un problema, considere Theano , utilizado con buen éxito por las personas de aprendizaje profundo.

Hay muchas otras cosas por ahí, pero esto es lo que considero más útil en la línea que mencionaste.

ars
fuente
16
Todas las respuestas fueron útiles y útiles, y todas merecerían ser aceptadas. Sin embargo, este hace un muy buen trabajo al responder la pregunta: con Python, tienes que juntar muchas piezas para hacer lo que quieres. Estos indicadores sin duda serán muy útiles para cualquiera que quiera hacer estadísticas / modelado / etc. con Python ¡Gracias a todos!
Fabian Fagerholm
1
@ars, ¿sabe cuál es la mejor manera de usar Python con Windows?
Stéphane Laurent
1
@ StéphaneLaurent Por lo general, instalo varias piezas yo mismo, pero para un inicio / instalación rápido, puede considerar: pythonxy .
ars
Este script instala muchas de las bibliotecas citadas anteriormente: fonnesbeck.github.com/ScipySuperpack
Fr.
Pythonxy es agradable, pero puede ser molesto si desea realizar grandes cálculos, ya que solo está disponible para 32 bits. Aquí hay binarios no oficiales para instalar muchos paquetes de Python. Pueden ser bastante útiles si decide trabajar bajo Windows. lfd.uci.edu/~gohlke/pythonlibs @ StéphaneLaurent
JEquihua
140

Como plataforma numérica y sustituto de MATLAB, Python alcanzó la madurez hace al menos 2-3 años, y ahora es mucho mejor que MATLAB en muchos aspectos. Traté de cambiarme a Python desde R por esa época, y fallé miserablemente. Hay demasiados paquetes de R que uso a diario que no tienen el equivalente de Python. La ausencia de ggplot2 es suficiente para ser un showtopper, pero hay muchos más. Además de esto, R tiene una mejor sintaxis para el análisis de datos. Considere el siguiente ejemplo básico:

Python :

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

R :

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

¿Qué consideras más expresivo? En R, puede pensar en términos de variables y puede extender fácilmente un modelo, por ejemplo,

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

En comparación con R, Python es un lenguaje de bajo nivel para la construcción de modelos.

Si tuviera menos requisitos para funciones estadísticas avanzadas y ya estuviera codificando Python en un proyecto más grande, consideraría a Python como un buen candidato. También lo consideraría cuando se necesita un enfoque básico, ya sea por limitaciones de velocidad o porque los paquetes R no proporcionan una ventaja.

Para aquellos que están haciendo estadísticas relativamente avanzadas en este momento , la respuesta es obvia y no . De hecho, creo que Python limitará su forma de pensar sobre el análisis de datos. Tomará algunos años y muchos años de esfuerzos para producir los reemplazos de módulos para los 100 paquetes R esenciales, e incluso entonces, Python se sentirá como un lenguaje en el que se han incorporado las capacidades de análisis de datos. Dado que R ya ha capturado la mayor proporción relativa de estadísticos aplicados en varios campos, no veo que esto suceda pronto. Dicho esto, es un país libre, y conozco personas que realizan estadísticas en APL y C.

gappy
fuente
99
+1 Simplemente me gusta esta respuesta debido al énfasis que pones en R como lenguaje estadístico para trabajar con datos usando fórmulas y similares. Dicho esto, espero un gran impacto positivo de los pandas (combinados con modelos de estadísticas) en la comunidad de Python.
chl
28
en la comunidad de Python, patsy está abordando la necesidad de una "fórmula", que usted describe, a veces mejorando lo que R ofrece: patsy.readthedocs.org/en/v0.1.0/index.html Lo bueno de Python es que todo esto Los aspectos se manejan ortogonalmente. Los pandas se encargarán de la serie de tiempo y la representación de marcos de datos / series. patsy para las fórmulas. numpy para representación de matriz y vectorización. statsmodels envuelve estadísticas algos. Scipy para la optimización y un montón de otras cosas. El resultado son interfaces más limpias. R, en comparación, es más maduro, pero es una bola de pelo. ../ ..
blais
3
../ .. Creo que a la larga las fuerzas empujarán en la dirección de más y más integración de Python y encontrará que se convertirá en un gran competidor para R. La limpieza de datos en R es un PIA comparado con Python, y nunca es una parte trivial del trabajo. - blais
chl
99
como una actualización: el primer ejemplo en la documentación de statsmodels es ahora results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit(). Statsmodels todavía está muy por detrás de otros paquetes estadísticos como R en términos de cobertura, pero hay más y más cosas que puede hacer en python antes de tener que tomar otro idioma o paquete estadístico. (GEE y Mixed estarán en el próximo lanzamiento.)
Josef
44
"Lo bueno de Python es que todos estos aspectos se manejan ortogonalmente ...". No estoy de acuerdo en varios aspectos. Hay una superposición significativa entre modelos numpy, scipy, stats. El diseño de R es mucho más modular y económico. Además, la mayoría de las innovaciones conceptuales no están en los lenguajes orientados a datos (no solo fórmulas, sino también marcos de datos, una gramática de gráficos, caret como una gramática de medels, knitr y la gramática de datos de dplyr aún en desarrollo) se han originado en R. La comunidad de Python parece estar siempre un paso atrás y demasiado centrada en el rendimiento.
Gappy
95

Primero, déjame decirte que estoy de acuerdo con la respuesta de John D Cook: Python no es un lenguaje específico de dominio como R, y en consecuencia, hay mucho más que podrás hacer con él más adelante. Por supuesto, R siendo un DSL significa que los últimos algoritmos publicados en JASA seguramente estarán en R. Si está haciendo un trabajo principalmente ad hoc y quiere experimentar con la última técnica de regresión de lazo, digamos, R es difícil de superar. Si realiza más trabajo analítico de producción, se integra con el software y los entornos existentes y le preocupa la velocidad, la extensibilidad y la capacidad de mantenimiento, Python le servirá mucho mejor.

En segundo lugar, ars dio una gran respuesta con buenos enlaces. Aquí hay algunos paquetes más que considero esenciales para el trabajo analítico en Python:

  • matplotlib para hermosos gráficos de calidad de publicación.
  • IPython para una consola Python interactiva mejorada. Es importante destacar que IPython proporciona un marco poderoso para la computación interactiva y paralela en Python.
  • Cython para escribir fácilmente extensiones C en Python. Este paquete le permite tomar una porción de código Python computacionalmente intensivo y convertirlo fácilmente a una extensión C. Luego podrá cargar la extensión C como cualquier otro módulo de Python, pero el código se ejecutará muy rápido ya que está en C.
  • PyIMSL Studio para una colección de cientos de algoritmos matemáticos y estadísticos que están completamente documentados y respaldados. Puede llamar exactamente los mismos algoritmos de Python y C, con casi la misma API y obtendrá los mismos resultados. Divulgación completa: trabajo en este producto, pero también lo uso mucho.
  • xlrd para leer en archivos Excel fácilmente.

Si desea una consola / IDE interactiva más parecida a MATLAB, consulte Spyder o el complemento PyDev para Eclipse .

revs Josh Hemann
fuente
15
R no es un DSL en el sentido habitual del término. Es un lenguaje de programación completo y completo de Turing.
Hadley
44
@hadley: Quizás estoy usando "DSL" también coloquialmente, pero por lo que vale, la página de Wikipedia en DSL enumera explícitamente S + y R como ejemplos de DSL y Python como lenguaje de propósito general. Ver en.wikipedia.org/wiki/Domain-specific_language . En la misma línea, SAS es Turing completo (solo si se usa el componente macro IML), pero difícilmente lo llamaría un lenguaje completo en un sentido práctico. Encuentro que R es invaluable en mi trabajo, pero trato de codificar utilizando lenguajes de propósito general tanto como sea posible en lugar de tratar de hacer todo en R (o Excel para el caso).
Josh Hemann
16
Creo que es injusto incluir R y S en la misma lista que esos otros idiomas en wikipedia: no hay nada que no puedas hacer en R que puedas hacer en python. Por supuesto, hay muchas cosas que se adaptan mejor a otro lenguaje de programación, pero lo mismo ocurre con Python.
hadley
66
Ahh, Hadley eliminó R y S + de la página de Wikipedia el mismo día que intercambiamos comentarios, 13 de octubre de 2011. Entonces, a menudo escucho el mantra "R fue desarrollado por y para estadísticos" como su fuerza fundamental. Aparentemente, ahora también es un lenguaje de propósito general ...
Josh Hemann
55
Bueno, ¿puedo tener un código multiproceso con R? Red de E / S asíncrona? Créame, estos casos de uso surgen realmente en la informática científica. R es una DSL, en mi opinión. Es fuerte en las estadísticas y malo en la mayoría de las otras cosas.
Gael Varoquaux
61

No creo que haya ningún argumento de que la gama de paquetes estadísticos en cran y Bioconductor supere con creces cualquier cosa que se ofrezca desde otros idiomas, sin embargo, eso no es lo único que se debe considerar.

En mi investigación, uso R cuando puedo pero a veces R es demasiado lento. Por ejemplo, una gran ejecución MCMC.

Recientemente, combiné Python y C para abordar este problema. Breve resumen: ajustar un modelo de población estocástica grande con ~ 60 parámetros e inferir alrededor de 150 estados latentes usando MCMC.

  1. Leer en los datos en python
  2. Construya las estructuras de datos C en python usando ctypes .
  3. Usando un forbucle de python , llame a las funciones de C que actualizaron los parámetros y calcularon la probabilidad.

Un cálculo rápido mostró que el programa gastó el 95% en funciones de C. Sin embargo, no tuve que escribir código C doloroso para leer datos o construir estructuras de datos C.


Sé que también hay rpy , donde python puede llamar a las funciones R. Esto puede ser útil, pero si "solo" hace estadísticas, entonces usaría R.

csgillespie
fuente
29
Insertar un enchufe descarado para Rcpp :)
Dirk Eddelbuettel
Curioso si ha probado PyMC y cómo se compara el rendimiento (en relación con Python / C) para sus modelos.
ars
@ars: en el caso anterior, cada iteración (de las 10 ^ 8 iteraciones) implicaba resolver 5 ODE. Esto realmente tenía que hacerse en C. El resto del código era bastante simple y, por lo tanto, el código C era sencillo. Mi aplicación no era estándar, por lo que PyMC no era aplicable, también lo fue hace ~ 2 años.
csgillespie
36

No he visto el scikit-learn mencionado explícitamente en las respuestas anteriores. Es un paquete de Python para el aprendizaje automático en Python. Es bastante joven pero crece extremadamente rápido (descargo de responsabilidad: soy un desarrollador de scikit-learn). Sus objetivos son proporcionar herramientas algorítmicas de aprendizaje automático estándar en una interfaz unificada con un enfoque en la velocidad y la usabilidad. Que yo sepa, no puedes encontrar nada similar en Matlab. Sus puntos fuertes son:

  • Una documentación detallada , con muchos ejemplos.

  • Herramientas de aprendizaje supervisado estándar de alta calidad (regresión / clasificación). Específicamente:

  • La capacidad de realizar la selección de modelos mediante validación cruzada utilizando múltiples CPU

  • Aprendizaje no supervisado para explorar los datos o hacer una reducción de la primera dimensionalidad, que puede encadenarse fácilmente al aprendizaje supervisado.

  • Código abierto, licencia BSD. Si no se encuentra en un entorno puramente académico (estoy en lo que sería un laboratorio nacional en el estado), esto es muy importante ya que los costos de Matlab son muy altos y podría estar pensando en obtener productos de su trabajo.

Matlab es una gran herramienta, pero en mi propio trabajo, scipy + scikit-learn está comenzando a darme una ventaja sobre Matlab porque Python hace un mejor trabajo con la memoria debido a su mecanismo de visualización (y tengo grandes datos), y porque el scikit-learn me permite comparar fácilmente diferentes enfoques.

Gael Varoquaux
fuente
29

Un beneficio de mudarse a Python es la posibilidad de hacer más trabajo en un idioma. Python es una opción razonable para descifrar números, escribir sitios web, secuencias de comandos administrativas, etc. Por lo tanto, si realiza sus estadísticas en Python, no tendría que cambiar de idioma para realizar otras tareas de programación.

Actualización: El 26 de enero de 2011, Microsoft Research anunció Sho , un nuevo entorno basado en Python para el análisis de datos. Todavía no he tenido la oportunidad de probarlo, pero parece una posibilidad interesante si quiero ejecutar Python y también interactuar con las bibliotecas .NET.

John D. Cook
fuente
44
He hecho muchos cálculos numéricos, un sitio web y algunos scripts administrativos en R y están funcionando bastante bien.
28

Quizás esta respuesta sea una trampa, pero parece extraño que nadie haya mencionado el proyecto rpy , que proporciona una interfaz entre R y Python. Obtiene una API pitónica para la mayoría de las funcionalidades de R mientras conserva la sintaxis (diría mejor), el procesamiento de datos y, en algunos casos, la velocidad de Python. Es poco probable que Python tenga alguna vez tantas herramientas de estadísticas de vanguardia como R, solo porque R es un dsl y la comunidad de estadísticas está más invertida en R que posiblemente en cualquier otro idioma.

Veo esto como análogo al uso de un ORM para aprovechar las ventajas de SQL, al tiempo que permite que Python sea Python y SQL sea SQL.

Otros paquetes útiles específicamente para estructuras de datos incluyen:

  • pydataframe replica un data.frame y se puede usar con rpy. Le permite utilizar filtros y operaciones tipo R.
  • pyTables Utiliza el tipo de datos hdf5 rápido debajo, que existe desde hace siglos
  • h5py También hdf5, pero específicamente dirigido a interoperar con numpy
  • pandas Otro proyecto que gestiona data.frame como data, funciona con rpy, pyTables y numpy
Griffith Rees
fuente
1
Siempre he encontrado rpy descuidado para trabajar. Requiere grandes líneas de códigos con algunas funciones simples, por ejemplo.
Néstor
¿Quizás la extensión rmagic para IPython (como lo señaló @CarlSmith) puede facilitar el trabajo con rpy2? Ver ipython.org/ipython-doc/dev/config/extensions/rmagic.html .
Jonathan
26

Soy un bioestadístico en lo que es esencialmente una tienda R (~ 80 de las personas usan R como su herramienta principal). Aún así, paso aproximadamente 3/4 de mi tiempo trabajando en Python. Atribuyo esto principalmente al hecho de que mi trabajo involucra enfoques bayesianos y de aprendizaje automático para el modelado estadístico. Python se acerca mucho más al punto óptimo de rendimiento / productividad que R, al menos para los métodos estadísticos que son iterativos o basados ​​en simulación. Si estuviera realizando ANOVAS, regresiones y pruebas estadísticas, estoy seguro de que usaría principalmente R. Sin embargo, la mayor parte de lo que necesito no está disponible como un paquete R enlatado.

fonnesbeck
fuente
55
+1 para distinguir en qué área de estadísticas trabaja. Hay áreas de computación estadística (por ejemplo, análisis de texto no estructurado y visión por computadora) para las que existe mucha funcionalidad en Python, y Python es aparentemente la lengua franca en esos subdominios. Creo que la comunidad de Python tiene que ponerse al día es mejorar las estructuras de datos y la semántica en torno al modelado estadístico clásico en el que el diseño de R es tan bueno. Los desarrolladores de scikits.statsmodels están progresando mucho en ese frente: scikits.appspot.com/statsmodels
Josh Hemann
26

Me gustaría decir que desde el punto de vista de alguien que depende en gran medida de modelos lineales para mi trabajo estadístico y ama a Python por otros aspectos de mi trabajo, me ha decepcionado mucho Python como plataforma para hacer cualquier cosa que no sean estadísticas bastante básicas.

Creo que R tiene mucho mejor apoyo de la comunidad estadística, una implementación mucho mejor de modelos lineales y, para ser sincero desde el punto de vista estadístico, incluso con excelentes distribuciones como Enthought, Python se siente un poco como el Salvaje Oeste.

Y a menos que esté trabajando solo, las probabilidades de que tenga colaboradores que usan Python para estadísticas, en este momento, son bastante escasas.

Fomite
fuente
26

Realmente no hay necesidad de renunciar a R por Python de todos modos. Si utiliza IPython con una pila completa, tiene extensiones R, Octave y Cython, por lo que puede usar esos idiomas de manera fácil y limpia en sus notebooks IPython. También tiene soporte para pasar valores entre ellos y su espacio de nombres Python. Puede generar sus datos como trazados, utilizando matplotlib y como expresiones matemáticas correctamente representadas. Hay muchas otras funciones, y puede hacer todo esto en su navegador.

IPython ha recorrido un largo camino :)

Carl Smith
fuente
19

Lo que estás buscando se llama Sage: http://www.sagemath.org/

Es una excelente interfaz en línea para una combinación bien construida de herramientas de Python para las matemáticas.

Adán
fuente
44
La parte brillante de Sage es que es esencialmente la unión de una serie de excelentes herramientas gratuitas para matemáticas, estadísticas, análisis de datos, etc. Es más que Python; tiene acceso a R, maxima, GLPK, GSL y más.
shabbychef
18

Rpy2 - juega con R y quédate en Python ...

Elaboración adicional por solicitud de Gung:

La documentación de Rpy2 se puede encontrar en http://rpy.sourceforge.net/rpy2/doc-dev/html/introduction.html

De la documentación, La interfaz de alto nivel en rpy2 está diseñada para facilitar el uso de R por parte de los programadores de Python. Los objetos R se exponen como instancias de clases implementadas en Python, con funciones R como métodos vinculados a esos objetos en varios casos. Esta sección también contiene una introducción a los gráficos con R: gráficos enrejados (enrejados), así como la gramática de los gráficos implementados en ggplot2, que permite hacer gráficos complejos e informativos con poco código escrito, mientras que los gráficos de cuadrícula subyacentes permiten toda la personalización posible.

Por qué me gusta:

Puedo procesar mis datos usando la flexibilidad de python, convertirlos en una matriz usando numpy o pandas y hacer el cálculo en R, y recuperar los objetos r para realizar el procesamiento posterior. Utilizo econometría y Python simplemente no tendrá las herramientas de estadísticas de vanguardia de R. Y es poco probable que R sea tan flexible como Python. Esto requiere que entiendas R. Afortunadamente, tiene una buena comunidad de desarrolladores.

Rpy2 en sí está bien soportado y el caballero que lo apoya frecuenta los foros SO. La instalación de Windows puede ser un poco dolorosa: 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 podría ayudar.

3 revoluciones
fuente
1
Bienvenido al sitio, @pythOnometrist. Sospecho que esta es una contribución útil. ¿Le importaría dar un breve resumen de Rpy2, para que los lectores puedan decidir si es lo que están buscando?
Gung
17

Yo uso Python para análisis estadísticos y pronósticos. Como se mencionó anteriormente, Numpy y Matplotlib son buenos caballos de batalla. También uso ReportLab para producir archivos PDF.

Actualmente estoy mirando tanto a Resolver como a Pyspread, que son aplicaciones de hoja de cálculo tipo Excel basadas en Python. Resolver es un producto comercial, pero Pyspread sigue siendo de código abierto. (Disculpas, estoy limitado a un solo enlace)

Turukawa
fuente
1
De nuevo algunas herramientas interesantes. Sabía sobre Numpy, Matplotlib y ReportLab, pero Pyspread parece una idea interesante. Al menos me gustaría escribir expresiones Python en celdas de hoja de cálculo. Si bien no resuelve todos los problemas posibles, podría ser bueno para crear prototipos y jugar con datos.
Fabian Fagerholm
1
+1 ¡Guau hojas de cálculo de Python! No había oído hablar de ellos todavía. Siempre deseé que OpenOffice / LibreOffice realmente adoptara e integrara las secuencias de comandos de Python en su software de hoja de cálculo
Usuario
15

gran visión general hasta ahora. Estoy usando python (específicamente scipy + matplotlib) como reemplazo de matlab desde hace 3 años trabajando en la Universidad. A veces todavía vuelvo porque estoy familiarizado con bibliotecas específicas, por ejemplo, el paquete wavelet de matlab es puramente increíble.

Me gusta el http://enthought.com/ distribución python. Es comercial, pero gratuito para fines académicos y, hasta donde yo sé, es completamente de código abierto. Como estoy trabajando con muchos estudiantes, antes de usar entusiasmo, a veces era problemático para ellos instalar numpy, scipy, ipython, etc. Enthought proporciona un instalador para Windows, Linux y Mac.

Otros dos paquetes que vale la pena mencionar:

  1. ipython (ya viene con entusiasmo) gran shell avanzado. una buena introducción está en showmedo http://showmedo.com/videotutorials/series?name=PythonIPythonSeries

  2. nltk: el paquete de herramientas de lenguaje natural http://www.nltk.org/ gran paquete en caso de que desee hacer algunas estadísticas / aprendizaje automático en cualquier corpus.

kgarten
fuente
12

Esta es una pregunta interesante, con algunas respuestas geniales.

Puede encontrar alguna discusión útil en un artículo que escribí con Roseline Bilina. La versión final está aquí: http://www.enac.fr/recherche/leea/Steve%20Lawford/papers/python_paper_revised.pdf (desde entonces ha aparecido, en casi esta forma, como "Python para la Investigación Unificada en Econometría y Estadísticas ", en Econometric Reviews (2012), 31 (5), 558-591).

Steve Lawford
fuente
10

Quizás no esté directamente relacionado, pero R tiene un buen entorno GUI para sesiones interactivas (editar: en Mac / Windows). IPython es muy bueno, pero para un entorno más cercano al de Matlab, puede probar Spyder o IEP. Últimamente tuve más suerte usando IEP, pero Spyder parece más prometedor.

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

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

Y el sitio IEP incluye una breve comparación de software relacionado: http://code.google.com/p/iep/wiki/Alternatives

JMS
fuente
9

Encontré una gran introducción a los pandas aquí que sugiero revisar. Pandas es un conjunto de herramientas increíble y proporciona las capacidades de análisis de datos de alto nivel de R con las amplias bibliotecas y la calidad de producción de Python.

Esta publicación de blog ofrece una gran introducción a Pandas desde la perspectiva de un principiante completo:

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

padawan
fuente
3
¿Podría por favor escribir algunas palabras sobre qué cualidades lo hacen "genial" para que los lectores puedan determinar de antemano si verlo sería apropiado para ellos?
whuber
1
Lo siento. Me acabo de dar cuenta de que adjunto el enlace incorrecto en mi publicación original.
padawan
8

Debo agregar un agradecimiento para Sho, el entorno informático numérico construido en IronPython. Lo estoy usando ahora para la clase de aprendizaje automático de Stanford y ha sido realmente útil. Está construido en paquetes de álgebra lineal y capacidades de gráficos. Siendo .Net es fácil de extender con C # o cualquier otro lenguaje .Net. Me ha resultado mucho más fácil comenzar, siendo un usuario de Windows, que Python y NumPy.

pnewhook
fuente
8

Nadie ha mencionado a Orange antes:

Minería de datos a través de programación visual o secuencias de comandos Python. Componentes para el aprendizaje automático. Complementos para bioinformática y minería de texto. Repleto de funciones para análisis de datos.

No lo uso a diario, pero es una visita obligada para cualquiera que prefiera la GUI a la interfaz de línea de comandos.

Incluso si prefiere este último, Orange es una buena cosa para familiarizarse, ya que puede importar fácilmente piezas de Orange a sus scripts de Python en caso de que necesite alguna de sus funciones.

Wojciech Walczak
fuente
7

Tenga en cuenta que SPSS Statistics tiene una interfaz Python integrada (también R). Por lo tanto, puede escribir programas de Python que utilicen procedimientos de Estadísticas y producir la salida de Estadísticas bien formateada habitual o devolver los resultados a su programa para su posterior procesamiento. O puede ejecutar programas de Python en la secuencia de comandos de Estadísticas. Todavía tiene que conocer el lenguaje de comando de estadísticas, pero puede aprovechar toda la gestión de datos, resultados de presentación, etc. que proporciona Estadísticas, así como los procedimientos.

JKP
fuente
7

La comparación reciente de DataCamp proporciona una imagen clara sobre R y Python.

El uso de estos dos idiomas en el campo de análisis de datos. Python se usa generalmente cuando las tareas de análisis de datos deben integrarse con aplicaciones web o si el código de estadísticas debe incorporarse a una base de datos de producción. R se utiliza principalmente cuando las tareas de análisis de datos requieren computación independiente o análisis en servidores individuales.

Lo encontré muy útil en este blog y espero que ayude a otros a comprender las tendencias recientes en ambos idiomas. Julia también viene por la zona. Espero que esto ayude !

Learner
fuente
6

Creo que Python es un banco de trabajo superior en mi campo. Realizo muchos raspados, disputas de datos, trabajo de datos grandes, análisis de redes, modelado bayesiano y simulaciones. Por lo general, todas estas cosas necesitan velocidad y flexibilidad, por lo que creo que Python funciona mejor que R en estos casos. Aquí hay algunas cosas sobre Python que me gustan (algunas se mencionan anteriormente, otros puntos no):

-Sintaxis del limpiador; Código más legible. Creo que Python es un lenguaje más moderno y sintácticamente consistente.

-Python tiene Notebook, Ipython y otras herramientas increíbles para compartir código, colaboración, publicación.

-El cuaderno de iPython le permite a uno usar R en el código de Python, por lo que siempre es posible volver a R.

-Sustancialmente más rápido sin recurrir a C. El uso de Cython, NUMBA y otros métodos de integración de C pondrá su código a velocidades comparables a la C. pura. Esto, hasta donde yo sé, no se puede lograr en R.

-Pandas, Numpy y Scipy soplan R estándar fuera del agua. Sí, hay algunas cosas que R puede hacer en una sola línea, pero toma Pandas 3 o 4. Sin embargo, en general, Pandas puede manejar conjuntos de datos más grandes, es más fácil de usar y proporciona una flexibilidad increíble con respecto a la integración con otros Python Paquetes y métodos.

-Python es más estable. Intente cargar un conjunto de datos de 2 gig en RStudio.

-Un paquete ordenado que no parece mencionado anteriormente es PyMC3, un gran paquete general para la mayoría de sus modelos bayesianos.

-Algunos, antes mencionan ggplot2 y grub sobre su ausencia de Python. Si alguna vez usó las funcionalidades gráficas de Matlab y / o usó matplotlib en Python, entonces sabrá que las últimas opciones son generalmente mucho más capaces que ggplot2.

Sin embargo, quizás R es más fácil de aprender y lo uso con frecuencia en casos en los que aún no estoy muy familiarizado con los procedimientos de modelado. En ese caso, la profundidad de las bibliotecas estadísticas de R es inmejorable. Idealmente, conocería ambos lo suficientemente bien como para poder usarlos cuando sea necesario.

Gene Burin
fuente
5

Para aquellos que tienen que trabajar con Windows, Anaconda ( https://store.continuum.io/cshop/anaconda/ ) realmente ayuda mucho. Instalar paquetes en Windows fue un dolor de cabeza. Con Anaconda instalado, puede configurar un entorno de desarrollo listo para usar con una sola línea.

Por ejemplo, con

conda create -n stats_env python pip numpy scipy matplotlib pandas

Todos estos paquetes se buscarán e instalarán automáticamente.

Yu-Yang
fuente
5

Python tiene un largo camino por recorrer antes de que pueda compararse con R. Tiene significativamente menos paquetes que R y de menor calidad. Las personas que se apegan a lo básico o confían solo en sus bibliotecas personalizadas probablemente podrían hacer su trabajo exclusivamente en Python, pero si usted es alguien que necesita soluciones cuantitativas más avanzadas, me atrevo a decir que nada se acerca a R por ahí.

También se debe tener en cuenta que, hasta la fecha, Python no tiene un IDE científico adecuado al estilo Matlab comparable a R-Studio (por favor no diga Spyder) y necesita resolver todo en la consola. En términos generales, toda la experiencia de Python requiere una buena cantidad de "geekness" que a la mayoría de las personas les falta y no les importa.

No me malinterpreten, me encanta Python, en realidad es mi lenguaje favorito que, a diferencia de R, es un lenguaje de programación real . Aún así, cuando se trata de análisis de datos puros, soy dependiente de R, que es, con mucho, la solución más especializada y desarrollada hasta la fecha. Uso Python cuando necesito combinar análisis de datos con ingeniería de software, por ejemplo, crear una herramienta que realice la automatización de los métodos que programé por primera vez en un script R sucio. En muchas ocasiones utilizo rpy2 para llamar a R desde Python porque en la gran mayoría de los casos los paquetes R son mucho mejores (o no existen en Python). De esta manera trato de obtener lo mejor de ambos mundos.

Todavía uso Matlab para el desarrollo puro de algoritmos, ya que me encanta su sintaxis y velocidad de estilo matemático.

Digio
fuente