Archivos de la categoría Ciencia de Datos

Un buen libro para aprender R

Esta primavera del 2020 circuló en México una lista de libros de libre acceso que la editorial Springer puso a disposición del público. En esa lista encontré A Beginner’s Guide to R de Alain F. Zuur, Elena N. Ieno y Erik H.W.G. Meesters. Un libro que necesitaba haber descubierto antes.

Su objetivo es que el lector aprenda R; parte de un poco de historia sobre este lenguaje de programación con enfoque estadístico, ayuda a instalar el programa, explica de una manera muy amplia y ejemplificada cómo importar y manipular datos; tiene un capítulo dedicado a la función plot y a algunos de los parámetros básicos de esta función con los cuales ya se puede hacer gráficas llamativas, aparte otro donde se abunda en las opciones para obtener justo la gráfica que te imaginas; introduce las funciones a través de ciclos (loops) y de condicionales para facilitarte la vida.

Muestra todo esto a partir de ejemplos que cada lector puede reproducir a partir de un conjunto de archivos que se encuentran en la página www.highstat.com, (o en este repositorio de github) y de ejercicios en donde aprenderás a hacer 32 gráficas a partir de un sencillo código, cada una con su título particular.

A diferencia de otros títulos que intentan enseñar estadística a la par, éste tiene el objetivo más sencillo de enseñar R, con lo cual se gana mucha claridad. La forma amena en la que se presenta el material es un incentivo adicional muy bienvenido.

Es parte de la serie Use R! que consta de 71 volúmenes dedicados a practicantes de R en diversas áreas de conocimiento; la serie cuenta con títulos como A Political Analysis using R, Biostatistics, Solving Differential Equations with R e incluso libros dedicados a paquetes específicos como ggplot2 (muy bueno aunque esos no están de libre acceso).

Desde el año 2011 existe un entorno de desarrollo integrado libre y de código abierto para trabajar con R llamado RStudio. Cabe señalar que el libro fue publicado en el 2009. Esto no implica que haya partes oscuras a la hora de leer el texto, por el contrario, ayuda a entender mejor las ventanas de la interfaz y su ambiente gráfico.

En resumen, no se debe perder la oportunidad de descargar este libro para comenzar como todo un profesional con la programación en R.

Datos patológicos

Así es, muchas veces los datos presentan patologías; estás pueden ser de dos tipos:

  1. de contenido: entradas duplicadas, datos atípicos, valores nulos, o
  2. de formato: extraño uso de mayúsculas, o espacios de más.

En esta entrada veremos la amplia gama de detalles de contenido que aparecen en las bases de datos de la vida real, y de qué manera se pueden abordar esos problemitas. Todo esto forma parte del pre-procesamiento de datos.

Sin duda manipular cadenas de texto puede parecer tedioso a primera vista, pero es un arma muy poderosa para un científico de datos; con esta manipulación se atacan problemas de formato, y se crean scripts que permitan obtener la información necesaria de los datos crudos.

A veces uno se imagina los datos acomodados en tablas, ahí están los datos sólo esperando que uno saque gráficas, regresiones, clusters… sin embargo muchas veces los datos tienen diferentes formatos, y hay que extraer los que puedan ayudar a encontrar el “panorama tan anhelado”

Para identificar patologías se pueden recurrir a buenas prácticas como mirar directamente a los datos, ver cómo están conformados, qué tipos de datos hay; si existe documentación disponible, es recomendable leerla; tener a la mano una lista de preguntas que hacer sobre la base de datos: ¿qué contiene cada columna?, ¿qué identificadores se encuentran en cada tabla? Por último, se recomienda rectificar varias veces que la información que tenemos de los datos coincida con lo que estamos obteniendo.

Las patologías de contenido son:

  1. Entradas duplicadas. A veces las entradas dobles son importantes de alguna manera en la vida real. El procedimiento en este caso es hacer otra columna que contenga sólo las entradas únicas.
  2. Entradas múltiples para una sola entidad. Esto sucede de manera más frecuente cuando es una columna la que cambia constantemente; puede suceder también que haya diferentes procesos unidos a una sola forma de identificarlo, a veces la información sobre cada proceso está en alguna otra columna o tabla.
  3. Entradas faltantes. Suceden porque hubo alguna característica en las entidades que sacó los valores del conjunto de datos, o porque nunca fue recolectada esa parte de la información.
  4. Valores NULL. Estos valores generalmente dicen que no conocemos una parte particular de la información sobre una entidad y no pueden ser procesados por muchos algoritmos a la hora de hacer el análisis, en este caso es necesario cambiar esto valores por alguna aproximación adecuada, quizá la media de los valores no nulos. Otras veces es una característica importante y aporta información sobre los procesos descritos en las tablas, tal vez no hubo tales procesos.
  5. Datos atípicos grandes. Los atípicos a veces están porque realmente existieron, pero depende mucho del concepto. En el contexto de tráfico en una página web, un dato atípico puede significar un ataque de bots. Otras veces se trata como datos inexistentes. A veces los sistemas de almacenamiento no permiten tener valores NULL y lo que ponen es valores arbitrarios
  6. Datos expirados. En las bases de datos, cuando una entrada es registrada, también queda anotado el timestamp, es decir, el momento preciso en que se captura la información, cuando se actualiza la entrada no se sustituye sino se crea otra con el tiempo adecuado. Entonces hay bases de datos con mucha información de sobra, a menos que se quiera estudiar la historia de la misma.
  7. Entradas artificiales. A veces se crean escenarios artificiales para hacer pruebas.
  8. Espacios irregulares. Muchos algoritmos que procesan datos asumen que los datos se recuperan en un intervalo de tiempo constante por lo que se identifica un problema cuando los datos no se presentan con este patrón. En caso de que hagan falta valores suele hacerse una interpolación para recuperar los datos inexistentes.

