378 votos

Python como un banco de trabajo de estadísticas

Muchas personas utilizan una principal herramienta como Excel u otra hoja de cálculo, SPSS, Stata o R sus estadísticas necesidades. Ellos pueden recurrir a algunos de paquete específico para necesidades muy especiales, pero un montón de cosas que se pueden hacer con una simple hoja de cálculo o un general de estadísticas paquete o estadísticas entorno de programación.

Siempre me ha gustado Python como lenguaje de programación, y por simples necesidades, es fácil escribir un pequeño programa que calcula lo que necesito. Matplotlib me permite parcela.

Alguien ha cambié completamente de, digamos R, Python? R (o cualquier otro paquete de estadísticas) tiene un montón de funcionalidades específicas para las estadísticas, y tiene estructuras de datos que permiten pensar acerca de las estadísticas que desea realizar y menos acerca de la representación interna de los datos. Python (o algún otro lenguaje dinámico) tiene la ventaja de permitir que me programa en un familiar, un lenguaje de alto nivel, y me permite mediante programación interactuar con los sistemas del mundo real en el que residen los datos o de la que puedo tomar las mediciones. Pero todavía no he encontrado ningún paquete de Python que me permita expresar las cosas con la "estadística de la terminología" – desde la simple estadística descriptiva para más complicados métodos multivariantes.

¿Qué se puede recomendar si quería usar Python como un "herramienta estadística" para reemplazar al R, SPSS, etc.?

¿Qué iba a ganar y perder, basado en su experiencia?

323voto

Omar Kooheji Puntos 384

Es difícil ignorar la riqueza de paquetes estadísticos disponibles en R/CRAN. Dicho esto, me paso un montón de tiempo en Python de la tierra y nunca disuadir a nadie de divirtiendo tanto como yo. :) Aquí están algunas bibliotecas/enlaces que te pueden ser de utilidad para el trabajo estadístico.

  • NumPy/Scipy Usted probablemente sabe acerca de estos ya. Pero permítanme señalar el libro de cocina donde se puede leer acerca de muchos de estadística de las instalaciones ya disponibles y la Lista del Ejemplo , que es una gran referencia para las funciones (incluyendo la manipulación de datos y otras operaciones). Otra útil la referencia a John Cook Distribuciones en Scipy.

  • pandas Esto es realmente una buena biblioteca para trabajar con datos estadísticos -- tabular los datos, series de tiempo, datos de panel. Incluye muchas funciones integradas para los resúmenes de los datos de agrupación/agregación, pivotante. También tiene una estadística econometría de la biblioteca.

  • larry Etiquetados matriz que juega bonito, con NumPy. Proporciona estadísticas de funciones que no están presentes en NumPy y bueno para la manipulación de datos.

  • python-statlib Una bastante reciente esfuerzo que combina un número de dispersos estadísticas de las bibliotecas. Útil para básica y estadística descriptiva, si no estás usando NumPy o pandas.

  • statsmodels modelización Estadística: modelos Lineales, GLMs, entre otros.

  • scikits Estadística y computación científica paquetes-en particular, la suavidad, la optimización y el aprendizaje de máquina.

  • PyMC Para su Bayesiano/MCMC/modelado jerárquico de necesidades. Muy recomendable.

  • PyMix modelos de Mezcla.

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

Hay un montón de otras cosas por ahí, pero esto es lo que me parece más útil a lo largo de las líneas que usted ha mencionado.

149voto

Grant Puntos 5366

Como numérico de la plataforma y como un sustituto de MATLAB, Python alcanzado la madurez, al menos, 2-3 años, y ahora es mucho mejor que la de MATLAB en muchos aspectos. He intentado cambiar a Python de R alrededor de ese tiempo, y fracasó miserablemente. Hay simplemente demasiadas R paquetes que uso a diario que no tienen Python equivalente. La ausencia de ggplot2 es suficiente para ser una sensacional, pero hay muchos más. En adición a 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é considera usted más expresiva? En R, se puede pensar en términos de variables, y se puede extender fácilmente a un modelo, a, digamos,

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

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

