Google+ Seguidores

domingo, 10 de diciembre de 2017

Visualización de Datos con Python y Matplotlib

Introducción:

En este articulo, tengo el objetivo de presentar los principios básicos para visualizar datos con el software gráfico Matplotlib escrito en Python.

Con Matplotlib, podremos generar gráficos a partir de cualquier dato que le pasemos. Por ejemplo, graficar una función lineal.

Algo muy común que se suele hacer, es graficar la pendiente de una recta. Con la ecuación lineal, podemos obtener los datos, los cual nos harán saber por cuales puntos tendrá que pasar la recta. Luego de obtener estos datos, con lápiz y regla en mano, graficamos nuestra recta, de esta forma obtenemos la ecuación lineal en su forma gráfica.

Este, y muchos otros procedimientos más, se pueden realizar de manera sencilla con el software Matplotlib.

Si quieres ver y descargar todos los ejemplos realizados en este articulo, ingresa al siguiente enlace: Visualización de Datos - Python y Matplotlib Ejemplos

Puedes descargar el modulo Matplotlib desde tu shell en windows o linux. O puedes ingresar al siguiente enlace: Matplotlib 2.1.0.


Resultado de imagen para matplotlib logo

Visualización de Datos con Matplotlib:

No pretendo aburrirlos, así que tratare de llenar el artículos con ejemplo, comencemos:

Gráfica de una función lineal:


#importamos las librerias necesarias
import matplotlib.pyplot as plt
import numpy as np

#El metodo "arange", genera un vector con los rangos definidos (-11 hasta 11)
x = np.arange(-11, 11)
# y sera nuestra ecuación lineal
y = 2*x + 3

#Los metodos axhline y axvline generan las lineas negras en forma de cruz
plt.axhline(0, color="black")
plt.axvline(0, color="black")

#Agregamos los datos de x e y en el grafico y luego lo mostramos
plt.plot(x, y)
plt.show()





Este es un ejemplo sencillo para graficar la ecuación de una recta en el plano cartesiano.

Si en vez de ver la linea quieres ver los círculos que indican las puntos, puedes sustituir al metodo plot() por el metodo scatter().


#importamos las librerias necesarias
import matplotlib.pyplot as plt
import numpy as np

#El metodo "arange", genera un vector con los rangos definidos (-11 hasta 11)
x = np.arange(-11, 11)
# y sera nuestra ecuación lineal
y = 2*x + 3

#Los metodos axhline y axvline generan las lineas negras en forma de cruz
plt.axhline(0, color="black")
plt.axvline(0, color="black")

#En vez de utilizar al metodo plot como el ejemplo anterior utilizamos scatter()
plt.scatter(x, y)
plt.show()


Graficando más datos:

Ahora, realicemos otro ejemplo. En un vector llamado "pop" e almacenado la cantidad de la población desde 1950 hasta lo que se tiene estimado para el 2100, en otro vector tengo los años de cada cantidad de la población. Lo que haremos sera graficar estos datos para que veamos mejor que incrementara la población mundial.

import matplotlib.pyplot as plt
import numpy as np

