Lenguajes de programación para realizar ciencia de datos

Este documento es un extracto del artículo publicado en FreeCodeCamp.com por Peter Gleeson, Which languages should you learn for data science?  el 31 de agosto de 2017. Me ha parecido interesante traducirlo para los lectores hispanohablantes que además complementa el artículo de lenguajes de programación para GIS.

lenguajes para ciencia de datos

La ciencia de datos es un campo emocionante para trabajar, combinando habilidades estadísticas y cuantitativas avanzadas con capacidad de programación en el mundo real. Hay muchos lenguajes de programación en los que un aspirante a científico de datos puede considerar especializarse.

Echemos un vistazo a algunos de los lenguajes más populares utilizados en la ciencia de datos:

R

Lanzado en 1995 como descendiente directo del antiguo lenguaje de programación S, R se ha ido fortaleciendo. Escrito en C, Fortran y en sí mismo, el proyecto cuenta actualmente con el apoyo de la R Foundation for Statistical Computing.

Licencia: ¡Gratis!

Ventajas

  • Excelente gama de paquetes de código abierto y de alta calidad. R tiene un paquete para casi todas las aplicaciones cuantitativas y estadísticas imaginables. Esto incluye redes neuronales, regresión no lineal, filogenia, cartografía, mapas y muchos, muchos otros.
  • La instalación básica viene con funciones y métodos estadísticos integrales muy completos. R también maneja el álgebra de matriz particularmente bien.
  • La visualización de datos es una fortaleza clave con el uso de bibliotecas como ggplot2.

Contras

  • Rendimiento. R no es un lenguaje rápido. Esto no es un accidente. R fue diseñado a propósito para facilitarle el análisis de datos y las estadísticas. No fue diseñado para hacer la vida más fácil para tu computadora. Mientras que R es lento en comparación con otros lenguajes de programación, para la mayoría de los propósitos, es lo suficientemente rápido.
  • Especificidad de dominio. R es fantástico para fines estadísticos y científicos de datos. Pero no es tan fantástico para programaciones de propósito general.
  • Raro. R tiene algunas características poco frecuentes que pueden atrapar a los programadores con experiencia en otros idiomas. Por ejemplo: indexación desde 1, utilizando operadores de asignación múltiple, estructuras de datos no convencionales.

Veredicto: «brillante para lo que está diseñado»

R es un lenguaje poderoso que sobresale en una gran variedad de aplicaciones de visualización de datos y estadística, y ser de código abierto permite tener una comunidad muy activa de contribuyentes. Su reciente crecimiento en popularidad es un testimonio de lo eficaz que es.

Si quieres aprender a trabajar con R, ahora puedes inscribirte a nuestro curso online de R y GIS.

Python

Guido van Rossum presentó Python en 1991. Desde entonces, se ha convertido en un lenguaje de uso general extremadamente popular, y se utiliza ampliamente en la comunidad de data science.

Licencia: ¡Gratis!

Ventajas

  • Python es un lenguaje de programación de uso general muy popular y general. Cuenta con una amplia gama de módulos específicos y soporte comunitario. Los principales GIS de escritorio como ArcGIS (con la ArpPy), QGIS (con PyQGIS) o gvSIG la introducción de Python.
  • Python es un lenguaje fácil de aprender. La baja barrera de entrada lo convierte en un primer idioma, lo que es ideal para aquellos que son nuevos en programación.
  • Paquetes como pandas, scikit-learn y Tensorflow hacen de Python una opción sólida para aplicaciones avanzadas de aprendizaje automático.

Contras

  • Seguridad de tipos: Python es un lenguaje de tipo dinámico, lo que significa que debemos ser muy cuidadosos. Los errores de tipo (como pasar una string como un argumento a un método que espera un número entero) deben esperarse de vez en cuando.
  • Para los fines específicos de análisis estadístico y de datos, la amplia gama de paquetes de R le da una ligera ventaja sobre Python. Para los lenguajes de propósito general, hay alternativas más rápidas y seguras que Python.

Veredicto

Python es una muy buena opción de lenguaje para la ciencia de datos, y no solo en el nivel de entrada. Gran parte del proceso de ciencia de datos gira en torno al proceso ETL (extracción-transformación-carga). Esto hace que la generalidad de Python encaje perfectamente. Las librerías como Tensorflow de Google hacen de Python un lenguaje muy emocionante para el aprendizaje automático (machine learning).

Si quieres aprender a trabajar con Python, ahora puedes inscribirte a nuestro curso online de Análisis Geoespacial con python.

SQL

