Introducción a la ciencia de datos | Elija Python o R
Introducción a la ciencia de datos丨Elija Python o R
Para los principiantes que desean comenzar con la ciencia de datos, elegir aprender el lenguaje Python o R es un problema difícil. dos idiomas. Espero que pueda ayudarte a elegir.
Soy líder científico de datos en Deloitte y he trabajado con Python y R durante muchos años y he trabajado estrechamente con la comunidad de Python durante 15 años. Este artículo presenta algunas de mis opiniones personales sobre estos dos idiomas.
La tercera opción
En respuesta a este problema, Htley Wickham, científico de datos jefe de Studio, cree que en lugar de elegir uno de los dos, una mejor opción es dejar que los dos lenguajes cooperar. Por tanto, esta es también la tercera opción que mencioné, que exploraré en la parte final del texto.
Cómo comparar R y Python
Para estos dos lenguajes, vale la pena comparar los siguientes puntos:
· Historia:
El Las historias de desarrollo de R y Python son obviamente diferentes y existen superposiciones.
· Grupo de usuarios:
Contiene muchos factores antropológicos sociológicos complejos.
·Rendimiento:
Comparación detallada y por qué es difícil comparar.
· Soporte de terceros:
Módulos, bases de código, visualizaciones, repositorios, organizaciones y entornos de desarrollo.
·Casos de uso:
Existen diferentes opciones dependiendo de la tarea específica y el tipo de trabajo.
· Se pueden usar al mismo tiempo:
Usar R en Python y usar Python en R.
· Predicción:
Pruebas internas.
· Preferencias empresariales y personales:
La respuesta final se revela.
Historia
Breve historia:
Lenguaje ABC - > Sale Python (fundado por Guido van Rossum en 1989) - > Python 2 (2000) -> Python 3 (2008)
Lenguaje Fortan -> Lenguaje S (Bell Labs) ->> Se lanza el lenguaje R (fundado en 1991 por Ross Ihaka y Robert Gentleman) -> R 1.0 .0 (2000) - gt; R 3.0.2 (2013)
Grupos de usuarios
Al comparar los grupos de usuarios de Python y R, tenga en cuenta:
Solo el 50% de los usuarios de Python también utilizar r.
Supongamos que todos los programadores que usan el lenguaje R usan R para realizar investigaciones "científicas y numéricas" relacionadas. Puede estar seguro de que esta distribución estadística es cierta independientemente del nivel del programador.
Aquí volvemos a la segunda pregunta, qué grupos de usuarios hay. La comunidad científica y digital en general consta de varios subgrupos, con cierta superposición.
Subgrupos usando Python o R:
· Aprendizaje profundo
· Aprendizaje automático
· Análisis avanzado
· Análisis Predictivo
· Estadística
· Exploración y Análisis de Datos
· Investigación Académica
· Numerosas áreas de investigación computacional
Aunque casi todos los campos atienden a un grupo específico, en áreas como estadística y exploración, el uso del lenguaje R es más común. No hace mucho tiempo, R necesitaba menos tiempo para explorar que Python, y Python también necesitaba tiempo para instalarse.
Todo esto ha sido cambiado por tecnologías disruptivas llamadas Jupyter Notebooks y Anaconda.
Jupyter Notebook: agrega la capacidad de escribir código Python y R en el navegador;
Anaconda: permite una fácil instalación y administración de Python y R.
Ahora puede poner en funcionamiento Python o R en un entorno amigable que proporciona informes y análisis listos para usar. Ambas tecnologías eliminan las barreras entre hacer las cosas y elegir su idioma favorito. Python ahora se puede empaquetar de forma independiente de la plataforma y proporcionar un análisis rápido y sencillo con mayor rapidez.
Otro factor en la comunidad que afecta la elección del idioma es el "código abierto". No sólo las bibliotecas de código abierto, sino también el impacto de las comunidades colaborativas en el código abierto. Irónicamente, el software de código abierto como Tensorflow y la Biblioteca Científica GNU (Apache y GPL respectivamente) vienen incluidos con Python y R. Aunque hay muchos usuarios del lenguaje R, hay muchos partidarios puros de Python entre los usuarios de Python. Por otro lado, más empresas están utilizando R, especialmente aquellas con experiencia en estadística.
Finalmente, en cuanto a comunidad y colaboración, Github tiene más soporte para Python. Si observa los paquetes populares recientes de Python, encontrará que proyectos como Tensorflow tienen más de 35.000 colecciones de usuarios. Pero si observamos los paquetes de software populares de R, las colecciones de Shiny, Stan, etc. son menos de 2000.
Rendimiento
Este aspecto no es fácil de comparar.
La razón es que hay demasiados indicadores y situaciones que es necesario probar. Es difícil realizar pruebas en una pieza específica de hardware. Algunas operaciones están optimizadas por uno de los lenguajes pero no por el otro.
Bucles
Antes de eso, pensemos en cómo comparar Python y R. ¿De verdad quieres escribir muchos bucles en R? Después de todo, las intenciones de diseño de los dos idiomas no son las mismas.
{
"celdas": [
{
"tipo_celda": "código",
"execution_count": 1,
"metadatos": {},
"salidas": [],
"fuente": [
"importar numpy como npn",
"load_ext rpy2.ipython"
]
},
{ p>
"cell_type": "código",
"execution_count": 2,
"metadatos": {},
"salidas" : [],
"fuente": [
"def do_loop(u1):n",
"n",
" # Inicializar `usq`n",
" usq = {}n",
"n",
" para i en rango(100 ): n",
" # i-ésimo elemento de `u1` cuadrado en `i`-ésima posición de `usq`n",
" usq[i] = u1[i] * u1[i]n"
]
},
{
"tipo_celda": "código" ,
"execution_count": 3,
"metadatos": {},
"salidas": [],
" fuente": [
"Rn",
"do_loop lt;- function(u1) {n",
"n",
" # Inicializar `usq`n",
" usq lt;-0n",
"n",
" for(i en 1:100) {n",
" # i-ésimo elemento de `u1` cuadrado en `i`-ésima posición de `usq`n",
" usq[ i] lt; - u1[i]*u1[i]n",
" }n",
"n",
"}"
]
},
{
"cell_type": "código",
"execution_count" : 4,
"metadatos": {},
"salidas": [
{
"nombre": "stdout ",
"output_type": "stream",
"text": [
"1,58 ms ± 42,8 ?s por bucle (media ± desviación estándar de 7 ejecuciones, 1000 bucles cada uno)n"
]
}
],
"fuente": [
"timeit -n 1000n",
"Rn",
"u1 lt; - rnorm(100)n",
"do_loop(u1)"
]
},
{
"cell_type": "código",
"execution_count" : 5,
"metadatos": {},
"salidas": [
{
"nombre": "stdout ",
"output_type": "stream",
"text": [
"36,9 ?s ± 5,99 ?s por bucle (media ± estándar .dev. de 7 ejecuciones, 1000 bucles cada una)n"
]
}
],
"fuente": [
"timeit -n 1000n",
"u1 = np.random.randn(100)n",
"do_loop(u1)" p> p>
]
}
],
"metadatos": {
"kernelspec": {
"display_name": "Python 3",
"idioma": "python",
"nombre": "python3"
} ,
"language_info": {
"codemirror_mode": {
"name": "ipython",
" versión" : 3
},
"file_extension": ".py",
"mimetype": "text/x-python", p>
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"versión ": "3.6.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Python es 0,000037 segundos, R es 0,00158 segundos
Incluyendo el tiempo de carga y ejecución en la línea de comando: R tarda 0,238 segundos, Python tarda 0,147 segundos. Cabe destacar que esta no es una prueba científicamente rigurosa.
Las pruebas han demostrado que Python se ejecuta significativamente más rápido. Generalmente esto no hace mucha diferencia.
Además de la velocidad de carrera, ¿qué rendimiento es más importante para un científico de datos? Ambos lenguajes son populares porque pueden usarse como lenguajes de comando. Por ejemplo, cuando usamos Python dependemos de Pandas la mayor parte del tiempo. Esto involucra los módulos y bibliotecas en cada idioma y cómo se implementan.
Soporte de terceros
Python tiene PyPI, el lenguaje R tiene CRAN y ambos tienen Anaconda.
CRAN utiliza el comando integrado install.packages. Actualmente, hay aproximadamente 12.000 paquetes en CRAN. Más de la mitad de los paquetes se pueden utilizar para ciencia de datos.
El número de paquetes en PyPi supera en 10 veces al anterior, con aproximadamente 141.000 paquetes. Hay 3.700 dedicados a la ciencia y la ingeniería. Algunos de ellos también se pueden utilizar en ciencia, pero no están etiquetados.
Hay duplicados en ambos. Al buscar "bosque aleatorio" obtengo 170 proyectos en PyPi, pero los paquetes no son los mismos.
Aunque la cantidad de paquetes de Python es 10 veces mayor que la de R, la cantidad de paquetes relacionados con la ciencia de datos es aproximadamente la misma.
Velocidad de ejecución
Tiene más sentido comparar DataFrames y Pandas.
Realizamos un experimento para comparar tiempos de ejecución para tareas de exploración complejas y los resultados son los siguientes:
Python se ejecuta más rápido en la mayoría de las tareas.
http://nbviewer.jupyter.org/gist/brianray/4ce15234e6ac2975b335c8d90a4b6882
Como puede ver, Python Pandas es más rápido que los DataFrames del lenguaje R nativo. Tenga en cuenta que esto no significa que Python se ejecute más rápido, Pandas está escrito en lenguaje C basado en Numpy.
Visualización
Aquí se compara ggplot2 con matplotlib.
matplotlib fue escrito por John D. Hunter, una de las personas que más respeto en la comunidad de Python y quien me enseñó a usar Python.
Matplotlib no es fácil de aprender, pero se puede personalizar y ampliar. ggplot es difícil de personalizar y algunas personas piensan que es más difícil de aprender.
Si te gustan los gráficos bonitos sin necesidad de personalización, R es una buena opción. Si vas a hacer más, Matplotlib o incluso el bokeh interactivo son buenos. Asimismo, ShinnyR para R puede aumentar la interactividad.
¿Se pueden usar al mismo tiempo?
Quizás te preguntes, ¿por qué no puedes usar Python y R al mismo tiempo?
Puedes utilice estos dos lenguajes al mismo tiempo en las siguientes situaciones:
· La empresa u organización lo permite
· Ambos se pueden configurar y mantener fácilmente en su entorno de programación; /p>
· No es necesario que su código ingrese a otro sistema;
· No causará problemas ni angustia a quienes cooperen.
La forma de utilizar dos lenguajes juntos es:
· Python proporciona paquetes R: como rpy2, pyRserve, Rpython, etc.
· R también tiene paquetes relativos: rPython, PythonInR, reticulate, rJython, SnakeCharmR, rpy2 convierte automáticamente al marco de datos de R y convierte con "-i df":
http://nbviewer.jupyter.org/gist /brianray/734bd54f468d9a6db9171b2cfc98405a
Predicción
Alguien en Kaggle escribió un Kernel para que los desarrolladores usen R o Python. Encontró los siguientes resultados interesantes basados en los datos:
·Si planeas cambiar a Linux el próximo año, es más probable que seas un usuario de Python;
·Si estudias estadísticas, es más probable que uses R; si estudias informática, es más probable que uses Python;
·Si eres joven (entre 18 y 24 años), es más probable que un usuario de Python;
·Si participas en el Concurso de programación, es más probable que seas un usuario de Python;
·Si quieres usar Android el próximo año, es más probable que ser un usuario de Python;
·Si quieres aprender SQL el próximo año, es más probable que seas un usuario de Python. Ser un usuario de R;
·si usas MS Office. , es más probable que seas un usuario de R;
·Si quieres usar un Rasperry Pi el próximo año, es más probable que seas un usuario de Python;
· Si eres un estudiante de tiempo completo, es más probable que seas un usuario de Python;
· Si utilizas la metodología Agile, es más probable que seas un usuario de Python;
· Si Si está más preocupado que entusiasmado con la inteligencia artificial, es más probable que sea un usuario de R.
Preferencias personales y empresariales
Cuando hablé con el Googler y gurú de Stack Overflow Alex Martelli, me explicó por qué Google solo admite oficialmente un puñado de idiomas en primer lugar. . Incluso en el entorno relativamente desarrollado de Google, existen limitaciones y preferencias, al igual que otras empresas.
Además de las preferencias corporativas, también jugará un papel decisivo la primera persona de la empresa que hable un determinado idioma. La primera persona en utilizar R en Deloitte todavía trabaja en la empresa y actualmente se desempeña como científico jefe de datos. Mi consejo es: elija un idioma que le guste, ame el idioma elegido, asuma un papel de liderazgo y ame su carrera.
Cuando investigas algo importante, los errores son inevitables. Sin embargo, todo proyecto de ciencia de datos bien diseñado deja cierto espacio para que los científicos de datos experimenten y aprendan. Es importante mantener la mente abierta y aceptar la diversidad.
Finalmente, personalmente, uso principalmente Python y espero aprender más sobre R en el futuro.