Slide 1

Slide 1 text

Introducción a la visualización de datos en Python Juan Sebastián Vega Patiño

Slide 2

Slide 2 text

seaborn • Basada en matplotlib • Alto nivel • Varios temas para estilizar gráficas • Distribuciones, regresiones, matrices, series de tiempo,…

Slide 3

Slide 3 text

Distribución de un dataset

Slide 4

Slide 4 text

TIPS dataset total_bill tip sex smoker day time size 0 16.99 1.01 Female No Sun Dinner 2 1 10.34 1.66 Male No Sun Dinner 3 2 21.01 3.50 Male No Sun Dinner 3 3 23.68 3.31 Male No Sun Dinner 2 4 24.59 3.61 Female No Sun Dinner 4 5 25.29 4.71 Male No Sun Dinner 4 6 8.77 2.00 Male No Sun Dinner 2 7 26.88 3.12 Male No Sun Dinner 4 8 15.04 1.96 Male No Sun Dinner 2 9 14.78 3.23 Male No Sun Dinner 2 tips = sns.load_dataset('tips')

Slide 5

Slide 5 text

Distribuciones univariadas Histogramas + KDE sns.distplot(tips['total_bill'])

Slide 6

Slide 6 text

Distribuciones univariadas Histogramas + rugplot sns.distplot(tips['total_bill'], kde=False, rug=True)

Slide 7

Slide 7 text

Distribuciones bivariadas Scatterplot sns.jointplot(x='total_bill', y='tip', data=tips)

Slide 8

Slide 8 text

Distribuciones bivariadas Hexbin plot sns.jointplot(x='total_bill', y='tip', data=tips, kind='hex')

Slide 9

Slide 9 text

Distribuciones bivariadas KDE sns.jointplot(x='total_bill', y='tip', data=tips, kind='kde')

Slide 10

Slide 10 text

Variables categóricas

Slide 11

Slide 11 text

Var. cuantitativa vs. categórica Scatterplot sns.stripplot(x='day', y='total_bill', data=tips)

Slide 12

Slide 12 text

Var. cuantitativa vs. categórica Scatterplot sns.stripplot(x='day', y='total_bill', data=tips, jitter=True)

Slide 13

Slide 13 text

Var. cuantitativa vs. categórica Scatterplot sns.swarmplot(x='day', y='total_bill', data=tips)

Slide 14

Slide 14 text

Var. cuantitativa vs. categórica + tercera variable categórica Scatterplot sns.swarmplot(x='day', y='total_bill', hue='sex', data=tips)

Slide 15

Slide 15 text

Titanic dataset survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone 0 0 3 male 22.0 1 0 7.2500 S Third man TRUE NaN Southampton no FALSE 1 1 1 female 38.0 1 0 71.2833 C First woman FALSE C Cherbourg yes FALSE 2 1 3 female 26.0 0 0 7.9250 S Third woman FALSE NaN Southampton yes TRUE 3 1 1 female 35.0 1 0 53.1000 S First woman FALSE C Southampton yes FALSE 4 0 3 male 35.0 0 0 8.0500 S Third man TRUE NaN Southampton no TRUE 5 0 3 male NaN 0 0 8.4583 Q Third man TRUE NaN Queenstown no TRUE 6 0 1 male 54.0 0 0 51.8625 S First man TRUE E Southampton no TRUE 7 0 3 male 2.0 3 1 21.0750 S Third child FALSE NaN Southampton no FALSE 8 1 3 female 27.0 0 2 11.1333 S Third woman FALSE NaN Southampton yes FALSE 9 1 2 female 14.0 1 0 30.0708 C Second child FALSE NaN Cherbourg yes FALSE titanic = sns.load_dataset('titanic')

Slide 16

Slide 16 text

Estimaciones por categorías Bar plot sns.barplot(x='sex', y='survived', hue='class', data=titanic)

Slide 17

Slide 17 text

Estimaciones por categorías Número de observaciones sns.countplot(x='embark_town', data=titanic)

Slide 18

Slide 18 text

Estimaciones por categorías Point plot sns.pointplot(x='class', y='survived', hue='sex', data=titanic)

Slide 19

Slide 19 text

Relaciones lineales

Slide 20

Slide 20 text

Regresión lineal Variable continua sns.lmplot(x='total_bill', y='tip', data=tips)

Slide 21

Slide 21 text

Regresión lineal Variable discreta sns.lmplot(x='size', y='tip', data=tips)

Slide 22

Slide 22 text

Regresión lineal Variable discreta sns.lmplot(x='size', y='tip', data=tips, x_jitter=0.1)

Slide 23

Slide 23 text

Regresión lineal Variable discreta sns.lmplot(x='size', y='tip', data=tips, x_estimator=np.mean)

Slide 24

Slide 24 text

Cuarteto de Anscombe dataset x y 0 I 10.0 8.04 1 I 8.0 6.95 2 I 13.0 7.58 3 I 9.0 8.81 4 I 11.0 8.33 5 I 14.0 9.96 6 I 6.0 7.24 7 I 4.0 4.26 8 I 12.0 10.84 9 I 7.0 4.82 anscombe = sns.load_dataset('anscombe')

Slide 25

Slide 25 text

Diferentes tipos de modelos Lineal anscombe_1 = anscombe[anscombe.dataset == 'I'] sns.lmplot(x='x', y='y', data=anscombe_1, ci=None)

Slide 26

Slide 26 text

Diferentes tipos de modelos Cuadrático anscombe_2 = anscombe[anscombe.dataset == 'II'] sns.lmplot(x='x', y='y', data=anscombe_2, ci=None)

Slide 27

Slide 27 text

Diferentes tipos de modelos Cuadrático sns.lmplot(x='x', y='y', data=anscombe_2, ci=None, order=2)

Slide 28

Slide 28 text

Diferentes tipos de modelos Puntos aislados anscombe_3 = anscombe[anscombe.dataset == 'III'] sns.lmplot(x='x', y='y', data=anscombe_3, ci=None)

Slide 29

Slide 29 text

Diferentes tipos de modelos Puntos aislados # Requires statsmodels sns.lmplot(x='x', y='y', data=anscombe_3, ci=None, robust=True)

Slide 30

Slide 30 text

¿Cómo la relación entre dos variables cambia respecto a otras? Una variable extra sns.lmplot(x='total_bill', y='tip', hue='smoker', data=tips)

Slide 31

Slide 31 text

¿Cómo la relación entre dos variables cambia respecto a otras? Dos variables extra sns.lmplot(x='total_bill', y='tip', hue='smoker', col='time', data=tips)

Slide 32

Slide 32 text

¿Cómo la relación entre dos variables cambia respecto a otras? Tres variables extra sns.lmplot(x='total_bill', y='tip', hue='smoker', col='time', row='sex', data=tips)

Slide 33

Slide 33 text

Conclusiones • Explorar y comprender los datos • Seaborn: Hacer ciertas cosas difíciles fáciles de hacer • Seaborn complementa a matplotlib /sebasvega95 Gracias!!