pop = np.array([2.53, 2.57, 2.62, 2.67, 2.71, 2.76, 2.81, 2.86, 2.92, 2.97, 3.03, 3.08, 3.14, 3.2, 3.26, 3.33, 3.4, 3.47, 3.54, 3.62, 3.69, 3.77, 3.84, 3.92, 4.0,  4.07, 4.15, 4.22, 4.3, 4.37, 4.45, 4.53, 4.61, 4.69, 4.78, 4.86, 4.95, 5.05, 5.14, 5.23, 5.32, 5.41, 5.49, 5.58, 5.66, 5.74, 5.82, 5.9, 5.98, 6.05, 6.13, 6.2, 6.28, 6.36, 6.44, 6.51, 6.59, 6.67, 6.75, 6.83, 6.92, 7.0, 7.08, 7.16, 7.24, 7.32, 7.4, 7.48, 7.56, 7.64, 7.72, 7.79, 7.87, 7.94, 8.01, 8.08, 8.15, 8.22, 8.29, 8.36, 8.42,8.49, 8.56, 8.62, 8.68, 8.74, 8.8, 8.86, 8.92, 8.98, 9.04, 9.09, 9.15, 9.2, 9.26, 9.31, 9.36, 9.41, 9.46, 9.5, 9.55, 9.6, 9.64, 9.68, 9.73, 9.77, 9.81, 9.85,9.88, 9.92, 9.96, 9.99, 10.03, 10.06, 10.09, 10.13, 10.16, 10.19, 10.22, 10.25,10.28,10.31,10.33, 10.36, 10.38, 10.41, 10.43, 10.46, 10.48, 10.5, 10.52, 10.55, 10.57, 10.59, 10.61,10.63,10.65,10.66,10.68,10.7, 10.72, 10.73,10.75, 10.77, 10.78, 10.79, 10.81,10.82, 10.83, 10.84, 10.85])

year = np.array([1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974,1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988,1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,2017, 2018, 2019,2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033,2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047,2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, 2058, 2059, 2060, 2061,2062, 2063, 2064, 2065, 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075,2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, 2088, 2089,2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, 2098, 2099, 2100])

plt.plot(pop, year)
plt.show()




Bueno, hay tenemos el gráfico del aumento de la población mundial desde 1950 y lo que se tiene estimado para los años posteriores hasta el 2100. Vemos que se calcula que para el 2100 la población mundial superara a las 10 billones de personas.

Como pueden observar, usar Matplotlib es muy fácil y sencillo. Para generar esta gráfica simplemente utilizo 2 métodos.

Que les parece si explicamos mejor el gráfico, colocándole un titulo y explicando de que se tratan estos números. De esta manera cualquiera podrá entender la gráfica.


...

plt.title("Incremento de la población mundial 1950-2100")
plt.ylabel("Años")
plt.xlabel("Población mundial estimada")
plt.plot(pop, year)
plt.show()



¿Que les parece? Se ve mucho mejor verdad. Con el método title podemos asignarle un titulo a nuestro gráfico , en este caso lo e bautizado como "Incremento de la población mundial 1950-2100". Luego hago uso de dos métodos nuevos, "ylabel" y "xlabel", con esto le asignamos un titulo a cada eje (al eje  x y al eje y).

Gráfica de Barras:

El submodulo pyplot de Matplotlib nos ofrece el método bar() el cual nos permite generar gráficos de barras, veamos un ejemplo:


import matplotlib.pyplot as plt
import numpy as np
#Primer conjunto de datos
x = np.array([5,8,10]) y = np.array([12,16,6])
#Segundo conjunto de datos
x2 = np.array([6,9,11]) y2 = np.array([6,15,7])
#Con los metodos bar podremos agregar el numero de barras que nos sea conveniente
plt.bar(x, y, align="center")
plt.bar(x2, y2, color="g", align="center")
#Con el metodo title, le asignamos un titulo a nuestro gráfico
plt.title("Gráfico de Barras")
#Con el metodo show mostramos el grafico en pantalla
plt.show()




Como pueden observar, e sustituido al método "plot" por el método "bar", y le pasamos como argumento, los datos almacenados en los vectores. Por defecto al método hay que pasarle como argumento el color el cual queremos que sean las barras, en el segundo conjunto de datos, le e asignado el color verde.


Bueno, este articulo a sido una pequeña prueba de lo que Matplotlib es capaz de hacer.

¿Quieren más? si les gusto trabajar con Matplotlib y quieren más artículos sobre él, déjenmelo saber en los comentarios. Compartan sus experiencias con nosotros.

Mi nombre es Luis, y fue un placer compartir mis conocimientos con todos ustedes :D.
Puedes descargar los ejemplos realizados en este tutorial ingresando al siguiente enlace: Visualización de Datos - Python y Matplotlib.pyVisualización de Datos - Python y Matplotlib.ipynb.

Seguir Leyendo

Entradas más recientes

Powered by Blogger .