Introducción a la ciencia de datos: Python o R

Introducción a la ciencia de datos: Python o R

Para los principiantes que desean aprender ciencia de datos, elegir el lenguaje Python o R es una pregunta difícil. Este artículo compara los dos idiomas y espera ayudarle a elegir.

Soy líder científico de datos en Deloitte. He usado los lenguajes Python y R durante muchos años y he trabajado estrechamente con la comunidad Python durante 15 años. Este artículo es mi opinión personal sobre estos dos idiomas.

Una tercera opción

Para resolver este problema, Htley Wickham, científico de datos jefe de Studio, cree que una mejor opción es hacer que ambos lenguajes funcionen juntos, en lugar de elegir uno. el otro. Entonces, esta es también la tercera opción que mencioné, que discutiré en la última parte del texto.

Cómo comparar R y Python

Para estos dos lenguajes, vale la pena comparar los siguientes puntos:

Historia:

R y Python Las historias de desarrollo son obviamente diferentes y existen superposiciones.

Grupo de Usuarios:

Contiene muchos factores sociológicos y antropoló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 según tareas y tipos de trabajo específicos.

Se pueden usar al mismo tiempo:

Usa r en Python y Python en r.

Predicción:

Pruebas internas.

Preferencias personales y de empresa:

La respuesta final se revela.

Historia

Breve historia:

Lenguaje ABC -> La llegada de Python (fundado por Guido van Rossum en 1989) -> Python 2 (2000) - > Python 3 (2008)

Fordan -> Lenguaje S (Bell Labs) -> Se lanza el lenguaje R (fundado en 1991 por Ross Ihaka y Robert Gentry) -> R 1.0.0 (2000) -> R 3.0.2 (2013)

Grupos de usuarios

Al comparar los usuarios de Python y R, debemos tener en cuenta:

Solo el 50 % de los usuarios de Python también utilizan r.

Supongamos que los programadores que utilizan el lenguaje R utilizan R para realizar investigaciones relacionadas con "ciencia y números". No importa qué tan buen programador seas, puedes estar seguro de que esta distribución estadística es cierta.

Volviendo a la segunda pregunta, qué grupos de usuarios hay. La comunidad científica y digital en general consta de varios subgrupos, algunos de los cuales se superponen.

Subgrupo que utiliza 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

Una amplia gama de áreas de investigación computacional

Si bien casi Cada campo sirve a un grupo específico, el lenguaje R es más común en los campos de estadística y exploración. Cuando estaba explorando datos no hace mucho, el lenguaje R tomó menos tiempo que Python, y también tomó tiempo instalar Python.

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: Python y R son fáciles de instalar y administrar.

Ahora puede poner en marcha Python o R en un entorno amigable que proporciona informes y análisis listos para usar. Estas dos tecnologías eliminan las barreras entre completar tareas y elegir su idioma preferido. Python ahora se puede empaquetar de manera independiente de la plataforma y ofrecer análisis rápidos y simples con mayor rapidez.

Otro factor que afecta la elección del idioma comunitario es el "código abierto". No sólo las bibliotecas de código abierto, sino 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) están vinculados a Python y R. Aunque hay muchos usuarios del lenguaje R, también hay partidarios puros de Python entre los usuarios de Python. Por otro lado, más empresas utilizan el lenguaje R, especialmente aquellas con experiencia en estadística.

Finalmente, en cuanto a comunidad y colaboración, Github es compatible con Python. Si observa los paquetes de Python más populares recientemente, encontrará que proyectos como Tensorflow tienen más de 35.000 colecciones de usuarios. Pero si observamos los paquetes de software populares para R, las colecciones de Shiny y Stan son menos de 2000.

Rendimiento

Es difícil comparar en este aspecto.

La razón es que hay demasiados indicadores y situaciones por probar. Es difícil realizar pruebas en un hardware específico. Algunas operaciones están optimizadas en un idioma pero no en otro.

Propagación

Antes de eso, pensemos primero en cómo se comparan Python y R. ¿Realmente quieres escribir muchos bucles en lenguaje R? Después de todo, las intenciones de diseño de los dos idiomas son diferentes.

{

"celda":[

{

" tipo_celda": "código",

"execution_count": 1,

"Metadatos": {},

"Salida": [],

"Fuente": [

"Importar numpy como npn",

" %load_ext rpy2.ipython "

]

},

{

" cell_type": "código",

"execution_count":2,

"metadata":{},

"Salida ":[],

"Fuente":[

" def do_loop(u1):n ",

"n",

" # Inicializar `usq`n ",

" usq = {}n ",

"n",

" Para el rango I(100 ):n ",

"El cuadrado del elemento I-ésimo de 'u 1' a la posición 'I'-ésima de 'usq'n",

" usq [I]= u 1[I]* u 1[I]n "

]

},

{

" cell_type": "código",

"execution_count":3,

"metadata":{},

"salida":[],

"Fuente":[

"%%Rn",

" do _ loop & lt- function(u1) {n ",

"n",

" # Inicializar `usq`n ",

" usq & lt- 0n",

"n",

" for(i in 1:100) {n ",

"El cuadrado del I-ésimo elemento de 'u 1' a 'usq'n 'I'ésima posición" ,

" usq[I]<- u1[i]*u1[i]n ",

" }n ",

p>

" n",

"}"

]

},

{

" tipo_celda": " código",

"execution_count":4,

"metadatos":{},

"salida": [

{

" nombre": "stdout",

"Tipo de salida": "secuencia",

"texto":[

“¿1,58 ms 42,8? s por bucle (desviación estándar promedio. Dave. 7 ejecuciones de 1000 bucles cada una) n "

]

}

],

p>

"Fuente":[

" %timeit -n 1000n ",

"%%Rn",

" u 1 & lt ;- rnorm(100)n",

" do_loop(u1)"

]

},

{

" cell_type": "código",

"execution_count":5,

"metadata":{},

" Salida":[

{

" nombre": "stdout",

"Tipo de salida": "secuencia",

"texto":[

"36,9?s 5,99? s por bucle (desviación estándar media. Dave.

7 ejecuciones, 1000 ciclos cada una)n "

]

}

],

"Fuente":[

" %timeit -n 1000n ",

" u 1 = NP . aleatorio . randn(100)n ",

" do_loop(u1)"

]

}

],