Limpiar los datos es una parte de la ciencia de datos en donde más código se desarrolla. Es una parte donde usarás mucho la creatividad y será necesario experimentar; es el momento para entender los datos, y seleccionar los que te ayudaran a sacar las mejores conclusiones según lo que se busca.

Bibliotecas de Python para ciencia de datos

Python es un lenguaje de programación que ha tenido mucha fama por su sintaxis sencilla y la cantidad de proyectos que se pueden desarrollar usándolo. Es un lenguaje orientado a objetos pero también es un lenguaje de programación funcional y programación imperativa que trabaja en todos los sistemas operativos.

Python tiene una gran biblioteca estándar, de la que se pueden usar una gran cantidad de herramientas. En particular para hacer análisis de datos hay unas que resulta básico conocer, aquí las principales:

NumPy. Biblioteca que da soporte al cálculo con matrices y vectores; ayuda al manejo de arreglos numéricos de manera rápida y eficiente. Y en el fondo, Pandas opera sobre arreglos de Numpy.

Pandas. Esta biblioteca permite el análisis de datos a través de series y «dataframes». Es la gran aliada en el análisis de datos, guarda y opera con datos en forma de tablas. Tiene herramientas para la lectura y escritura de datos en diferentes formatos: CSV y archivos de texto, archivos de Excel, bases de datos en SQL, y en formato HDF5. Es posible tomar rebanadas de la información, una indexación elegante y tomar subconjuntos de grandes cantidades de datos.

Matplotlib. Con esta biblioteca se hacen las gráficas y las visualizaciones. Es un poco torpe a la hora de trabajar sólo con ella, pero se puede arreglar usando también seaborn, que es una biblioteca que provee una interfaz de alto nivel para hacer gráficas estadísticas atractivas e informativas

SciPy. Biblioteca que permite realizar análisis científico como optimización, álgebra lineal, integración, ecuaciones diferenciales entre otras. Provee varias funciones que hacen cálculos sobre arreglos de NumPy.

Scikit-learn. Biblioteca que implementa algoritmos de aprendizaje automático. Opera en arreglos de NumPy. Con sus herramientas se pueden hacer tareas como clasificaciones, regresiones, clusters, selección de modelos, preprocesamiento de datos

Nota final. Para trabajar en Python se debe tener en cuenta la versión a instalar ya que a partir del 1° de enero del 2020 no se le dará soporte a la versión 2.0, solo habrá actualizaciones para las versiones siguientes a la 3.5.

Lenguajes de programación para un científico de datos

Con probabilidad casi uno, en un proyecto de ciencia de datos siempre se necesita un poco de código. Algunos científicos encuentran más conveniente trabajar directamente con un lenguaje de programación con librerías numéricas suplementarias mientras hay quienes prefieren pelearse con los datos con un lenguaje de programación y luego cargar el conjunto de datos en otra herramienta para su análisis exploratorio.

Las herramientas que existen para incorporarlas en el ciclo del trabajo de un científico de datos están las siguientes:

  • Excel – que para análisis simple de datos es una muy buena herramienta.
  • Tableau –  que cuando funciona se obtienen gráficas muy bonitas.
  • Weka – es una herramienta para aplicar algoritmos de aprendizaje máquina prefabricados y trabaja con Java.

Estas herramientas trabajan con datos que están acomodados en tablas; sin embargo, la mayoría de las veces cada conjunto de datos necesita su propio tratamiento para obtener las características que se necesitan, en particular si los datos están en formas muy alejadas de una tabla. Es por esto que un científico de datos necesita dominar muy bien al menos un lenguaje de programación.

Inspección de los lenguajes de programación para un científico de datos (al menos los más populares).

  1. Python. Es un lenguaje de programación de propósito general . Actualmente es el lenguaje preferido entre los científicos de datos porque tiene un balance entre flexibilidad de una escritura convencional con los músculos de buenos paquetes matemáticos. La primera versión de Python salió en 1991 y hay muchos paquetes que lo hacen muy poderoso.
  2. R. Es un lenguaje de programación diseñado para estadísticos y con él es fácil hacer gráficas, está dotado de muchas funciones analíticas. Su desarrollo está basado en S que fue creado en los Laboratorios Bell en 1976.
  3. Matlab® and Octave. Recientemente de manera general se está optando por software libre, es por eso que Matlab no es tan sonado como los dos lenguajes anteriores.  Muchos científicos de datos que vienen de áreas como ingeniería o física suelen conocer bien Matlab. Un programa muy similar a él es Octave, con la facilidad de que se puede conseguir de manera libre.
  4. SAS®. Es un programa muy bueno para hacer estadística aunque quizás no lo sea para ciencia de datos.
  5. Scala®. Promete ser un buen lugar para científicos de datos aunque actualmente no tiene paquetes con los que se pueda hacer imágenes y análisis. Funciona muy bien para código de propósitos generales y para producción de software de gran escala.

Como conclusión es muy recomendable conocer Python, es un lenguaje famoso en el área en estos momentos, tiene muchos paquetes con herramientas para hacer buenos análisis y gráficas. Un buen libro para comenzar a enterarse de este lenguaje es Think Python de Allen B. Downey; otro libro enfocado a ciencia de datos es Python for Data Analysis por Wes Mackinney. Éstas son algunas opciones, pero hay gran cantidad de bibliografía que se puede consultar y de la que seguramente se puede aprender mucho.