Si tuviera menos requisitos para avanzadas funciones estadísticas ya que la codificación de Python en un proyecto más amplio, que yo considero de Python como un buen candidato. Yo consideraría que es también cuando un desnudo-hueso es necesario un enfoque, ya sea debido a limitaciones de velocidad, o porque R paquetes no proporcionar un borde.

Para aquellos que hacen relativamente avanzado de las Estadísticas de ahora, la respuesta es una obviedad, y es que no. De hecho, creo que Python límite de la manera de pensar sobre el análisis de datos. Tomará un par de años y muchos de año-hombre de los esfuerzos para producir el módulo de reemplazos para el 100 esencial R paquetes, e incluso entonces, Python que se siente como un lenguaje en el que los datos de las capacidades de análisis han sido fijada. Puesto que R ya ha capturado la mayor participación relativa de la aplicación de los estadísticos a través de varios campos, no veo que esto ocurra en cualquier momento pronto. Habiendo dicho eso, es un país libre, y sé que la gente realización de Estadísticas en la APL y C.

97voto

christy Puntos 51

En primer lugar, permítanme decir que estoy de acuerdo con Juan D de Cook respuesta: Python no es un Lenguaje Específico de Dominio como R, y en consecuencia, no hay mucho más que usted será capaz de hacer con ella más abajo en la carretera. Por supuesto, R es un DSL significa que los últimos algoritmos publicados en JASA casi seguramente será en R. Si usted está haciendo en su mayoría ad hoc de trabajo y quieres experimentar con las últimas lazo técnica de regresión, decir, R es difícil de superar. Si usted está haciendo más de la producción de la labor analítica, la integración con el software existente y entornos, y preocupado acerca de la velocidad, la extensibilidad y facilidad de mantenimiento, Python le servirá mucho mejor.

Segundo, ars dio una gran respuesta con buenos enlaces. Aquí están algunas más paquetes de los que me vista como esencial para la labor analítica en Python:

  • matplotlib para bello, la publicación de la calidad de los gráficos.
  • IPython para una mejorada, interactiva consola de Python. Es importante destacar que, IPython proporciona un marco sólido para la interactivos, la computación paralela en Python.
  • Cython para la facilidad de la escritura extensiones en C en Python. Este paquete le permite tomar un pedazo de computacionalmente intensivo de código de Python y convertir fácilmente a un C de extensión. Entonces usted será capaz de cargar la C extensión como cualquier otro módulo de Python, pero el código se ejecuta muy rápido ya que es en C.
  • PyIMSL Estudio de una colección de cientos de mathemaical y algoritmos estadísticos que están bien documentados y soportados. Usted puede llamar a exactamente los mismos algoritmos de Python y C, con casi la misma API y obtendrás los mismos resultados. La divulgación completa: yo trabajo en este producto, pero yo también lo uso mucho.
  • xlrd para la lectura de archivos de Excel fácilmente.

Si desea más parecido a MATLAB interactivo IDE/consola, echa un vistazo Spyder, o el PyDev plugin para Eclipse.

63voto

Eggs McLaren Puntos 945

Creo que no hay ningún argumento que la gama de paquetes estadísticos en cran y Bioconductor superan con mucho cualquier cosa que se ofrecen desde otras lenguas, sin embargo, que no es la única cosa a tener en cuenta.

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

Recientemente, he combinado python y C para hacer frente a este problema. Breve resumen: la colocación de una gran estocástica del modelo de población con ~60 parámetros e inferir alrededor de 150 latente uso de los estados MCMC.

  1. Leer en los datos en python
  2. Construir el C estructuras de datos en python usando ctypes.
  3. El uso de python for de bucle, llame a las funciones de C que se actualizan los parámetros y calcula la probabilidad.

Un cálculo rápido mostraron que el programa pasó de 95% en C funciones. Sin embargo, yo no tenía que escribir doloroso C código para leer los datos de construcción o de C estructuras de datos.


Sé que hay también rpy, donde python puede llamar a las funciones R. Esto puede ser útil, pero si usted es "sólo" hacer estadísticas, a continuación, me gustaría utilizar R.

42voto

Eric Davis Puntos 1542

El siguiente StackOverflow debate que podría ser útil

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X