Boletín No. 76
1o. de enero de 2020
REPRESENTACIÓN GRÁFICA DE DATOS ESTADÍSTICOS EN PYTHON UTILIZANDO LA BIBLIOTECA MATPLOTLIB
Ing. Esther Viridiana Vázquez Carmona
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Ing. Rodrigo Vázquez López
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Dr. Juan Carlos Herrera Lozada
Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.
Instituto Politécnico Nacional
Centro de Innovación y Desarrollo Tecnológico en Cómputo
Resumen
Hoy en día, en el análisis de la información se estila representar los datos en gráficos que tienen por objetivo servir de apoyo visual para transmitir de una manera sencilla y comprensible dicha información. Este documento tiene como finalidad exponer diferentes formas de representación gráfica tales como: diagramas de barras, histogramas, gráficos de sectores, gráfico de líneas y gráficas 3D, a través del lenguaje Python, leyendo los datos desde un archivo de valores separados por comas (CSV) que contiene información de sensores de humedad, presión y temperatura además de formar parte de un trabajo previo (Vázquez Carmona et al., 2019). Igualmente, se muestra el procedimiento para realizar la lectura de este tipo de archivos y posteriormente realizar las gráficas antes mencionadas. Adicionalmente se habla acerca de las diferentes bibliotecas que hay en Python para visualizar información como: Seaborn, Bokeh, Pygal y Plotly, concentrando el trabajo en la biblioteca Matplotlib que además de funcionar en scripts de Python, funciona también en aplicaciones web.
I. Introducción
Un gráfico es la representación visual para transmitir información de una serie de datos estadísticos que facilitan su comparación para deducir ciertos comportamientos y posteriormente tomar decisiones en base a lo obtenido. Actualmente existen diferentes herramientas para desarrollar este tipo de representaciones, sin embargo, el trabajo se centra en realizar el procedimiento a través del leguaje Python, ya que es un lenguaje fácil de aprender en comparación con otros, además de que el script puede ser reproducido en cualquier plataforma.
1.1 Lenguaje Python
Python es un lenguaje de programación que se implementó en 1989, es un lenguaje interpretado de alto nivel, es decir convierte el código a lenguaje máquina a medida que se ejecuta; cabe destacar que el lenguaje máquina es un conjunto de instrucciones que únicamente entiende el procesador. Python permite múltiples paradigmas y estilos de programación tales como: orientado a objetos (herencia y polimorfismo), imperativo (con sentencias de bucle) y funcional (con módulos y funciones) (Lenguajes de programación, 2019), además de ser una plataforma libre y de código abierto.
1.2 Bibliotecas para gráficos en Python
Python se ha convertido en uno de los lenguajes más populares de hoy en día, ya que una de sus características es su flexibilidad. Cuenta con diferentes bibliotecas, las cuales son un conjunto de funciones que proporcionan un servicio o tarea específica al ser invocadas. Las bibliotecas encargadas de la visualización de datos son uno de los tantos servicios que brindan dichas bibliotecas. Existen diferentes tipos de bibliotecas para la creación de gráficos en Python, como Seaborn, Bokeh, Pygal, Plotly y Matplotlib (BBVA API_Market, 2015).
1.3 Tipos de representaciones gráficas
Cuando se requiere representar la información a través de una correlación estadística se hace mediante líneas, vectores o superficies, que están plasmados en gráficos, estos pueden ser de gráficas de barras, histogramas, gráficos de sectores, gráfico de líneas y gráficas 3D, entre otros. A continuación, se presenta a detalle la descripción de cada una de ellas.
Gráficas de barras: Estas gráficas representan a la variable a través de barras, de modo que la altura de cada una de ellas sea proporcional a la frecuencia o porcentaje de casos en cada caso, la orientación de estas puede ser horizontal o vertical (Euskadi.es, s.f., 2019).
Histogramas: Se usan para representar las frecuencias de una variable, en uno de los ejes se posicionan los intervalos y en el otro eje las frecuencias. Cabe destacar que no existen separación entre dichas barras (Euskadi.es, s.f., 2019).
Gráficas de sectores: Este tipo de gráficas circulares o de tarta, dividen un círculo en porciones proporcionales según el valor de las frecuencias relativas (Euskadi.es, s.f., 2019).
Gráficas de líneas: Un gráfico de líneas es una representación gráfica en un eje cartesiano de la relación que existe entre dos variables reflejando con claridad los cambios producidos (Fisterra.com, 2014).
Gráficas 3D: Se llaman gráficos 3D a todos los objetos que se pueden dibujar en un espacio R3: puntos, segmentos, curvas, superficies y varios cuerpos formados por caras poligonales (Gráficos en tercera dimensión (3D) con Python y Matplotlib", s.f.).
2. Desarrollo
Para la adquisición de datos de las variables de humedad, presión barométrica y temperatura se desarrolló previamente un prototipo de un sistema de monitoreo de variables climáticas que funciona a través de los sensores DHT- 22 y BMP-180, logrando mostrar los datos en el monitor serie proporcionado por el IDE de Arduino, estos datos a su vez se encuentran almacenados en un archivo de valores separados por comas (CSV) para hacer uso de ellos a continuación.
2.1 Diseño del software para la representación de datos en Python
Como primera etapa se realizó la codificación que se encarga de hacer la lectura de los datos a partir del archivo CSV que contiene los valores de cada uno de los sensores, el código para la lectura de estos se describe en la figura 1.
Figura 1. Algoritmo codificado en Python para la lectura de datos. |
Como segunda etapa se realizó la codificación que se encarga de la visualización de cada gráfico. En la figura 2 se puede observar el código que corresponde a un diagrama de barras haciendo uso de los datos de los sensores.
Figura 2. Algoritmo codificado en Python para gráfica de barras. |
En la figura 3 se puede observar el código que corresponde a un histograma.
Figura 3. Algoritmo codificado en Python para histograma. |
En la figura 4 se puede observar el código que corresponde a un gráfico de sectores.
Figura 4. Algoritmo codificado en Python para un gráfico de sectores. |
En la figura 5 se puede observar el código que corresponde a un gráfico de líneas.
Figura 5. Algoritmo codificado en Python para un gráfico de líneas. |
En la figura 6 se puede observar el código que corresponde a un gráfico en 3D.
Figura 6. Algoritmo codificado en Python para un gráfico 3D. |
3. Resultados
Los resultados que se obtuvieron al ejecutar cada uno de los bloques de código se presentan a continuación. En la figura 7 se observa la gráfica de barras.
Figura 7. Gráfica de barras de la variable humedad. |
En la figura 8 se observa el gráfico que corresponde a un histograma.
Figura 8. Histograma de la variable temperatura. |
En la figura 9 se observa el gráfico que corresponde a un gráfico por sectores.
Figura 9. Gráfico por sectores que representa el máximo y el mínimo de la variable temperatura. |
En la figura 10 se observa el gráfico que corresponde a una gráfica de líneas.
Figura 10. Gráfico por sectores que representa el máximo y el mínimo de la variable temperatura. |
En la figura 11 se observa el gráfico que corresponde a una gráfica 3D.
Conclusiones
Existe una gran variedad de bibliotecas que permiten la creación de gráficos en Python, sin embargo, Matplotlib es un paquete completo, ya que permite la inserción de otros módulos como Pyplot, Pylab y Basemap que admiten trabajar con figuras en 3D, mapas y operaciones como en MATLAB, con la diferencia de que es libre.
Referencias
- Shaw, Z. A. (2017) Aprenda a programar con Python 3. (Ed. rev.). España, España: Anaya.
- BBVA API_Market. (2015, 17 julio) Cinco librerías en Python para científicos de datos: cómo visualizar información. Recuperado 4 octubre, 2019, de https://bbvaopen4u.com/es/actualidad/cinco-librerias-en-python-para-cientificos-de-datos-como-visualizar-informacion
- Euskadi.eus. (s.f.-b) Representación gráfica de datos estadísticos.Recuperado 2 octubre, 2019, de https://www.hiru.eus/es/matematicas/representacion-grafica-de-datos-estadisticos.
- Fisterra.com. (2014, 6 abril) Representación gráfica en el Análisis de Datos. Recuperado 4 octubre, 2019, de https://www.fisterra.com/mbe/investiga/graficos/graficos.asp
- (s.f.) Gráficos en tercera dimensión (3D) con Python y Matplotlib.Recuperado 4 octubre, 2019, de http://www.pythondiario.com/2018/08/graficos-en-tercera-dimension-3d-con.html
- Autor (2019, 25 septiembre) Lenguajes de programación. Lenguaje de programación Python características y ejemplos. Recuperado 4 octubre, 2019, de https://lenguajesdeprogramacion.net/python/
- Matplotlib. (2019, 26 agosto) Matplotlib: Python plotting — Matplotlib 3.1.1 documentation. Recuperado 4 octubre, 2019, de https://matplotlib.org
- Matplotlib. (2019b, 26 agosto) Pyplot tutorial — Matplotlib 3.1.1 documentation.Recuperado 4 octubre, 2019, de https://matplotlib.org/3.1.1/tutorials/introductory/pyplot.html
- Montoro, A. F. (2012) Python 3 al descubierto. RC Libros.
- Programación en Castellano, S.L. (s.f.) Introducción a pandas. Recuperado 4 octubre, 2019, de https://programacion.net/articulo/introduccion_a_pandas_1632
- Queirozf.com. (2019, 31 agosto) Matplotlib, Pyplot, Pylab etc: What's the difference between these and when to use each?Recuperado 4 octubre, 2019, de http://queirozf.com/entries/matplotlib-pylab-pyplot-etc-what-s-the-different-between-these texto restante
- Vázquez Carmona, E., Vázquez López, R., & Herrera Lozada, J. (2019) ARDUINO: MONITOREO DE VARIABLES CLIMÁTICAS HACIENDO USO DE LOS SENSORES BMP-180, DHT-22 Y NEO-6M.Boletín UPIITA.Recuperado de http://www.boletin.upiita.ipn.mx/index.php/ciencia/831-cyt-numero-74/1739-arduino-monitoreo-de-variables-climaticas-haciendo-uso-de-los-sensores-bmp-180-dht-22-y-neo-6m 74, 1–6.