Módulo 4. Análisis e Interpretación de Datos
Módulo 4. Análisis e Interpretación de Datos
Análisis e interpretación
de datos
Introducción
En el procesamiento de datos, una vez que hemos recolectado los datos y los
organizamos, se hace necesario el análisis exploratorio de los mismos para obtener un
conocimiento básico de los datos y de las relaciones entre ellos.
Python ofrece diversas funciones para explorar el dataset y las estudiaremos en este
módulo.
Conoceremos las diversas herramientas para generar gráficos con Python, sus librerías
y cómo abordar su interpretación.
Video inmersión
Unidad 1 Tipos de datos y cómo analizarlos
Tema 1. Análisis exploratorio de datos
El análisis exploratorio de datos (exploratory data analysis) es una forma de analizar
datos definida por John W. Tukey (1915-2000), estadístico estadounidense nacido en
New Bedford, Massachusetts y considerado uno de los pioneros de la ciencia de datos.
El EDA (exploratory data analysis) se refiere a un conjunto de técnicas estadísticas cuya
finalidad es conseguir un conocimiento básico de los datos y de las posibles relaciones
entre ellos.
Es el tratamiento estadístico al que se someten las muestras recogidas durante un
proceso de investigación en cualquier campo científico. . . Con el fin de optimizar y
obtener una mayor rapidez y precisión en todo el proceso estadístico, se suele
recurrir a distintos softwares con aplicaciones específicas para el tratamiento
estadístico. (Rodríguez et al., 2020, p. 7)
La idea clave del análisis exploratorio de datos es que el primer paso (y el más
importante en cualquier proyecto basado en datos) es la observación de los datos.
Ahora bien, dependiendo del tipo de datos que tengamos para procesar y manipular,
será el tipo de herramienta que debemos utilizar. Veamos los tipos de datos:
Tema 2. Tipos de datos
Figura 1: Tipos de datos
Los porcentajes, índices, razones y tasas son los valores más adecuados para referirse
a las categorías de la variable. Veamos de qué se trata cada uno.
El porcentaje es “una proporción que toma como referencia el número 100” (Real
Academia Española, 2022, https://bit.ly/3JxxBP3). Es un número entre 0 y 100 que
mide la proporción de un total. Por ejemplo, en un examen, un alumno contestó
correctamente 90 preguntas de un total de 100. Entonces, el porcentaje de
respuestas correctas es 90 sobre 100, es decir, 90 %. A su vez, el porcentaje de
respuestas incorrectas es 10 sobre 100, es decir un 10 %.
Una razón es “el cociente de dos números o, en general, de dos cantidades
comparables entre sí” (Real Academia Española, 2022, https://bit.ly/3kXtceE). Por
ejemplo, podemos calcular la razón de ventas (2000) por vendedor (10) dividiendo
el número de productos totales vendidos por el número de vendedores. Es decir,
2000 en 10, obteniendo un total de 200 productos vendidos por vendedor.
Una tasa es definida a partir de la fracción entre dos magnitudes, en general,
relacionadas. Esto quiere decir que el denominador debe contener al numerador.
Existen diferentes tasas: de mortalidad, de incidencias, de natalidad, de fertilidad,
de interés, entre otras. Por ejemplo, una tasa de interés del 2 %, quiere decir que
se cobrarán 2 pesos por cada 100 pesos prestados.
Un índice es una expresión numérica de la relación entre dos cantidades. Un
índice en estricto rigor es un valor que puede ser una proporción, razón, una tasa o
un valor dentro de un contexto que permite indicar una situación.
Si los datos poseen un orden (datos ordinales), la tabla se ordena naturalmente. Por su
parte, cuando los datos son nominales, es bueno usar un criterio sencillo para
ordenarlos (orden alfabético, por ejemplo).
fechas y horas;
matrices de tipo fijo (fixed-type arrays);
colas de montículos. “En computación, un montículo (heap en inglés) es una
estructura de datos del tipo árbol con información perteneciente a un conjunto
ordenado” (Sensagent Corporation, 2013, https://bit.ly/3ZPnPwJ);
colas de doble extremo (es una colección ordenada de datos que permite insertar y
eliminar elementos por ambos extremos);
enumeraciones;
algunos tipos de datos integrados, como dict, list, set y frozenset, tuple;
la clase str se utiliza para contener cadenas de caracteres Unicode;
las clases bytes y bytearray se utilizan para contener datos binarios.
Para investigar más acerca de los tipos de datos en Python, recomendamos ver la
página de documentación: https://bit.ly/41URCWI.
Actividad de repaso
Lea la siguiente afirmación y seleccione la opción correcta: “Es un
número entre 0 y 100 que mide la proporción de un total”.
Razón.
Tasa.
Porcentaje.
Justificación
Podemos notar que, al leer el archivo desde el ordenador, la ruta que declaremos va a
depender de cada uno. En nuestro caso, la ruta puede ser:
“C:\Users\IPP\Downloads\Automobile_data.csv”.
Se agrega previamente el carácter “r” antes de la ruta para que pueda leer los “\” de la
ruta.
Con la función “head()” podemos visualizar por pantalla las primeras cinco filas del
dataframe a menos que indiquemos el número de filas. Por ejemplo: head(10), donde
mostraremos por pantalla las primeras 10 filas.
Veamos de qué tamaño es el dataset. Recordemos que se puede revisar con la función
“shape”:
Luego, podemos crear una vista general de los valores con la función “describe()”. Lo
que nos entregará conteo, media, desviación estándar, min, cuartiles Q1, Q2, Q3 y
valor máximo.
Esto indica que no tenemos ningún valor faltante en las 26 columnas. Puede suceder
que encontremos algunos valores “?” en la variable “normalized-losses”. Por esa razón
es importante revisar los tipos de datos en cada atributo (variable).
Con eso vemos que hay columnas que son del tipo “object” cuando deberían ser del tipo
“integer” o “float” como son los casos: normalized-losses, bore, stroke, horsepower,
peak-rpm y price. Esto se debe al símbolo “?”.
Una alternativa sería reemplazar los valores “?” por valor “nan” (es decir, nulo o vacío) y
luego trabajar esos valores nulos reemplazándolos con la media o mediana (esto se
puede lograr en caso de que sean pocos en relación al total).
Aunque no forma parte del alcance de este curso, veamos cómo se resolvería esta
situación:
Reemplazamos el signo “?” por valor nulo y, luego, hacemos un recuento. Concluimos
que, efectivamente, las columnas mencionadas tenían en alguna fila el signo “?”. Si
quisiéramos visualizar la distribución de valores nulos, podemos usar un mapa de calor.
Los “heatmaps” o mapas de calor son una representación gráfica de datos donde
los valores se representan mediante colores. . . utilizan una gama de colores que
va desde los más cálidos, como el rojo, el naranja y el amarillo, hasta colores
como el verde y el azul en el extremo más frío del espectro. (Basurto, 2022,
https://bit.ly/3T04aIb)
Figura 9: Mapa de calor
Finalmente, podríamos rellenar los espacios vacíos para las variables numéricas con el
valor de la media:
“El módulo decimal implementa aritmética decimal de coma fija y flotante usando
el modelo familiar para la mayoría de las personas” (Rico Schmidt, s.f.,
https://bit.ly/3Zxzalk). Una instancia de decimal puede representar cualquier
número exactamente, redondear hacia arriba o hacia abajo, y aplicar un límite al
número de dígitos significativos. Ver documentación adicional en
https://bit.ly/428Lri7.
El módulo fractions implementa operaciones numéricas para trabajar con
números racionales. Ver documentación adicional en: https://bit.ly/3J3xl8T.
El módulo random incluye un generador de números pseudoaleatorios de
distribución uniforme, así como funciones para simular muchas distribuciones
comunes no uniformes. Ver documentación adicional en https://bit.ly/3L5OWiW.
El módulo math contiene implementaciones rápidas de funciones matemáticas
avanzadas tales como logaritmos y funciones trigonométricas. Ver documentación
adicional en https://bit.ly/3mDsSC1.
“El módulo statistics implementa muchas fórmulas estadísticas comunes [la
media, la mediana, el modo, varianza, etc.] para cálculos eficientes usando varios
tipos numéricos de Python [int, float, Decimal, y Fracción]” (Rico Schmidt, s.f.,
https://bit.ly/3ZCHksY). Ver documentación en https://bit.ly/3SVWwyN.
Podemos graficar rápida y fácilmente los datos usando Pandas, y aplicar estadísticas
descriptivas.
También podemos realizar conteos de especie por sitio, por ejemplo, ver cuántos
animales fueron capturados por sitio:
Actividad de repaso
¿Qué módulo incluye un generador de números pseudoaleatorios
de distribución uniforme?
Módulo decimal.
Módulo random.
Módulo fractions.
Módulo statistics.
Módulo math.
Justificación
Machine learning.
Cálculo numérico.
Análisis de datos.
Aprendizaje automático “es un subconjunto de la inteligencia artificial que permite
que permite a una máquina aprender de datos anteriores sin tener que diseñarla
explícitamente” (Equipo AEFOL, 2022, https://bit.ly/3ZtyPQT).
Deep learning “es una técnica de aprendizaje automático basada en el modelo de
red neuronal: se apilan decenas o incluso cientos de capas de neuronas para
aportar mayor complejidad al establecimiento de reglas” (DataScientest, 2022,
https://bit.ly/3Zv5mWJ).
Inteligencia artificial explicable (se refiere a técnicas en la aplicación de la
inteligencia artificial por las cuales el ser humano es capaz de comprender las
decisiones y predicciones realizadas por la inteligencia artificial).
Procesamiento del lenguaje natural.
Así mismo, la visualización de datos será también muy útil para comprender los
resultados y analizar los errores. Aunque hay muchas librerías en Python para la
visualización de datos, nos vamos a concentrar en Matplotlib, Seaborn y Bokeh
por el momento. (Martínez Heras, 2020, https://bit.ly/3L6JEDN)
Las librerías de Python que vamos a conocer en este tema son gratuitas.
Matplotlib
Seaborn
Bokeh
...
NumPy
Además, esta librería proporciona funciones matemáticas de alto nivel que operan
en estas estructuras de datos. Para aprender más, sigue el tutorial de NumPy (en
inglés).
SciPy
...
Pandas
Pandas es una de las librerías de Python más útiles para los científicos de datos.
Las estructuras de datos principales en Pandas son Series para datos en una
dimensión y DataFrame para datos en dos dimensiones.
Estas son las estructuras de datos más usadas en muchos campos tales como
finanzas, estadística, ciencias sociales y muchas áreas de ingeniería. Pandas
destaca por lo fácil y flexible que hace la manipulación de datos y el análisis de
datos.
Numba
Scikit-learn
Es muy fácil de usar porque tiene una interfaz simple y muy consistente, fácil de
utilizar. Te das cuenta que el interfaz es consistente cuando puedes cambiar de
técnica de machine learning cambiando solo una línea de código.
TensorFlow
Con esta computación basada en grafos, TensorFlow puede usarse para deep
learning y otras aplicaciones de cálculo científico.
Keras
Keras es un interfaz de alto nivel para trabajar con redes neuronales. El interfaz
de Keras es mucho más fácil de usar que el de TensorFlow. Esta facilidad de uso
es su principal característica.
Con Keras es muy fácil comprobar si nuestras ideas tendrán buenos resultados
rápidamente. Keras utiliza otras librerías de deep learning (TensorFlow, CNTK o
Theano) de forma transparente para hacer el trabajo que le digamos.
Para aprender más, puedes mirar la documentación de Keras: https://keras.io/ (en
inglés).
PyTorch
Puedes pensar en PyTorch como una librería que te la las capacidades de NumPy
en una GPU. En otras palabras, si tu tarjeta gráfica tiene un procesador gráfico
(por ejemplo, una NVIDIA moderna), tu código se puede ejecutar unas ¡10 – 20
veces más rápido!
SHAP es una librería para realizar inteligencia artificial explicable (XAI por sus
siglas en inglés explainable artificial intelligence). Utiliza cálculos del campo de la
teoría de juegos para averiguar qué variables tienen más influencia en las
predicciones de las técnicas de machine learning.
SHAP permite entender cómo se toman las decisiones en modelos de caja negra
(random forest o redes neuronales). Puedes obtener explicaciones tanto para
predicciones individuales como de forma global. Su API es bastante fácil de usar.
En este apartado, vamos a ver las librerías que están principalmente dedicadas al
procesamiento del lenguaje natural.
Gensim
spaCy
Jupyter Notebook
Jupyter Notebook es una aplicación web para crear documentos que contienen
código, ecuaciones, visualizaciones y texto. Puedes usar Jupyter Notebooks para
limpiar datos, transformarlos, realizar simulaciones numéricas, modelos
estadísticos, visualizaciones de datos, machine learning y mucho más.
...
Anaconda
Resumen
“Hemos visto las mejores librerías de Python para:
visualización;
cálculo numérico;
análisis de datos;
manipulación de datos;
machine learning;
deep learning;
inteligencia artificial explicable;
procesamiento de lenguaje natural” (Martínez Heras, 2020, https://bit.ly/3L6JEDN).
Finalmente, la forma más fácil de instalar todas estas librerías es mediante Anaconda.
Anaconda va a instalar muchas de estas librerías y el resto podrás instalarlas
manualmente cuando las necesites.
Actividad de repaso
¿Cuál de las librerías estudiadas es un compilador para Python
diseñado especialmente para acelerar las funciones numéricas,
generando código de máquina optimizado a partir de código
Python?
Numba.
SciPy.
NumPy.
Bokeh.
Seaborn.
TensorFlow.
Justificación
Diagramas de barras.
Histograma.
Diagramas de sectores.
Diagramas de caja y bigotes (boxplot).
Diagramas de violín.
Diagramas de dispersión o puntos.
Diagramas de líneas.
Diagramas de áreas.
Diagramas de contorno.
Mapas de color.
Además de combinaciones entre ellos” (Aprende con Alf, 2020,
https://bit.ly/3L7B4EV)
Usaremos la interfaz plt con mayor frecuencia en los distintos ejemplos y ejercicios.
b. Estilos de configuración
Con la función plt.style podemos elegir estilos estéticos apropiados para nuestros
gráficos. Podemos partir con el estilo clásico.
Para poder visualizar un gráfico, debemos usar la función plt.show(). plt.show(). que nos
permiten iniciar un ciclo de eventos. Busca todos los objetos de figuran actualmente
activos y abre una o más ventanas interactivas que muestran su(s) figura(s). Entonces,
por ejemplo, podríamos tener un archivo llamado myplot.py que contenga lo siguiente:
Para todos los diagramas de Matplotlib comenzaremos creando una figura y sus ejes.
En su forma más simple se pueden realizar de la siguiente manera:
Los ejes (una instancia de la clase plt.Axes) son los que vemos arriba: un cuadro
delimitador con marcas y etiquetas que, eventualmente, contendrá los elementos que
conformarán nuestra visualización.
Una vez creado el eje, podemos usar la función ax.plot para trazar algunos datos.
Comencemos con una sinusoide simple:
Si queremos crear una sola figura con varias líneas, podemos llamar a la función de
trazado varias veces:
El primer ajuste que quizás desees realizar en un gráfico es controlar los colores y
estilos de las líneas. La función plt.plot() toma argumentos adicionales que se pueden
usar para especificarlos.
Para ajustar el color, se puede utilizar la palabra clave “color” que acepta un argumento
de cadena que representa a cualquiera de ellos. El color se puede especificar de varias
maneras:
De la misma manera, se puede definir el estilo de línea con la palabra clave “estilo de
línea”:
Matplotlib hace un trabajo bastante bueno al elegir los límites de ejes predeterminados
para su gráfico, pero no siempre escoge la mejor versión. Siempre es bueno revisar los
límites de los ejes.
Podríamos querer invertir el orden de los ejes. Esto se logra al invertir el orden de los
argumentos de la función anterior:
Cuando se muestran varias líneas dentro de un solo eje, puede ser útil crear una
leyenda de trazado que etiquete cada tipo de línea. Matplotlib tiene una forma integrada
de crear rápidamente una leyenda de este tipo. Se hace a través del método
plt.legend().
Actividad de repaso
¿Para qué se utiliza la función ax.plot en Matplotlib?
Justificación
Existe la opción de agrupar y apilar las barras. Por ejemplo, las barras agrupadas sirven
para comparar categorías a lo largo del tiempo.
Los gráficos de barras apiladas se usan para mostrar, por ejemplo, la distribución de
categorías.
En este ejemplo podemos ver la proporción entre hombres y mujeres para cada grupo:
grupo 1, grupo 2, grupo 3 y grupo 4.
b. Histograma
Al igual que los otros tipos de gráficos, la función hist() tiene muchas opciones para
ajustar el cálculo y la visualización. Veamos una versión del histograma con más
atributos:
El atributo “alpha” indica el nivel de transparencia para las barras del histograma.
Mientras más cerca del cero (0) se encuentre, más transparente será. Esta visualización
permite comparar distintas distribuciones de variables en un dataset. Se puede usar una
combinación de histtype='stepfilled' junto con algo de transparencia alfa (“alpha”).
c. Diagrama de caja
También conocido como boxplot o “caja y bigotes”. Refleja la dispersión de los datos a
partir de los cuartiles. Un cuartil corresponde a la ubicación del dato según ciertas
divisiones. Los cuartiles son divisiones de los datos en cuatro partes: el primer
cuartil (Q1) representa hasta un 25 %. El segundo cuartil (Q2) corresponde al 50 %
(igual a la mediana). El tercer cuartil (Q3) es la ubicación del dato en la posición del 75
%. También podemos encontrar quintiles al dividir en 5 grupos, deciles al dividir en 10
grupos y percentiles al dividir en 100.
Retorna el diagrama de caja de los datos dados x. Podemos observar dos valores
atípicos en la parte superior del diagrama, representados por cruces en el diagrama. Un
punto de datos se representa como un atípico si su valor es menor que Q1-1.5*(Q3-Q1)
o mayor que Q3+ 1.5*(Q3-Q1).
También podemos usar el gráfico boxplot para comparar resultados de distintos grupos:
Figura 38. Comparación de grupos con boxplot
Actividad de repaso
¿Cuál de las siguientes afirmaciones es correcta?
Justificación
Para el caso del gráfico de barras discreto, veamos el siguiente ejemplo: la siguiente
figura expone los costos de viajar en dos aerolíneas diferentes, desde un mismo
aeropuerto, hacia ciudades de Chile.
b. Histograma
Como vimos, los histogramas miden un hecho mediante una distribución de los datos.
Se deben elaborar con variables medibles tales como peso, temperatura, tiempo, etc. Es
decir, datos continuos. Volvamos al ejemplo del dataset de autos:
Al generar un histograma del precio de los autos se observa una fuerte concentración de
los datos en vehículos de menor precio (probablemente, más del 80 % en esta
categoría) y solo unos pocos que superan los 25 000 dólares.
c. Diagrama de caja
Finalmente, los diagramas de caja o boxplot nos permiten identificar valores atípicos y
comparar distribuciones, además de conocer de manera simple cómo se distribuye el 50
% de los valores centrales.
Figura 42. Boxplot del precio de automóviles
Cierre
En este módulo hemos estudiado los tipos de datos y cómo analizarlos, comenzando
con el análisis exploratorio de datos. Para conocer más acerca de este tema, les
dejamos una publicación que amplía estos contenidos:
Hemos aprendido diversas herramientas para generar gráficos con Python, sus librerías
y cómo abordar su interpretación.
Video de habilidades
¿Cómo podemos importar la librería Matplotlib en Python?
Con la función plt.style()
Justificación
plt.xlim()
plt.show()
plt.style()
Justificación
Un valor que está dentro del rango del 50% de los datos.
Justificación
Ningún efecto.
Justificación
Glosario
Referencias
Aprende con Alf (2020). La librería Matplotlib. Aprende con ALF.
https://aprendeconalf.es/docencia/python/manual/matplotlib/.
Basurto, K. (17 de febrero de 2022). Mapas de Calor: Qué son y por qué utilizarlos.
Hiberus blog. https://www.hiberus.com/crecemos-contigo/mapas-de-calor-que-son-y-por-
que-utilizarlos/.
DataScientest (19 de abril de 2022). Deep Learning o Aprendizaje profundo: ¿qué es?
DataScientest. https://datascientest.com/es/deep-learning-definicion.
Rico Schmidt, E. (s.f.). Decimal — Matemáticas de coma fija y flotante. Ernesto Rico
Schmidt. https://rico-schmidt.name/pymotw-3/decimal/index.html.
Rodríguez, M., Espinoza, S., Huerta, M. y Tapia Silva, A. (2020). Análisis exploratorio
de datos en SPSS. Ediciones UCM.