"metadata":{

" kernelspec": {

" display_name": "Python 3",

"Idioma": "python",

[Nombre]: "python3"

},

"Información de idioma":{

" codemirror_mode": {

"Nombre":" ipython",

[Versión]: 3

},

"Extensión de archivo":". py",

"mime type":"text/x-python",

[Nombre]:"python",

" nbconvert_exporter": " python ",

" pygments_lexer": "ipython3 ",

"version": "3.6.3"

}

} ,

[nb format]: 4,

" nbformat_minor": 2

}

Python es 0,000037 segundos, r es 0,00158 Segundos.

Incluyendo el tiempo de carga y la ejecución de la línea de comando: 0,238 segundos para R y 0,147 segundos para Python. Para enfatizar, esta no es una prueba científicamente rigurosa.

La prueba demuestra que Python. Se ejecuta significativamente más rápido. Por lo general, no tiene mucho impacto.

Qué dos lenguajes son más populares para los científicos de datos, ya que se pueden usar como lenguajes de comando. Python, dependemos en gran medida de Pandas la mayor parte del tiempo cuando se trata de los módulos y bibliotecas de cada idioma y cómo se implementan.

Soporte de terceros

Python tiene PyPI, lenguaje R. tiene CRAN y ambos tienen Anaconda.

CRAN usa el comando install.packages incorporado. Actualmente hay más de 12,000 paquetes disponibles en ciencia de datos. Los paquetes en PyPi son aproximadamente 145438+00000, y algunos están dedicados a la ingeniería científica.

p>

Hay duplicaciones en ambos. Cuando buscas "Random Forest", obtienes 170 elementos en PyPi. los paquetes no son los mismos

Si bien la cantidad de paquetes para Python es 10 veces mayor que la de R, la cantidad de paquetes relacionados con la ciencia de datos es aproximadamente la misma

La ejecución. velocidad

Tiene más sentido comparar marcos de datos con pandas

Se realizó un experimento para comparar el tiempo de ejecución de 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://nb Viewer.jupyter.org /gist/Brian ray/4ce 15234 E6 AC 2975 b 335 c 8d 90 a 4 b 6882

Como puede ver, Python+Pandas es más rápido que los marcos de datos 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í comparamos ggplot2 con matplotlib.

Matplotlib está escrito por John D. Hunter. Es una de las personas que más respeto en la comunidad Python y la persona que me enseñó a usar Python.

Matplotlib es difícil de aprender, pero se puede personalizar y ampliar. Ggplot es difícil de personalizar y a algunas personas les resulta aún más difícil aprenderlo.

Si te gustan los gráficos bonitos y no necesitas personalizarlos, entonces R es una buena opción. Si quieres hacer más, Matplotlib o incluso lentes interactivos son buenos. Asimismo, ShinnyR para r puede aumentar la interactividad.

¿Se pueden utilizar al mismo tiempo?

Te preguntarás, ¿por qué no puedes usar el lenguaje Python y R al mismo tiempo?

Puedes utilizar ambos lenguajes al mismo tiempo si:

Licencia de empresa u organización;

Ambos están fácilmente disponibles en tu entorno de programación Configuración y mantenimiento ;

No es necesario que su código ingrese a otro sistema;

No causará problemas ni confusión a quienes cooperen.

El método para utilizar ambos lenguajes es:

Los paquetes proporcionados por Python a R: como rpy2, pyRserve, Rpython, etc.

r también tiene los paquetes correspondientes: rPython, PythonInR, reticulate, rJython, SnakeCharmR, XRPython.

Usa Jupyter, ambos al mismo tiempo. El ejemplo es el siguiente:

Después de eso, el marco de datos de panda se puede transmitir y luego convertir automáticamente en un marco de datos R a través de rpy2, usando "-i df" para convertir:

http://nbviewer.jupyter.org/gist/Brian ray/734 BD 54 f 468d 9 a6 db 9171 B2 CFC 98405 a

Predicción

Alguien en Kaggle ha escrito Es para desarrolladores en el kernel R o Python A. 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ística, usas r Es más probable que uses Python; 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 seas un usuario de Python;

Si participas en un concurso de programación, es más probable que lo seas. un usuario de Python;

p>

Si quieres usar Android el próximo año, es más probable que seas un usuario de Python;

Si quieres aprender SQL el próximo año , es más probable que seas un usuario de R;

Si usas MS Office, es más probable que seas un usuario de r;

Si quieres usar 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 usas agile metodologías, es más probable que seas un usuario de Python;

Si estás más preocupado que entusiasmado con la inteligencia artificial, entonces es más probable que seas un usuario de R.

Preferencias personales y de empresa

Cuando me comuniqué con Google y el gurú de Stack Overflow, Alex Martelli, me explicó por qué Google solo admitía oficialmente unos pocos idiomas al principio. Incluso en un entorno relativamente desarrollado como Google, existen restricciones 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 en utilizar el idioma. La primera persona que utilizó R en Deloitte todavía trabaja en la empresa y actualmente es el científico jefe de datos. Mi consejo es que elijas el idioma que te guste, ames el idioma que elijas, tomes la iniciativa y ames tu carrera.

Cuando estás trabajando en 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, uso principalmente Python y espero aprender más sobre R.

iv>