SQL («lenguaje de consulta estructurado») define, administra y consulta bases de datos relacionales. El lenguaje apareció en 1974 y desde entonces ha sufrido muchas implementaciones, pero los principios básicos siguen siendo los mismos.

Licencia: Varía, ya que algunas implementaciones son gratuitas y otras son propietarias.

Ventajas

  • Muy eficiente en consultas, actualización y manipulación de bases de datos relacionales.
  • La sintaxis declarativa hace de SQL un lenguaje muy legible. ¡No hay ambigüedad sobre lo que de debe hacer
SELECT name FROM users WHERE age > 18
  • SQL utilizado en una amplia gama de aplicaciones, por lo que es un lenguaje muy útil para estar familiarizado. Los módulos como SQLAlchemy hacen que la integración de SQL con otros lenguajes sea sencillo.

Contras

  • Las capacidades analíticas de SQL son bastante limitadas: más allá de agregar y sumar, contar y promediar datos, sus opciones son limitadas.
  • Para los programadores que vienen de un contexto imperativo, la sintaxis declarativa de SQL puede presentar una curva de aprendizaje.
  • Hay muchas implementaciones de SQL como PostgreSQL, SQLite, MariaDB. Todas son lo suficientemente diferentes como para hacer que la interoperabilidad sea un dolor de cabeza.

Veredicto

SQL es más útil como lenguaje de procesamiento de datos que como herramienta analítica avanzada. Sin embargo, gran parte del proceso de la ciencia de la información depende de ETL, y la longevidad y la eficiencia de SQL son una prueba de que es un lenguaje muy útil para el científico de datos moderno.

Java

Java es un lenguaje extremadamente popular que se ejecuta en la Máquina Virtual Java (JVM). Es un sistema informático abstracto que permite una portabilidad perfecta entre plataformas. Actualmente respaldado por Oracle Corporation.

Licencia: ¡Gratis! Versiones heredadas, propietarias.

Ventajas

  • Ubicuidad. Muchos sistemas y aplicaciones modernas se basan en un back-end de Java. La capacidad de integrar métodos de ciencia de datos directamente en la base de código existente es poderosa.
  • Fuertemente tipado. Java es un buen lenguaje cuando se trata de garantizar la seguridad de tipos. Para aplicaciones de big data de misión crítica, esto es muy importante.
  • Java es un lenguaje compilado de propósito general y alto rendimiento. Lo que lo hace adecuado para escribir eficientes códigos de producción ETL y algoritmos de machine learning muy intensivos computacionalmente.

Contras

  • Para análisis ad-hoc y aplicaciones estadísticas más dedicadas, la verbosidad de Java hace que sea una primera opción poco probable. Los lenguajes de script de tipado dinámico como R y Python se prestan a una productividad mucho mayor.
  • En comparación con los lenguajes específicos de dominio como R, no dispone de muchas librerías disponibles para métodos estadísticos avanzados.

Veredicto

Hay mucho que decir para aprender Java como un lenguaje de ciencia de datos de primera elección. Muchas compañías apreciarán la capacidad de poder integrar el código de producción de ciencia de datos directamente en la base de un código ya existente, y además encontramos que el rendimiento de Java y la seguridad de tipos son muy ventajosos.

Sin embargo, no dispone de una variedad de paquetes específicos de estadísticas. Dicho esto, se trata de un lenguaje a considerar, especialmente si ya conoces  R y/o Python.

Scala

Desarrollado por Martin Odersky y lanzado en 2004, Scala es un lenguaje que se ejecuta en la Máquina Virtual Java (JVM). Es un lenguaje de múlti paradigmático, que permite tanto enfoques orientados a objetos como funcionales. El framework de computación de cluster Apache Spark está escrito en Scala.

Licencia: ¡Gratis!

Ventajas

  • Scala + Spark = Computación en clúster de alto rendimiento. Scala es un lenguaje ideal para quienes trabajan con conjuntos de datos de gran volumen.
  • Multi-paradigmático: los programadores de Scala pueden tener lo mejor de ambos mundos. Tanto la programación orientada a objetos como funcional.
  • Scala se compila en el bytecode de Java y se ejecuta en una JVM. Esto permite la interoperabilidad con el lenguaje Java en sí, haciendo de Scala un lenguaje de propósito general muy poderoso, además de ser adecuado para la ciencia de datos.

