1. Diplomado en Ciencia de
Datos
Módulo 2.
IV. Gráficos
Contenido:
Gráficos en Python través de los paquetes: Matplotlib, Seaborn, Plotnine y Pyplot
Python Markdown
Publicación con Dash
2. Introducción
En esta sección se realizarán gráficos que complementan los análisis
descriptivos vistos en la semana anterior. Para esto se usarán los
paquetes Matplotlib, Seaborn, Plotnine y Plotly; luego, se explorarán
diferentes funcionalidades a través de generar distintos tipos de gráficos.
Se proveerán algunas indicaciones para el uso de Jupyter en modo
Markdown para la preparación de informes.
Finalmente, usaremos Dash para la creación de un reporte dinámico
4. Paquetes gráficos
• Plotnine: provee una forma de API (funciones para llamar a gráficos)
a ggplot2 de R de manera que se puedan aprovechar las
funcionalidades e inclusive el mismo código de este paquete en
Python de manera fácil
• Seaborn: es un lenguaje estilo gramática de gráficos en el estilo de
Python, pensado para ser un lenguaje de alto nivel de fácil uso.
• Matplotlib: es el lenguaje base de Python sobre el cual todos los
paquetes gráficos están construidos (incluyendo plotnine y seaborn)
• Plotly: es un paquete gráfico de Python que permite la creación de
gráficos dinámicos y es el paquete base para Dash. [TJ]
5. Instalación de Plotnine
Es posible que el paquete plotnine no venga instalado en nuestra
versión de Anaconda. Para instalarlo se realizan los pasos
Ir a Enviroments Es importante haber
ejecutado el navegador
de Anaconda como
administrador
Elaboración propia Elaboración propia
6. Instalación de Plotnine
Dar click en Open
terminal, que ejecutará
las sentencias en
nuestro enviroment
“base”
Elaboración propia
9. Gráficos descriptivos
• Se iniciará cargando los paquetes necesarios para los gráficos, incluyendo los
paquetes matplotly, seaborn y plonine
Datos y paquetes a usar
In [1]:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
sns.set(style='whitegrid')
import plotnine
In [4]:
filename = 'https://sds-platform-private.s3-us-east-2.amazonaws.com/uploads/P4-Demographic-Data.csv'
data = pd.read_csv(filename, header=0)
data.head(5)
• Luego se realiza la carga del archivo de práctica Demographic Data.csv desde Super
Data Science
10. Gráficos descriptivos
• Para analizar la misma información que tendríamos con una tabla de
frecuencias se puede usar un gráfico de barras, de la variable categórica
Income Group, en este caso con plotnine
In [42]:
(plotnine.ggplot(data) +
plotnine.aes(x='Income Group') +
plotnine.geom_bar(size=20) +
plotnine.coord_flip() +
plotnine.ggtitle('Número de paises por Grupo de Ingresos')
)
Gráfico de barras
Elaboración propia
11. • En el caso de las variables contínuas se pueden realizar histogramas, en este caso
de la variable Birth rate, en este caso con Matplotlib Permite tener una idea de la
distribución de probabilidad de la variable
Gráficos descriptivos
In [47]:
plt.hist('Birth rate', bins=12, data=data)
Out[47]:
(array([43., 26., 23., 29., 11., 11., 10., 16., 11., 8., 6., 1.]),
array([ 7.9 , 11.38008333, 14.86016667, 18.34025 , 21.82033333,
25.30041667, 28.7805
, 32.26058333, 35.74066667, 39.22075 , 42.70083333, 46.18091667,
49.661 ]),
<BarContainer object of 12 artists>)
Histograma
Elaboración propia
12. • En el caso de las variables contínuas se pueden realizar gráficos de dispersión o scatterplots, para
ver tendencias o patrones. En este caso se aprecia que los países de alto ingreso tienen una baja
tasa de natalidad pero un excelente acceso a internet, y viceversa. Se usa el paquete seaborn.
Gráficos descriptivos
In [56]:
grafico=sns.FacetGrid(data, hue='Income Group')
grafico.map(plt.scatter, 'Internet users', 'Birth rate').add_legend().set(
title= 'Internet users vs Birth rate’,
xlabel='Internet users’,
ylabel='Birth rate’
)
Out[56]:
<seaborn.axisgrid.FacetGrid at 0x1beae72b310>
Scatterplot con colores
Elaboración propia
14. In [81]:
(plotnine.ggplot(data) +
plotnine.aes('Internet users', 'Birth rate') +
plotnine.geom_point() +
plotnine.geom_smooth(method='lm'))
Gráficos descriptivos
• Usando plotnine es posible graficar una recta de regresión sobre el conjunto de datos, con sus intervalos de
confianza
Recta de regresión
Elaboración propia
15. In [86]:
(plotnine.ggplot(data) +
plotnine.aes('Internet users’,
fill='Income Group’,
color='Income Group') +
plotnine.geom_density(alpha=0.1))
Gráficos descriptivos
• En el mismo caso se pueden realizar gráficos de distribuciones separados, en este caso por Income Group,
usando el paquete plotnine.
Distribuciones con colores
Elaboración propia
16. In [89]:
sns.boxplot(x="Income Group",
y="Internet users",
data=data)
• Usando seaborn es posible realizar un diagrama de cajas. Cada caja indica diferentes estadísticos como el
promedio, los percentiles 25% y 75%
Gráficos descriptivos
Boxplot
Elaboración propia
17. • Usando seaborn es posible realizar realizar un gráfico de violín, que permite tener una apreciación de la
distribución de los datos dentro de una variable categórica, a´más de un pequeño violín
Gráficos descriptivos
Violin plot
In [92]:
sns.violinplot(y=data['Birth rate’],
x=data['Income Group'])
Out[92]:
<AxesSubplot:xlabel='Income Group',
ylabel='Birth rate'>
Elaboración propia
18. Gráficos descriptivos
Series de tiempo
• Previamente se ha generado una serie de tiempo aleatoria ts, para luego graficarla usando plotly,
directamente.
Valor
02-08-2022 0.677000
03-08-2022 1.353822
04-08-2022 2.990333
05-08-2022 2.723761
06-08-2022 2.931191
... ...
05-11-2022 -2.723797
06-11-2022 -3.222179
07-11-2022 -2.620171
08-11-2022 -3.055173
09-11-2022 -0.295787
In [47]: px.line(ts)
Elaboración propia
20. Markdown de Python en Jupiter
Markdown es un “lenguaje de marcado” con un script sencillo orientado a crear y
compartir documentos que incluyen código, visualizaciones y narraciones. Las
celdas Markdown en Jupiter permiten escribir y representar la sintaxis Markdown
de manera que se puedan generar informes de buena organización y calidad [SH].
Para habilitar el modo Markdown en una celda se tiene que cambiar del modo
código al modo Markdown
Fuente [SH]
21. • Las principales funcionalidades son:
• Titulos por niveles
• Negritas
Markdown de Python en Jupiter
# Header 1
## Header 2
### Header 3
#### Header 4
##### Header 5
###### Header 6
Sintaxis Markdown Ejecución
Fuente [SH]
22. • Itálicas
• Negritas e Itálicas
• Tachado
Markdown de Python en Jupiter
Sintaxis Markdown Ejecución
Fuente [SH]
23. • Texto Citado en bloques multinivel
• Trazado de línea divisoria
Markdown de Python en Jupiter
Sintaxis Markdown Ejecución
Fuente [SH]
24. • Inserción de gráficos externos
Markdown de Python en Jupiter
Sintaxis Markdown Ejecución
Fuente [SH]
Fuente: www.python.org
26. Introducción
Dash
Según lo expresan los autores de Dash, este es un marco de programación low code para construir rápidamente
aplicaciones de datos principalmente en Python, R y Julia.
Escrito sobre Plotly.js y React.js, Dash es ideal para construir y desplegar aplicaciones de datos con interfaces de
usuario personalizadas.
Dash consolida todas las tecnologías y protocolos que se requieren para construir una aplicación web full-stack con
visualización de datos interactivos.
Fuente: https://dash.plotly.com
27. Instalación de Dash
Dash no viene instalado en la versión estándar de Anaconda. Para
instalarlo se realizan los pasos
Ir a Enviroments Es importante haber
ejecutado el navegador
de Anaconda como
administrador
Elaboración propia Elaboración propia
28. Instalación de Dash
Dar click en Open
terminal, que
ejecutará las
sentencias en
nuestro enviroment
“base”
Elaboración propia
29. Instalación de Dash
En el terminal ejecutar la sentencia conda install –c conda-forge dash
Elaboración propia
Se instalarán la totalidad de
componentes y quedara listo
para usarse
30. • Se realizará un tablero interactivo que permita ver el total de ventas y
exportaciones reportadas por los contribuyentes al Servicio de Rentas
Internas del Ecuador.
• La información fuente consta de series de tiempo de ventas y
exportaciones por Provincia (archivo: VentasEC.xlsx)
• El tablero permitirá interactuar por la variable Provincia para visualizar
su comportamiento
• El tablero se creará mediante Spyder, dentro de un proyecto que se
denominará “Dash practice”
• Se provee el archivo fuente para práctica: Dash_ventas_ec.py
Creación de un tablero en Dash
31. Creación de un tablero en Dash
En primer lugar, se cargan los paquetes, se inicializa la aplicación y se cargan los datos
Elaboración propia
32. Creación de un tablero en Dash
Luego, se crea un plantilla con los
componentes que tendrá el
tablero en base a una función H1
para títulos
También se crea el combo box
para seleccionar interactivamente
la Provincia
Elaboración propia
33. Creación de un tablero en Dash
Mediante una función, se
llama al combo box de
Provincias y se crea el gráfico
scatter tipo linea con plotly -
graphic object.
Finalmente se ejecuta la sentencia en
el servidor, refiriéndose a nuestro
equipo.
Elaboración propia
34. Creación de un tablero en Dash
La ejecución del del script genera un App “Dash_ventas_ec”,
La aplicación puede desplegarse copiando y pegando la dirección http://127.0.0.1:8050/ en cualquier navegador.
Elaboración propia
37. Referencias
[TJ] Tukey J (2020). Python Plotting for Exploratory Data Analysis. Python Plotting for EDA. Disponible en:
https://pythonplot.com/#
[LA] Lima, A (2022). Diagrama de Caja usando seaborn en Python. Aservo Lima. Disponible en:
https://es.acervolima.com/diagrama-de-caja-usando-seaborn-en-python/
[ME] Marsja, E. (2021). How to make a Violin plot in Python using Matplotlib and Seaborn. Marsja Disponible
en: https://www.marsja.se/how-to-make-a-violin-plot-in-python-using-matplotlib-and-seaborn/
[SH] Satopay, H. (2019). The Ultimate Markdown Guide (for Jupyter Notebook). Analytics Vidhya. Disponible en:
https://medium.com/analytics-vidhya/the-ultimate-markdown-guide-for-jupyter-notebook-d5e5abf728fd]
[TA] Tomar, A. (2021). Dash for Beginners: Create Interactive Python Dashboards. Towards Data Science.
Disponible en:
https://towardsdatascience.com/dash-for-beginners-create-interactive-python-dashboards-338bfcb6ffa4