0% encontró este documento útil (0 votos)
4 vistas43 páginas

Módulo 4. Análisis e Interpretación de Datos

El Módulo 4 se centra en el análisis e interpretación de datos, destacando la importancia del análisis exploratorio de datos (EDA) para entender las relaciones y estructuras dentro de un dataset. Se presentan herramientas y funciones de Python para explorar datos, generar gráficos y manejar tipos de datos, así como la estadística descriptiva para convertir datos en información útil. Además, se abordan técnicas para identificar valores atípicos y errores, y se introducen librerías de visualización como Matplotlib, Seaborn y Bokeh.

Cargado por

Cristian López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas43 páginas

Módulo 4. Análisis e Interpretación de Datos

El Módulo 4 se centra en el análisis e interpretación de datos, destacando la importancia del análisis exploratorio de datos (EDA) para entender las relaciones y estructuras dentro de un dataset. Se presentan herramientas y funciones de Python para explorar datos, generar gráficos y manejar tipos de datos, así como la estadística descriptiva para convertir datos en información útil. Además, se abordan técnicas para identificar valores atípicos y errores, y se introducen librerías de visualización como Matplotlib, Seaborn y Bokeh.

Cargado por

Cristian López
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 43

Módulo 4.

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.

Luego, se realizará el análisis e interpretación de los datos para hacer la conversión de


datos a información útil.

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.

Para comenzar, veamos un video que nos introduce en el análisis de datasets.


Video 1. ¿Qué es el análisis exploratorio de datos?
Fuente: Comunicación Numérica (14 de febrero de 2021). ¿Qué es el análisis exploratorio de datos? [archivo de video]. YouTube.
https://bit.ly/3SVNsKh.

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.

Cuando tenemos un dataset en el proceso, deberíamos hacernos algunas


preguntas claves como:

¿Existe algún tipo de estructura en los datos?


¿Dónde están centrados?
¿Cuál es la dispersión?
¿Cuál es la relación entre ellos?
¿Cómo sintetizar y presentar la información?
¿Hay sesgo en los datos seleccionados?
¿Hay errores de codificación?
¿Hay datos atípicos? ¿qué hacer con ellos?
¿Hay datos faltantes? ¿Qué hacer para recuperarlos? ¿Tiene algún patrón?

Usualmente, un EDA sigue una serie de pasos:

1. Familiarizarse con la naturaleza de los datos a analizar.


2. Realizar un examen gráfico y descriptivo de las variables.
3. Realizar un examen gráfico y descriptivo de la relación entre variables.
4. Preparar los datos para aplicar cualquier técnica.
5. Identificar datos atípicos y evaluar el impacto que estos provocan en el análisis.
6. Analizar el efecto de los datos faltantes y tomar decisiones.
Finalmente, para conectar lo anterior, la estadística descriptiva está formada por
métodos gráficos y numéricos que se utilizan para resumir, procesar los datos y
transformarlos en información.

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

Fuente: elaboración propia.

Cuando el estudio se centra en datos cualitativos, la mejor herramienta es una tabla de


frecuencia que muestre un recuento de los datos. Esta tabla puede ser absoluta o
relativa, siendo la última mucho más adecuada.

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.

Ejemplo: el gerente de la empresa necesita conocer en qué porcentaje aumentaron los


ingresos de este año (1200) en relación con el anterior (1000). Entonces, el resultado
sería, 1200 sobre 1000, multiplicado por 100, igual a 120. Es decir, los ingresos
aumentaron en un 20 %.

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).

Python proporciona una variedad de tipos de datos especializados, 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

Tema 3. Funciones para explorar el dataset


Un objetivo fundamental de un EDA (análisis exploratorio de datos) es detectar valores
atípicos y errores. A la vez, se deben identificar diferentes patrones en los datos, ya
que esto permite comprender mejor los datos antes de hacer suposiciones. Los
resultados del EDA ayudan a las empresas a conocer a sus clientes, expandir su
negocio y tomar mejores decisiones.

Para entender mejor el EDA, veamos un ejemplo práctico. Usaremos un dataset de