Contras

  • Scala no es un lenguaje sencillo para comenzar a utilizar si está empezando. Lo mejor es descargar sbt y configurar un IDE como Eclipse o IntelliJ con un complemento específico de Scala.
  • La sintaxis y el sistema de tipos  se describen con frecuencia como complejos. Esto hace que la curva de aprendizaje sea pronunciada para aquellos que vienen de lenguajes dinámicos como Python.

Veredicto

Cuando se trata de usar la computación en clúster para trabajar con Big Data, Scala + Spark son soluciones fantásticas. Si tienes experiencia con Java y otros lenguajes de tipado estático, también apreciarás las características de Scala.

Sin embargo, si tu aplicación no maneja los volúmenes de datos que justifiquen la complejidad agregada de Scala, es probable que tu productividad sea mucho mayor al usar otros idiomas, como R o Python.

Julia

Lanzada en 2011, Julia impresionó al mundo de la computación numérica. Su perfil se elevó gracias a la adopción temprana por parte de varias organizaciones importantes, incluidas muchas de la industria financiera.

Licencia: ¡Gratis!

Ventajas

  • Julia es un lenguaje compilado JIT (‘just-in-time‘), que le permite ofrecer un buen rendimiento. También ofrece las capacidades de simplicidad, tipado dinámico y scripting de un lenguaje interpretado como Python.
  • Julia fue diseñada específicamente para el análisis numérico. Pero también ofrece programación de propósitos generales.
  • Legibilidad. Muchos usuarios del lenguaje mencionan ésto como una ventaja clave.

Contras

  • Madurez. Como nuevo idioma, algunos usuarios de Julia han experimentado inestabilidad al usar paquetes complementarios. Pero el núcleo del lenguaje es, al parecer, lo suficientemente estable para usar en producción.
  • Los paquetes limitados son otra consecuencia de la juventud del lenguaje y de la pequeña comunidad de desarrollo. A diferencia de R y Python, Julia no tiene la posibilidad de disponer de paquetes (todavía).

Veredicto

El principal problema de Julia es su juventud. Como lenguaje reciente, no es tan maduro como sus principales alternativas: Python y R.

Si estás dispuesto a ser paciente, hay muchas razones para prestarle atención, estaremos atentos de ver cómo evoluciona en los próximos años.

MATLAB

MATLAB es un lenguaje de computación numérica que se utiliza en el mundo académico y en la industria. Desarrollado y licenciado por MathWorks, una compañía establecida en 1984 para comercializar el software.

Licencia: Propietario – los precios varían dependiendo del caso.

Ventajas

  • Diseñado para la computación numérica. MATLAB es adecuado para aplicaciones cuantitativas con requisitos matemáticos sofisticados, como procesamiento de señales, transformaciones Fourier, álgebra matricial y procesamiento de imágenes.
  • Visualización de datos. MATLAB tiene incorporadas grandes capacidades de ploteado.
  • MATLAB se enseña con frecuencia como parte de cursos de pregrado en asignaturas cuantitativas como Física, Ingeniería y Matemáticas Aplicadas. Como consecuencia, es ámpliamente utilizado en estos campos.

Contras

  • Licencia propietaria. Dependiendo del caso (uso académico, personal o empresarial) es posible que tengamos que desembolsar una gran cantidad de dinero. Existen alternativas gratuitas disponibles como Octave.
  • MATLAB no es una opción obvia para programación de propósito general.

Veredicto

El uso generalizado de MATLAB en una variedad de campos cuantitativos y numéricos tanto en la industria como en el mundo académico, lo convierte en una opción seria para la ciencia de datos.

Un caso de uso claro sería aquel en el que tu aplicación requiera una funcionalidad matemática intensiva y avanzada. De hecho, MATLAB fue diseñado específicamente para esto.

Conclusión

Bueno, hemos visto una guía rápida sobre qué idiomas considerar para la ciencia de datos. La clave aquí es comprender los requisitos de uso en términos de generalidad frente a especificidad, así como tu estilo de desarrollo preferido de rendimiento frente a productividad.

Para un técnico GIS que quiera comenzar a realizar ciencia de datos, lo ideal es utilizar R, Python o SQL. Ya que las funciones más comunes serán desarrollar procesos de datos existentes y procesos ETL. Estos lenguajes proporcionan un equilibrio adecuado entre generalidad y productividad, con la opción de utilizar  paquetes de estadísticas más avanzados de R cuando sea necesario.

Si tienes experiencia con Java, quizá desees utilizar Scala para grandes datos. O, tal vez, estés interesado en involucrarte en el proyecto Julia.

En MappingGIS tenemos varios cursos online de R, Python y SQL que podrás aplicar a tus proyectos de ciencia de datos geográficos.