Documentos de Académico
Documentos de Profesional
Documentos de Cultura
grabada
Clase 08. DATA SCIENCE
Visualizaciones y primeros
pasos con Data Science
(parte II)
Temario
07 08 09
Visualizaciones y Visualizaciones y
primeros pasos con Estadística
primeros pasos con
DS II descriptiva
DS I
✓ Seaborn
✓ Introducción
✓ Tipos de gráficos
✓ Matplotlib ✓ Medidas de resumen
✓ Subplot y Facetgrip
✓ Tipos de gráficos ✓ Distribución de
✓ Customizaciones sobre gráficos
✓ variables
Customizaciones so
✓ Nutshell
bre gráficos ✓ Intervalos de confianza
✓ Scikit - Learn
Objetivos de la clase
Figure-level
Tipos de funciones Seaborn
Introducción a Líneas
Tipos de gráficos
Seaborn
Puntos
Uso de Subplots y Facetgrid
Barras
Customizaciones sobre gráficos
Histograma
Ejemplo aplicado Seaborn
Boxplot
Tipos de
Supervisado
aprendizajes
No Supervisado
Introducción Scikit-
Learn
Cuestionario de tarea
¿Te gustaría comprobar tus conocimientos de la
clase anterior?
Te compartimos a través del chat de Zoom / chat de la
plataforma el enlace a un breve cuestionario de
Kahoot.
Duración: 10 minutos
En la primera parte vimos los siguientes temas
Visualización en Python
Matplotlib Gráficos
Gráficos de línea.
Gráficos de puntos.
Gráficos de barra.
Histograma.
Piechart
Seaborn:
Comandos básicos
¿Qué es Seaborn?
✓ Librería para hacer gráficos estadísticos en
Python (fundamentada en matplotlib y
pandas).
✓ Funciona capturando marcos de datos
completos o matrices que contienen todos sus
datos
✓ Realiza todas las funciones internas necesarias
para el mapeo semántico y la agregación
estadística para convertir datos en gráficos
informativos.
Diferencias entre Seaborn y
Matplotlib
Características Matplotlib Seaborn
Sintaxis Sintaxis larga y compleja e.g Sintaxis simple y fácil de entender e.g
matplotlib.pyplot.bar(x_axis, y_axis) seaborn.barplot(x_axis,y_axis)
Múltiples figuras Se pueden tener figuras múltiples Puede tener más problemas de memorias
simultáneamente
DataFrames y Arrays Funciona eficientemente y trata a figuras y Más funcional y organizado y trata datasets
ejes como objetos como unidad simple
Casos de uso Gráficas diversas usando Numpy y Pandas Versión extendida de Matplotlib con el uso de
Numpy y Pandas
Tipos de funciones en
Seaborn
Axes-level & Figure-level
✓ Axes-level: grafican datos en un objeto Algunas diferencias
matplotlib.pyplot.Axes que retorna el valor de
✓ Figure-level la leyenda se coloca fuera
la función
del frame y pueden crear fácilmente
✓ Figure-level: interactúa con matplotlib
figuras con múltiples subplots.
mediante un objeto Seaborn que usualmente
✓ Axes-level no modifican más allá de
es FacetGrid
los ejes en los que se dibujan y aceptan
el argumento ax que se integra con la
interfaz orientada a objetos.
Funciones Axes-Level
# Axes-level # Figure-level
sns.histplot(data=penguins, sns.displot(data=penguins,
x="flipper_length_mm", hue="species", x="flipper_length_mm", hue="species",
multiple="stack") multiple="stack")
Figure: gráficos segmentados
En este tipo de funciones podemos incorporar gráficos segmentados por alguna categoría
automáticamente .
# Axis level
import matplotlib.pyplot as plt
f, axs = plt.subplots(1, 2, figsize=(8, 4),
gridspec_kw=dict(width_ratios=[4, 3]))
sns.scatterplot(data=penguins, x="flipper_length_mm",
y="bill_length_mm", hue="species", ax=axs[0])
sns.histplot(data=penguins, x="species",
hue="species", shrink=.8, alpha=.8, legend=False,
ax=axs[1]); f.tight_layout()
# Figure-level
tips = sns.load_dataset("tips")
g = sns.relplot(data=tips, x="total_bill", y="tip")
Tipos de
gráficos
Gráficos
# Axis-level
flights_wide = flights.pivot("year", "month",
"passengers")
flights_wide.head()
sns.lineplot(data=flights_wide)
Gráfico de puntos
# Scatterplot
tips = sns.load_dataset("tips")
tips.head()
# Axis-level
sns.scatterplot(data=tips, x="total_bill", y="tip")
# Axis-level
sns.scatterplot(data=tips, x="total_bill", y="tip",
hue="time")
Gráfico de barras
# Barplot
import seaborn as sns
sns.set_theme(style="whitegrid")
tips = sns.load_dataset("tips")
# Axis-level
ax = sns.barplot(x="day", y="total_bill", data=tips)
# Barplot
sns.barplot(x="day", y="total_bill", hue="sex",
data=tips)
Histograma
# Histograma
penguins = sns.load_dataset("penguins")
# Axis-level
sns.histplot(data=penguins, x="flipper_length_mm")
# Axis-level
sns.histplot(data=penguins, x="flipper_length_mm",
hue="species")
Boxplot
# Boxplot
penguins = sns.load_dataset("penguins")
# Axis-level
sns.histplot(data=penguins, x="flipper_length_mm")
# Axis-level
ax = sns.boxplot(x="day", y="total_bill", data=tips)
Uso de Subplots y
Facetgrid
Subgráficos
Subgráficos
✓ Podemos definir una grilla de gráficos dentro de
una misma figura.
✓ En plt.subplots, especificamos:
Primero,
Definimos un objeto ax con tres filas y una sola columna
✓ En el eje x = los años
✓ En el eje y = las precipitaciones
ax[0].legend()
ax[1].legend()
ax[2].legend()
Resultado
Algunas observaciones
✓ Al pasar sharey=True, los subgráficos comparten la
escala en el eje y. Esto permitió comparar a simple vista
el volumen de precipitaciones.
✓ Cada subgráfico puede tener su propio título y etiquetas.
✓ En caso de tener dos filas y dos columnas, ax se torna
bidimensional:
El subgráfico superior izquierdo se referencia con ax[0,0]
El subgráfico superior derecho se referencia con ax[0,1]
FacetGrid Seaborn
Algunas observaciones
✓ Esta clase mapea un conjunto de datos en ✓ Puede representar niveles de una tercera
varios ejes dispuestos en una cuadrícula de variable con el parámetro hue, que traza
filas y columnas que corresponden a niveles diferentes subconjuntos de datos en diferentes
de variables en el conjunto de datos. colores.
✓ Los gráficos que produce a menudo se
denominan gráficos de "lattice", "trellis" o
"small-multiple".
Ejemplo
# FacetGrid
tips = sns.load_dataset("tips")
g = sns.FacetGrid(tips, col="time", row="sex")
g.map(sns.scatterplot, "total_bill", "tip")
# FacetGrid
g = sns.FacetGrid(tips, col="time", hue="sex")
g.map_dataframe(sns.scatterplot, x="total_bill",
y="tip")
g.add_legend()
Customizaciones
sobre gráficos
Personalizando Seaborn
Ejemplo
sns.set_style(style="darkgrid", rc={"grid.color": ".6"})
sns.set_style(rc={"grid.linestyle": ":"})
sns.set_style(rc={"axes.titleweight": "normal"})
sns.set_style(rc={"axes.titlelocation": "left"})
sns.set_style(rc={"axes.titlecolor": "blue"})
sns.set_style(rc={"axes.labelcolor": "red"})
sns.set_style(rc={"axes.labelsize": "12"})
sns.set_style(rc={"axes.labelweight": "normal"})
sns.set_style(rc={"axes.linewidth": "0.5"})
sns.set_style(rc={"grid.color": "purple"})
sns.set_style(rc={"grid.linestyle": "--"})
sns.set_style(rc={"grid.linewidth": "0.5"})
sns.set_style(rc={"font.fantasy": "Comic Sans MS"})
sns.set_style(rc={"font.serif": "Utopia"})
Ejemplo
penguins = sns.load_dataset("penguins")
# Axis-level
sns.histplot(data=penguins, x="flipper_length_mm")
¡Importante!
Es posible restablecer los parámetro por defecto
sns.reset_orig()
☕
Break
¡10 minutos y volvemos!
Ejemplo en vivo
Surfeando en Seaborn.
El profesor hará una demostración compartiendo
pantalla de un ejemplo aplicado de Seaborn.
Los valores son mediciones del pulso de 30 personas ✓ Id: número identificador de la persona
tras realizar algún tipo de actividad por un ✓ Diet: dieta de la persona = baja en grasas o sin
determinado tiempo. Las columnas son: grasas
✓ Time: duración del ejercicio = 1 min, 15 min
o 30 min
✓ Kind: tipo de ejercicio = reposo, caminar o
correr
Ejemplo en vivo
plt.figure()
ax = sns.displot(data=df_30_min, x='pulse', kind='kde', hue='kind', fill=True)
ax.set(xlabel='Frecuencia Cardíaca', ylabel='Densidad', title='Distribución de las pulsaciones')
Ejemplo en vivo
Surfeando en Seaborn.
El profesor hará una demostración, compartiendo
pantalla, de un ejemplo de Categorical plots en
Seaborn
Por ejemplo:
✓ Enfermo/No enfermo.
✓ Sobrevive/No sobrevive.
✓ Baja/ No baja
Aprendizaje Supervisado: Regresión
Infieren patrones de un
conjunto de datos sin
referencia a resultados
conocidos o etiquetados,
esto significa en otras
palabras, que no cuenta con
una variable “y” solo tengo
“X”.
Aprendizaje Supervisado
vs. no Supervisado
Supervisado No supervisado
input data Anotaciones input data
Son
manzanas
Predicción es una
manzana
Clustering
Tipos de algoritmos no Supervisados
SciPy: Matplotlib:
librería fundamental para la trazado completo 2D
informática científica
SymPy: Pandas:
Práctica integradora:
Visualizaciones en Python
DESAFÍO ENTREGABLE
Visualizaciones en Python
Consigna Formato
✓ Deberás entregar el segundo avance de tu proyecto ✓ Entregar un archivo con formato .ipynb. Debe tener
final. Elegirás uno de los datasets del desafío el nombre “Visualización+Apellido.ipynb”.
“Elección de Potenciales Datasets e importe con
la librería Pandas”. Posteriormente, crearás un Sugerencias
notebook donde cargaran el archivo utilizando ✓ Preparar el código y probar los resultados con
funciones de pandas para luego proceder a realizar 3 subconjuntos del conjunto original.
gráficos diferentes con Matplotlib y 3 con Seaborn.
Finalmente, cada gráfico será interpretado con el fin Aspectos a incluir
de obtener insights relevantes que permitan dar ✓ El código debe estar hecho en un notebook y debe
respuesta a la pregunta problema. estar probado.
DESAFÍO ENTREGABLE
Visualizaciones en Python
Consigna paso a paso
Video explicativo
1. Escoger uno de los 3 datasets utilizados para la
✓ Link al video complementario
Clase 5
2. Cargar el dataset con la librería pandas por medio
de la función pd.read_csv() o pd.read_excel()
3. Realizar al menos tres gráficos (lineplot, scatterplot,
histogramas, barchart, boxplot) usando la librería
Matplotlib
4. Realizar al menos tres gráficos (lineplot, scatterplot,
histogramas, barchart, boxplot) usando la librería
Seaborn
5. Interpretar los resultados de cada gráfica obtenida
CLASE N°8
Glosario
Seaborn: librería de Python que permite la creación de Aprendizaje supervisado: tipo de aprendizaje donde
existe retroalimentación para el algoritmo debido a que
gráficos con mejor calidad que Matplotlib ya que
hay etiquetas, los problemas típicos a resolver son
interactúa de manera más eficiente con estructuras de
clasificación y regresión
datos
Aprendizaje no supervisado: tipo de aprendizaje
Estructura axes-level: no se pueden modificar más donde NO existe retroalimentación para el algoritmo
allá de los ejes que se grafican y no es conveniente debido a que NO hay etiquetas, los problemas típicos a
cuando se desea hacer múltiples subplots (e.g. lineplot, resolver son clustering y reducción de dimensionalidad
scatterplot) ScikitLearn: librería fundamental para el desarrollo de
modelos de Machine Learning (Algoritmos
Estructura figure-level: leyendas por fuera de los
Supervisados y No supervisados entre otros) en Python
frames y permiten la creación de múltiples subplots de
manera más rápida y eficiente (e.g relpot)
¿Preguntas?
Resumen
de la clase hoy
✓ Seaborn comandos básicos…
✓ Tipos de gráficos
✓ Customizaciones
✓ Clasificación, regresión y clustering
✓ Introducción a paquetes de Sclikit Learn
Opina y valora
esta clase
Muchas gracias.