automóviles. Te recomendamos que lo descargues directamente desde el siguiente
enlace: https://bit.ly/3L5HT9Y.

Importamos librerías y leemos el dataset

>>> import numpy as np


>>> import pandas as pd
>>> import matplotlib.pyplot as plt
Figura 2. Dataset (1)

Fuente: elaboración propia.

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.

Al cargarlo previamente, en este caso en Jupyter Notebook, podemos leerlo


directamente y obtendremos el mismo resultado:

Figura 3. Dataset (2)

Fuente: elaboración propia.

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”:

Figura 4. Dataset (3)

Fuente: elaboración propia.

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.

Figura 5. Dataset (4)

Fuente: elaboración propia.

Ahora, revisemos los valores faltantes en nuestro dataset.

Figura 6. Dataset (5)


Fuente: elaboración propia.

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).

Figura 7. Dataset (6)

Fuente: elaboración propia.

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:

Figura 8. Dataset (7)


Fuente: elaboración propia.

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

Fuente: elaboración propia.

Finalmente, podríamos rellenar los espacios vacíos para las variables numéricas con el
valor de la media:

Figura 10: Rellenar los espacios vacíos


Fuente: elaboración propia.

Tema 4. Funciones básicas de matemáticas


Python es muy útil para resolver problemas matemáticos. “Incluye tipos incorporados
para manejar números enteros y números de coma flotante, que son adecuados para las
matemáticas básicas que pueden aparecer en una aplicación promedio” (Rico Schmidt,
s.f., https://bit.ly/3FbgQGz). La biblioteca estándar incluye módulos para necesidades
más avanzadas.

Los números de coma flotante incorporados de Python son lo suficientemente precisos


para la mayoría de las solicitudes con requerimientos matemáticos, pero cuando se
necesitan representaciones más precisas de valores no enteros, los módulos
decimal y fractions son más adecuados.

“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.

En Python podemos hacer operaciones en una columna de datos. Como ejemplo,


multipliquemos todos los valores de peso por 2. Un uso más útil podría ser
normalizar los datos con la media, área o algún otro valor calculado de nuestros datos.

Figura 11: Operaciones en una columna de datos

Fuente: elaboración propia.

Podemos graficar rápida y fácilmente los datos usando Pandas, y aplicar estadísticas
descriptivas.

Figura 12: Crear gráfico

Fuente: elaboración propia.

También podemos realizar conteos de especie por sitio, por ejemplo, ver cuántos
animales fueron capturados por sitio:

Figura 13: Conteos de especie por sitio


Fuente: elaboración propia.

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

Unidad 2: Gráficos y su interpretación


Tema 1. Librerías de visualización de Python
Existen diversas librerías de visualización asociadas a Python que se están aplicando en
diversas áreas de vanguardia:

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.

Librerías de Python para visualización


Una de las fases del proceso de machine learning más importantes es entender el
problema que vamos a resolver. Una forma que tenemos de mejorar nuestra
comprensión del problema es entender mejor los datos. La visualización de datos
nos ayuda a entender mejor tanto los datos como el problema.

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

Matplotlib es la librería gráfica de Python estándar y la más conocida. Puedes


usar Matplotlib para generar gráficos de calidad necesaria para publicarlas tanto
en papel como digitalmente.

Con Matplotlib puedes crear muchos tipos de gráficos: series temporales,


histogramas, espectros de potencia, diagramas de barras, diagramas de errores,
etc.

[Más adelante, en este módulo, estudiaremos más detenidamente lo que


Matplotlib es capaz de realizar]

Seaborn

Seaborn es una librería gráfica basada en Matplotlib, especializada en la


visualización de datos estadísticos. Se caracteriza por ofrecer un interfaz de alto
nivel para crear gráficos estadísticos visualmente atractivos e informativos.

Seaborn considera la visualización como un aspecto fundamental a la hora de


explorar y entender los datos. Se integra muy bien con la librería de manipulación
de datos pandas.

Bokeh

Bokeh es una librería para visualizar datos de forma interactiva en un navegador


web. Con Bokeh podemos crear gráficos versátiles, elegantes e interactivos. Los
desarrolladores de Bokeh buscan un buen rendimiento con gran cantidad de
datos, incluso con datos que vayan llegando en tiempo real.

...

Librerías de Python para cálculo numérico y análisis de datos


Otra de las fases del proceso de machine learning que más tiempo consume es la
preparación de datos y el cálculo de atributos relevantes o características
(features). NumPy, SciPy y Pandas son las librerías de Python ideales para
análisis de datos y computación numérica.

Seguramente también nos enfrentaremos a problemas que no requieren el uso de


aprendizaje automático sino sólo el análisis de datos. Por supuesto, también
podemos usar estas librerías en estos casos.

NumPy

NumPy proporciona una estructura de datos universal que posibilita el análisis de


datos y el intercambio de datos entre distintos algoritmos. Las estructuras de
datos que implementa son vectores multidimensionales y matrices con capacidad
para gran cantidad de datos.

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

SciPy proporciona rutinas numéricas eficientes fáciles de usar y opera en las


mismas estructuras de datos proporcionadas por NumPy. Por ejemplo, con SciPy
puedes realizar: integración numérica, optimización, interpolación, transformadas
de Fourier, álgebra lineal, estadística, etc.

...

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.

Para aprender más, puedes mirar la documentación de Pandas


(https://pandas.pydata.org/).

Numba

Numba es un compilador para Python diseñado especialmente para acelerar las


funciones numéricas, generando código máquina optimizado a partir de código
Python.

Numba traduce funciones escritas en Python a código máquina optimizado a la


hora de ejecutarse; es decir, da la capacidad de compilar el código tan pronto
como se ejecuta (es un compilador Just-in-Time).

Los algoritmos numéricos compilados con Numba pueden alcanzar velocidades


de ejecución tan altas como las de C o FORTRAN.

Si es necesario optimizar la velocidad del código, no tenemos por qué compilar


código por separado, ni necesitamos tener el compilador de C/C++ instalado.
Basta aplicar uno de los decoradores de Numba a nuestra función de Python y
Numba hará el resto.
Para saber más, puedes consultar la documentación de Numba
(https://numba.pydata.org/)

Librerías de Python para machine learning


Existen librerías de aprendizaje automático, Scikit-Learn es la más utilizada.

Scikit-learn

Scikit-learn es una librería de Python para machine learning y análisis de datos.


Está basada en NumPy, SciPy y Matplotlib. Las ventajas principales de Scikit-
learn son su facilidad de uso y la gran cantidad de técnicas de aprendizaje
automático que implementa.

Con Scikit-learn podemos realizar aprendizaje supervisado y no supervisado.


Podemos usarlo para resolver problemas tanto de clasificación y como de
regresión.

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.

Otro punto a favor de scikit-learn es que los valores de los hiper-parámetros


tienen unos valores por defecto adecuados para la mayoría de los casos.

Estas son algunas de las técnicas de aprendizaje automático que podemos


usar con Scikit-learn:

regresión lineal y polinómica;


regresión logística;
máquinas de vectores de soporte;
árboles de decisión;
bosques aleatorios (random forests);
agrupamiento (clustering);
modelos basados en instancias;
clasificadores bayesianos;
reducción de dimensionalidad;
detección de anomalías;
etc.
Para aprender más, puedes mirar la documentación de scikit-learn (https://scikit-
learn.org/stable/).

Librerías de Python para deep learning


Aunque el deep learning se engloba dentro del machine learning, colocamos las
librerías de Python para aprendizaje profundo al mismo nivel, ya que últimamente
el deep learning es el mayor responsable de la reciente popularidad del machine
learning.

TensorFlow

TensorFlow es una librería de Python, desarrollada por Google, para realizar


cálculos numéricos mediante diagramas de flujo de datos.

En vez de codificar un programa, codificaremos un grafo. Los nodos de este grafo


serán operaciones matemáticas y las aristas representan los tensores (matrices
de datos multidimensionales).

Con esta computación basada en grafos, TensorFlow puede usarse para deep
learning y otras aplicaciones de cálculo científico.

Si te estás preguntando por qué necesitamos diseñar un grafo en vez de un


programa, es por la flexibilidad de ejecución de TensorFlow. Por ejemplo, el grafo
que representa la red neuronal profunda y sus datos, se podrá ejecutar en una o
varias CPU o GPU en un PC, en un servidor o en un móvil.

Para aprender más, puedes visitar la página de TensorFlow:


https://www.tensorflow.org y ver allí un Tutorial: https://www.tensorflow.org/tutorials
(en inglés).

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

PyTorch es una librería de Python, desarrollada por Facebook, que permite el


cálculo numérico eficiente en CPU y GPU.

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!

El aprendizaje profundo (deep learning) usa cálculos matriciales y de derivadas


masivos y paralelizables en GPU. Por eso, PyTorch también se especializa en
deep learning.

Para aprender más, puedes mirar la página de PyTorch y su documentación:


https://pytorch.org/

Librerías de Python para IA explicable


SHAP

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.

Librerías de Python para procesamiento de lenguaje natural


Algunas de las librerías que hemos visto se pueden usar también para algunas de
las fases del procesamiento del lenguaje natural. Por ejemplo, Scikit-learn puede
usarse para calcular frecuencias normalizadas de los términos que aparecen en
documentos.
Las librerías de deep learning y Scikit-learn también permiten construir modelos
de machine learning con datos de texto, una vez estos se hayan convertido a un
formato estándar.

En este apartado, vamos a ver las librerías que están principalmente dedicadas al
procesamiento del lenguaje natural.

NLTK: natural language toolkit

NLTK es una de las librerías más antiguas en Python para procesamiento de


lenguaje natural. Sigue siendo muy útil para tareas de preprocesado de texto tales
como la tokenización, lematización, exclusión de palabras irrelevantes, etc. NLTK
también se usa mucho como herramienta de estudio y enseñanza de
procesamiento del lenguaje.

Para aprender más de NLTK, puedes visitar la página: https://www.nltk.org/

Gensim

Gensim es una librería para el procesamiento de lenguaje natural creada por


Radim Řehůřek. El punto fuerte de Gensim es el modelado de temas. Es decir,
puede identificar automáticamente de que tratan un conjunto de documentos.

Además, Gensim es útil para construir o importar representaciones de vectores


distribuidas tales como word2vec. También podemos usar Gensim para analizar la
semejanza entre documentos, lo que es muy útil cuando realizamos búsquedas.

Para aprender más, puedes ver la página: https://radimrehurek.com/gensim/

spaCy

SpaCy es la librería de procesamiento natural más rápida que existe. Está


diseñada para usarse en aplicaciones reales y extraer información relevante.
SpaCy también es muy útil para preparar texto para otras tareas de aprendizaje
automático. Por ejemplo, podemos preparar los datos para usarlos con
TensorFlow, PyTorch, Scikit-learn, Gensim, etc.

Con SpaCy también vamos a poder construir modelos lingüísticos estadísticos


sofisticados para muchos de los problemas de procesamiento de lenguaje natural.
Para saber más, mira la documentación de SpaCy (en inglés).

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.

A efectos prácticos es como una consola interactiva de Python en un navegador


que permite la ejecución de código Python, visualización de datos y gráficos, y
documentar lo que estés haciendo.

Jupyter no es en realidad una librería de Python. Sin embargo, ya que estamos


viendo cuáles son las herramientas que más usa un científico de datos, la lista no
estaría completa sin Jupyter.

[Jupyter Notebook es un entorno web que va a facilitarnos mucho el trabajo. Con


Jupyter podemos probar nuestras ideas y ver los resultados de forma muy
intuitiva, a la vez que lo documentamos].

...

Anaconda

Anaconda es una distribución de Python para Cálculo numérico, análisis de datos


y machine learning. Contiene las librerías más usadas por los científicos de datos.
Además, hace muy fácil la instalación de otras librerías que puedas necesitar.

Con Anaconda también es posible crear varios entornos de trabajo si estás


trabajando en varios proyectos. Esto puede ser útil, por ejemplo, si uno de los
proyectos necesita Python 3 y el otro Python 2. O si estás trabajando en un
proyecto que necesita unas librerías específicas o que tengan una versión
específica.

A no ser que tengas que trabajar con aplicaciones antiguas, lo recomendable es


usar la distribución de Anaconda con Python 3. (Martínez Heras, 2020,
https://bit.ly/3L6JEDN)
Podemos ver la documentación de Anaconda en su página: https://anaconda.org/.

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

Tema 2. Matplotlib: consejos generales


Matplotlib es una librería de visualización de datos multiplataforma que se fundamenta
en las matrices de NumPy. Se trata de una librería de Python especializada en la
creación de gráficos en dos dimensiones.
Permite crear y personalizar los tipos de gráficos más comunes:

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)

Antes de empezar a hacer visualizaciones y gráficas con la librería Matplotlib es


necesario que resolvamos temas generales con algunos consejos que nos ayudarán a
sacar el mayor provecho de estos recursos.

a. Cómo importar Matplotlib

Debemos importar la librería con: import matplotlib.mpl y, además, podemos asignarle


una abreviación:

Figura 14: Importar librería


Fuente: elaboración propia.

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.

Figura 15: Elección de estilos

Fuente: elaboración propia.

A medida que necesitemos un cambio de estilo, podemos actualizarlo.

c. Visualización de los gráficos

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:

Figura 16. Visualización de gráficos


Fuente: elaboración propia.

d. Gráfico de línea simple

La visualización de una sola función y = f(x) es probablemente el gráfico más simple de


todos. Primero, configuraremos el cuaderno para trazar e importar las funciones que
usaremos:

Figura 17: Gráfico de línea simple

Fuente: elaboración propia.

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:

Figura 18: Creación de figura


Fuente: elaboración propia.

En Matplotlib la figura (una instancia de la clase plt.Figure) se puede considerar


como un contenedor único que posee todos los objetos que representan ejes,
gráficos, textos y etiquetas.

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:

Figura 19: Sinusoide

Fuente: elaboración propia.

Si queremos crear una sola figura con varias líneas, podemos llamar a la función de
trazado varias veces:

Figura 20: Figura con varias líneas


Fuente: elaboración propia.

e. Cómo ajustar el gráfico: colores y estilos de línea

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:

Figura 21: Especificar color

Fuente: elaboración propia.

De la misma manera, se puede definir el estilo de línea con la palabra clave “estilo de
línea”:

Figura 22. Estilo de línea


Fuente: elaboración propia.

Para abreviarlo, se pueden usar los siguientes códigos:

Figura 23: Abreviaciones

Fuente: elaboración propia.

f. Cómo ajustar el gráfico: límite de los ejes

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.

En caso de necesitar ajustes, podemos usar las funciones plt.xlim() y plt.ylim():

Figura 24: Ajustar el gráfico


Fuente: elaboración propia.

Se ve mucho mejor si lo comparamos con el ejemplo inicial:

Figura 25: Gráfico ajustado

Fuente: elaboración propia.

Podríamos querer invertir el orden de los ejes. Esto se logra al invertir el orden de los
argumentos de la función anterior:

Figura 26: Invertir el orden de los ejes

Fuente: elaboración propia.


g. Etiquetar los gráficos

Finalmente, revisaremos el etiquetado de los gráficos: sus títulos, etiquetas de eje y


leyendas simples. Los títulos y las etiquetas de los ejes son las etiquetas más simples y
existen métodos que se pueden usar para establecerlas rápidamente.

Figura 27: Revisar etiquetas y títulos

Fuente: elaboración propia.

Adicionalmente, podemos ajustar la posición, el tamaño y el estilo de estas etiquetas


mediante argumentos opcionales para la función.

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().

Figura 28: Método plt.legend()


Fuente: elaboración propia.

A continuación, veremos un video que indica buenas prácticas al momento de utilizar


Matplotlib.

Video 2: Introducción a Matplotlib en Python


Fuente: The PyCoach en Español (2 de abril de 2021). Introducción a Matplotlib en Python | Como hacer gráficos con Python |
Curso completo de Matplotlib [archivo de video]. YouTube. https://bit.ly/3yqQQmV.

Actividad de repaso
¿Para qué se utiliza la función ax.plot en Matplotlib?

Para ajustar los límites de los ejes.

Para crear una leyenda.

Para trazar algunos datos.

Para definir el estilo de línea.

Justificación

Tema 3. Tipos de gráficos


a. Gráfico de barras discreto

Resume la frecuencia absoluta o relativa en datos numéricos discretos.


Figura 29. Gráfico de barras discreto

Fuente: elaboración propia.

En el ejemplo mostramos la función plt.show() en un gráfico de barras que resume la


frecuencia absoluta de ventas del mes para cada vendedor (Carlos, Antonia, María y
Juan). Este gráfico se podría invertir para visualizarlo horizontalmente. Para eso
cambiamos “plt.bar” por “plt.hbar” y ajustamos las etiquetas de cada eje:

Figura 30. Gráfico invertido

Fuente: elaboración propia.

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.

Figura 31. Barras agrupadas


Fuente: elaboración propia.

En el ejemplo, podemos identificar la evolución que ha tenido el número de habitantes


en un lugar específico separado por género: hombres y mujeres.

Los gráficos de barras apiladas se usan para mostrar, por ejemplo, la distribución de
categorías.

Figura 32. Gráfico de barras apiladas

Fuente: elaboración propia.

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

Este gráfico ilustra la frecuencia absoluta o relativa en datos numéricos continuos. Un


histograma simple puede ser un excelente primer paso para comprender un conjunto de
datos.

Figura 33. Histograma

Fuente: elaboración propia.

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:

Figura 34. Histograma con más atributos

Fuente: elaboración propia.

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”).

Figura 35. Uso de histtype='stepfilled'


Fuente: elaboración propia.

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.

Figura 36. Diagrama de caja

Fuente: elaboración propia.

En el ejemplo, retorna un boxplot a partir de los datos dados. Descomponemos el


resultado:
La caja se extiende desde el primer cuartil (Q1) hasta el tercer cuartil (Q3).
La línea horizontal dentro de la caja representa la mediana de los datos.
Los bigotes en la gráfica de caja se extienden desde el valor Q3 hasta el valor
máximo de los datos y desde el valor mínimo de los datos hasta el Q1 de los
datos.
El valor mínimo de los datos está determinado por el valor de Q1-1.5*(Q3-Q1)
mientras que el valor máximo de los datos está determinado por la fórmula
Q3+1.5*(Q3-Q1) (Joshi, 2021, https://bit.ly/41YeeWg).

Veamos otro ejemplo:

Figura 37. Otro ejemplo de boxplot

Fuente: elaboración propia.

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).

Un valor atípico es una observación extrañamente grande o pequeña. Los valores


atípicos pueden tener un efecto desproporcionado en los resultados estadísticos (por
ejemplo, en la media), lo que puede conducir a interpretaciones engañosas. Por eso es
importante identificarlos cuando hacemos un análisis de datos exploratorio para tomar
decisiones que nos permitan mejorar los datasets.

También podemos usar el gráfico boxplot para comparar resultados de distintos grupos:
Figura 38. Comparación de grupos con boxplot

Fuente: elaboración propia.

Actividad de repaso
¿Cuál de las siguientes afirmaciones es correcta?

Los valores atípicos deben ignorarse en los resultados estadísticos.

Los valores atípicos pueden tener un efecto desproporcionado en los


resultados estadísticos.

Justificación

Tema 4. Interpretación de datos y gráficos

Análisis desde los gráficos


El análisis de datos desde los gráficos es una pieza fundamental en el análisis
exploratorio, ya que no se trata solamente de graficar, sino que lo importante es sacar
buenas conclusiones que permitan apoyar la toma de decisiones.

a. Gráfico de barras discreto

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.

Figura 39. Gráfico de precios de vuelo por aerolínea

Fuente: elaboración propia.

¿Cómo se interpretan estos datos? ¿Qué conclusiones podemos obtener luego de


observar el gráfico? Las barras nos permiten comparar rápidamente cantidades o
sumas y el valor que aporta este gráfico es la comparación. Si logramos mostrar de
forma fácil una comparación a través de las barras (independiente que estas sean
verticales u horizontales), entonces podremos comprender mejor algún fenómeno.

Podemos usar la información declarada para responder preguntas de negocio simples:

¿Qué ciudad tiene el mismo costo de viaje independiente de la aerolínea?


Respuesta: Concepción. Se puede observar que ambas barras son iguales.
Para viajar a Puerto Varas ¿qué aerolínea conviene en términos de costo?
Respuesta: SKY.

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:

Figura 40. Histograma de precio de automóviles


Fuente: elaboración propia.

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.

Figura 41. Gráfico de la variable normalized-losses

Fuente: elaboración propia.

En el caso de la variable normalized-losses, se observa una distribución algo más


normalizada, aunque con valor atípico.

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

Fuente: elaboración propia.

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:

Fuente: Sotaquirá, M. (2021). ¿Cómo hacer el Análisis Exploratorio de Datos? -


Guía paso a paso. Codificando Bits. https://bit.ly/41VG3yq.

Hemos aprendido diversas herramientas para generar gráficos con Python, sus librerías
y cómo abordar su interpretación.

En el siguiente enlace les dejamos una simulación de un mercado económico en el que


hay una población de actores, cada uno de los cuales tiene un nivel de riqueza diferente.
Este caso de ejemplo se encuentra en inglés, pero es muy interesante porque aplica
diversas herramientas estudiadas en este módulo: https://bit.ly/3SXz0kU.

¡Felicidades! Hemos llegado al final del recorrido de los módulos. Ahora es


momento de poner todos los conocimientos adquiridos en práctica.

Video de habilidades
¿Cómo podemos importar la librería Matplotlib en Python?
Con la función plt.style()

Con la función plt.legend()

Con la función import matplotlib.mpl

Justificación

¿Cuál es la función que nos permite iniciar un ciclo de eventos para


visualizar los gráficos?

plt.xlim()

plt.show()

plt.style()

Justificación

¿Qué representa la línea horizontal dentro de la caja en el siguiente diagrama?​​


Figura 43: actividad

Fuente: elaboración propia.

La media de los datos.

La mediana de los datos.

El valor máximo de los datos.


Justificación

¿Qué es un valor atípico en un diagrama de caja?

Una observación extrañamente grande o pequeña.

Un valor que está dentro del rango del 50% de los datos.

Un valor que está en el rango del 25% de los datos.

Justificación

¿Qué efecto pueden tener los valores atípicos en los resultados


estadísticos?

Ningún efecto.

Solo afectan a los resultados de la mediana.

Pueden conducir a interpretaciones engañosas.

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.

Equipo AEFOL (1 de agosto de 2022). ¿Cuál es la diferencia entre la IA y el aprendizaje


automático? ELearning actual. https://elearningactual.com/cual-es-la-diferencia-entre-la-
ia-y-el-aprendizaje-automatico/.

Joshi, S. (2021). Matplotlib Boxplot Python. DelffStack.


https://www.delftstack.com/es/howto/matplotlib/matplotlib-boxplot-python/.

Real Academia Española (2022). Porcentaje. Real Academia Española.


https://dle.rae.es/porcentaje?m=form.

Real Academia Española (2022). Razón. Real Academia Española.


https://dle.rae.es/raz%C3%B3n?m=form.

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.

Rico Schmidt, E. (s.f.). Statistics — Cálculos estadísticos. Ernesto Rico Schmidt.


https://rico-schmidt.name/pymotw-3/statistics/index.html.

Rico Schmidt, E. (s.f.). Matemáticas. Ernesto Rico Schmidt. https://rico-


schmidt.name/pymotw-3/numeric.html.

Sensagent Corporation (2013). Montículo (informática). Sensagent Corporation.


http://diccionario.sensagent.com/Mont%c3%adculo%20(inform%c3%a1tica)/es-es/.

Rodríguez, M., Espinoza, S., Huerta, M. y Tapia Silva, A. (2020). Análisis exploratorio
de datos en SPSS. Ediciones UCM.

The PyCoach en Español (2 de abril de 2021). Introducción a Matplotlib en Python |


Como hacer gráficos con Python | Curso completo de Matplotlib [archivo de video].
YouTube. https://bit.ly/3yqQQmV.

También podría gustarte