Diagrama de temas
-
Lenguajes de Preprocesamiento de datos
-
8. Lenguajes del preprocesamiento de datos.
8.1 Python como lenguaje de preprocesamiento de datos
Python se ha consolidado como uno de los lenguajes más utilizados en la ciencia de datos gracias a su facilidad de uso y a la riqueza de sus bibliotecas. Con su sintaxis clara, permite a los científicos de datos realizar tareas complejas de manera eficiente. Un ejemplo destacado es la biblioteca Pandas, que es fundamental para la manipulación y el análisis de datos. A continuación, se presenta un ejemplo de cómo cargar un conjunto de datos y realizar operaciones básicas de exploración:
Código Python
import pandas as pd # Cargar un conjunto de datos df = pd.read_csv('data.csv') # Mostrar las primeras filas del DataFrame print(df.head()) # Describir las estadísticas del DataFrame print(df.describe())Carga de datos con pandas
Fuente: Elaboración PropiaEste código carga un archivo CSV en un DataFrame de Pandas y muestra las primeras filas, así como un resumen estadístico de las columnas numéricas. Este tipo de exploración es crucial para entender la estructura y las características de los datos antes de aplicar técnicas de análisis más avanzadas (McKinney, 2010).
Además, Python es muy efectivo para la visualización de datos, lo que es esencial en el análisis de datos. Bibliotecas como Matplotlib y Seaborn permiten crear gráficos atractivos y significativos. A continuación, se presenta un ejemplo de cómo crear un gráfico de dispersión utilizando Matplotlib:
Código Python
import matplotlib.pyplot as plt # Crear un gráfico de dispersión plt.scatter(df['variable_x'], df['variable_y']) plt.title('Gráfico de Dispersión') plt.xlabel('Variable X') plt.ylabel('Variable Y') plt.show()Visualización de datos con matplotlib
Fuente: Elaboración PropiaEste fragmento de código genera un gráfico de dispersión entre dos variables, permitiendo visualizar la relación entre ellas. La visualización es una parte crucial del análisis de datos, ya que ayuda a identificar patrones, tendencias y anomalías en los datos (McKinney, 2010).
Tutorial: Notebooks en Anaconda Navigator
Anaconda Navigator es una interfaz gráfica que facilita el manejo de entornos y paquetes para Python y R, especialmente útil en ciencia de datos. Uno de sus componentes más destacados son los Jupyter Notebooks, que permiten a los usuarios crear documentos interactivos que combinan código ejecutable, visualizaciones y texto explicativo. A continuación, se presenta un tutorial básico para comenzar a usar notebooks en Anaconda Navigator.
Instalación de Anaconda
Primero, asegúrate de tener Anaconda instalado en tu sistema. Puedes descargarlo desde el sitio oficial de Anaconda. Sigue las instrucciones específicas para tu sistema operativo (Windows, macOS o Linux).
Iniciar Anaconda Navigator
Una vez instalado, abre Anaconda Navigator. Verás una interfaz con varias opciones. Desde aquí, puedes crear nuevos entornos y gestionar tus paquetes.
Abrir Jupyter Notebook
En la ventana principal de Anaconda Navigator, busca la opción "Jupyter Notebook" y haz clic en "Launch". Esto abrirá una nueva pestaña en tu navegador predeterminado, mostrando el dashboard de Jupyter.
Crear un Nuevo Notebook
En el dashboard de Jupyter, haz clic en "New" y selecciona "Python 3" (o la versión que tengas instalada) para crear un nuevo notebook. Se abrirá una nueva pestaña donde podrás escribir y ejecutar tu código.
Ejemplo de Código en un Notebook
A continuación, se presenta un sencillo ejemplo de cómo cargar y visualizar un conjunto de datos utilizando la biblioteca Pandas:
Código Python
import pandas as pd import matplotlib.pyplot as plt # Cargar un conjunto de datos df = pd.read_csv('data.csv') # Mostrar las primeras filas del DataFrame print(df.head()) # Crear un gráfico de dispersión plt.scatter(df['variable_x'], df['variable_y']) plt.title('Gráfico de Dispersión') plt.xlabel('Variable X') plt.ylabel('Variable Y') plt.show()Carga y visualización de datos
Fuente: Elaboración PropiaEste código carga un archivo CSV y genera un gráfico de dispersión entre dos variables. Para ejecutar el código, simplemente selecciona la celda y presiona Shift + Enter.
Guardar y Compartir el Notebook
Para guardar tu trabajo, haz clic en "File" y luego en "Save and Checkpoint". También puedes exportar tu notebook a otros formatos, como PDF o HTML, seleccionando "File" > "Download as" y eligiendo el formato deseado.
8.1.1 Tipos de datos en Python y estructuras básicas
Python es un lenguaje de programación poderoso y flexible que proporciona una variedad de tipos de datos y estructuras básicas, lo que permite a los desarrolladores manejar información de manera eficiente. Entre los tipos de datos más utilizados se encuentran los enteros (int), los números de punto flotante (float), las cadenas de texto (str), las listas (list), las tuplas (tuple), los diccionarios (dict) y los conjuntos (set). Por ejemplo, los enteros se utilizan para representar números enteros, mientras que los números flotantes son ideales para cálculos que requieren decimales. A continuación, se presentan algunos ejemplos básicos:
Código
# Tipos de datos entero = 10 # Tipo int flotante = 10.5 # Tipo float cadena = "Hola, Python!" # Tipo str print(entero, flotante, cadena)
Tipos de datos
Fuente: Elaboración PropiaLas estructuras de datos en Python son fundamentales para organizar y manipular información. Las listas son colecciones ordenadas y mutables, lo que significa que se pueden modificar después de su creación. Por ejemplo, se puede crear una lista de números y luego actualizarla:
Las tuplas son similares a las listas, pero son inmutables, lo que significa que no pueden modificarse después de su creación.Código
# Lista lista_numeros = [1, 2, 3, 4] # Crear una lista con elementos iniciales lista_numeros.append(5) # Agregar el número 5 al final de la lista print(lista_numeros) # Imprimir la lista actualizada
Figura 5 Listas
Fuente: Elaboración PropiaCódigo
# Tupla tupla_numeros = (1, 2, 3) # Crear una tupla con elementos iniciales print(tupla_numeros) # Imprimir la tupla
Figura 6 Tuplas
Fuente: Elaboración PropiaLos diccionarios son estructuras de datos clave-valor que permiten un acceso rápido a la información. Por ejemplo, se puede crear un diccionario que almacene la información de una persona:
Código
# Diccionario persona = { "nombre": "Juan", "edad": 30, "ciudad": "Madrid" } print(persona["nombre"]) # Salida: Juan
Figura 7 Diccionarios
Fuente: Elaboración PropiaPor último, los conjuntos son colecciones no ordenadas de elementos únicos, ideales para realizar operaciones matemáticas.
Código
# Conjunto conjunto = {1, 2, 3, 4, 4} # Los duplicados se eliminan print(conjunto) # Salida: {1, 2, 3, 4}
Figura 8 Sets de datos
Fuente: Elaboración PropiaConocer estos tipos de datos y estructuras básicas es esencial para cualquier desarrollador que trabaje con Python, ya que son la base para construir algoritmos y aplicaciones más complejas (Lutz, 2013).
Joins en Python
En Python, los "joins" son técnicas utilizadas para combinar datos de diferentes estructuras, como listas, diccionarios o DataFrames. Estas operaciones son esenciales para el análisis y la manipulación de datos, especialmente al trabajar con bibliotecas como Pandas, que simplifican tareas complejas y permiten un manejo eficiente de grandes volúmenes de datos (McKinney, 2018).
Joins en Listas
Para combinar listas en Python, se pueden utilizar métodos como extend() o el operador +. Sin embargo, estas técnicas son limitadas cuando se comparan con los joins en bases de datos. Por ejemplo, al trabajar con listas de diccionarios, se pueden aplicar comprensiones de lista para filtrar y combinar datos según ciertas condiciones. Este enfoque es muy útil para realizar joins simulados entre listas (Lutz, 2013).
Código
listal = [{'id': 1, 'nombre': 'Juan'}, {'id': 2, 'nombre': 'Ana'}] lista2 = [{'id': 1, 'edad': 30}, {'id': 2, 'edad': 25}] resultado = [{**x, **y} for x in listal for y in lista2 if x['id'] == y['id']] print(resultado) #[{'id': 1, 'nombre': 'Juan', 'edad': 30}, {'id': 2, 'nombre': 'Ana', 'edad': 25}]Figura 9 Joins en listas
Fuente: Elaboración PropiaEn este ejemplo, se combinan dos listas de diccionarios en función del campo 'id'. El resultado es una lista de diccionarios que contiene tanto el nombre como la edad de cada persona (Beazley, 2013).
Joins en Pandas
La biblioteca Pandas proporciona métodos avanzados para realizar joins de manera más eficiente. Funciones como merge(), join() y concat() permiten combinar DataFrames de diferentes maneras: joins internos, externos, por índices y más. Esto es particularmente útil para el análisis de datos complejos en entornos de ciencia de datos (VanderPlas, 2016).
Ejemplo de merge()
Código
import pandas as pd df1 = pd.DataFrame({'id': [1, 2], 'nombre': ['Juan', 'Ana']}) df2 = pd.DataFrame({'id': [1, 2], 'edad': [30, 25]}) resultado = pd.merge(df1, df2, on='id') print(resultado) ''' id nombre edad 0 1 Juan 30 1 2 Ana 25 '''Figura 10 Mergue
Fuente: Elaboración PropiaEn este caso, pd.merge() realiza un join interno utilizando la columna 'id' como clave. El resultado es un nuevo DataFrame que contiene las columnas 'id', 'nombre' y 'edad' para cada registro que coincide (McKinney, 2018).
8.1.2 Tipos de Joins en Pandas
Pandas admite varios tipos de joins, que son fundamentales para la manipulación de datos:
- Inner Join: Devuelve solo las filas con claves coincidentes en ambos DataFrames.
- Outer Join: Devuelve todas las filas de ambos DataFrames, llenando con NaN donde no hay coincidencias.
- Left Join: Devuelve todas las filas del DataFrame izquierdo y las coincidencias del derecho.
- Right Join: Devuelve todas las filas del DataFrame derecho y las coincidencias del izquierdo (Ponnusamy, 2019).
A continuación, se muestra una imagen de ejemplo de todos los tipos de joins:
Empleado CSV
EMPLOYEE_ID,FIRST_NAME,LAST_NAME,HIRE_DATE,DEPARTMENT_ID 101,Juan,Pérez,2020-01-15,10 102,Ana,Gómez,2021-05-20,20 103,Carlos,Rodríguez,2019-11-10,10 104,Sofía,Martínez,2022-03-01,30Departamento CSV
DEPARTMENT_ID,DEPARTMENT_NAME,MANAGER_ID,LOCATION_ID 10,Ventas,201,1001 20,Marketing,202,1002 30,Recursos Humanos,203,1003Código
import pandas as pd # Leer los archivos CSV y crear los DataFrames empleado = pd.read_csv('empleado.csv') departamento = pd.read_csv('departamentos.csv') # Realizar un Inner Join utilizando la columna 'DEPARTMENT_ID' emp_dept = pd.merge(empleado, departamento, on=['DEPARTMENT_ID'], how='inner') # Mostrar el DataFrame resultante print(emp_dept)Resultado
EMPLOYEE_ID FIRST_NAME LAST_NAME HIRE_DATE DEPARTMENT_ID DEPARTMENT_NAME MANAGER_ID LOCATION_ID 0 101 Juan Pérez 2020-01-15 10 Ventas 201 1001 1 103 Carlos Rodríguez 2019-11-10 10 Ventas 201 1001 2 102 Ana Gómez 2021-05-20 20 Marketing 202 1002 3 104 Sofía Martínez 2022-03-01 30 Recursos Humanos 203 1003Figura 11 Joins
Fuente: Elaboración PropiaCódigo
import pandas as pd # Datos de ejemplo empleado_data = {'EMP_ID': [1, 2, 3, 4], 'Nombre': ['Juan', 'María', 'Carlos', 'Ana'], 'Apellido': ['Pérez', 'Sánchez', 'Gómez', 'Rodríguez'], 'Dept_ID': [10, 20, 10, None]} empleado = pd.DataFrame(empleado_data) departamento_data = {'Dept_ID': [10, 20, 30], 'Nombre_Dept': ['Ventas', 'Marketing', 'Recursos Humanos']} departamento = pd.DataFrame(departamento_data) # Realizar Right Join emp_dept = pd.merge(empleado, departamento, on='Dept_ID', how='right') # Mostrar el DataFrame resultante print(emp_dept)Right Join Resultado
EMP_ID Nombre Apellido Dept_ID Nombre_Dept 1.0 Juan Pérez 10 Ventas 3.0 Carlos Gómez 10 Ventas 2.0 María Sánchez 20 Marketing NaN NaN NaN 30 Recursos HumanosCódigo
import pandas as pd # Datos de ejemplo (los mismos que en el ejemplo anterior) empleado_data = {'EMP_ID': [1, 2, 3, 4], 'Nombre': ['Juan', 'María', 'Carlos', 'Ana'], 'Apellido': ['Pérez', 'Sánchez', 'Gómez', 'Rodríguez'], 'Dept_ID': [10, 20, 10, None]} empleado = pd.DataFrame(empleado_data) departamento_data = {'Dept_ID': [10, 20, 30], 'Nombre_Dept': ['Ventas', 'Marketing', 'Recursos Humanos']} departamento = pd.DataFrame(departamento_data) # Realizar Outer Join emp_dept = pd.merge(empleado, departamento, on='Dept_ID', how='outer') # Mostrar el DataFrame resultante print(emp_dept)Resultado
EMP_ID Nombre Apellido Dept_ID Nombre_Dept 1.0 Juan Pérez 10.0 Ventas 3.0 Carlos Gómez 10.0 Ventas 2.0 María Sánchez 20.0 Marketing NaN Ana Rodríguez NaN NaN NaN NaN NaN 30.0 Recursos HumanosResultado Outer Join Ejemplo de Outlier
Este ejemplo ilustra cómo se incluyen filas de ambos DataFrames, independientemente de si hay coincidencias. Esto es útil para analizar datos donde puede haber registros faltantes en uno de los conjuntos (VanderPlas, 2016).
Los joins son herramientas esenciales en Python para la manipulación y el análisis de datos. Al utilizar listas o la biblioteca Pandas, los joins permiten integrar diferentes fuentes de datos de manera efectiva, lo cual es crucial en el campo de la ciencia de datos y el análisis (McKinney, 2018).
8.1.3 Analíticos Descriptivos
Los análisis descriptivos son una parte fundamental del análisis de datos, ya que permiten resumir y comprender las características de un conjunto de datos. Estos análisis incluyen medidas de tendencia central, dispersión y visualización de datos, que son esenciales para extraer conocimientos iniciales y guiar decisiones posteriores. En Python, bibliotecas como Pandas y Matplotlib facilitan la realización de estos análisis de manera eficiente (McKinney, 2018).
Medidas de Tendencia Central
Las medidas de tendencia central, como la media, la mediana y la moda, son esenciales para describir el comportamiento general de un conjunto de datos. En Python, estas medidas se pueden calcular fácilmente utilizando Pandas.
Código
import pandas as pd # Datos de ejemplo data = {'valores': [10, 20, 20, 30, 40]} df = pd.DataFrame(data) # Calcular media media = df['valores'].mean() # Calcular mediana mediana = df['valores'].median() # Calcular moda (usando .mode() y obteniendo el primer valor si hay múltiples modas) moda = df['valores'].mode()[0] # Imprimir resultados con formato print(f'Media: {media:.2f}') # Formatea a 2 decimales print(f'Mediana: {mediana}') print(f'Moda: {moda}')Medidas de tendencia central
Fuente: Elaboración PropiaEste ejemplo muestra cómo calcular la media, la mediana y la moda de un conjunto de datos. La media proporciona un valor promedio, la mediana representa el valor central y la moda indica el valor más frecuente (VanderPlas, 2016).
Medidas de Dispersión
Las medidas de dispersión, como la varianza y la desviación estándar, ayudan a entender la variabilidad dentro de un conjunto de datos. Estas medidas son importantes para evaluar la confiabilidad y consistencia de los datos (Ponnusamy, 2019).
Código
import pandas as pd # Datos de ejemplo (los mismos que en el ejemplo anterior) data = {'valores': [10, 20, 20, 30, 40]} df = pd.DataFrame(data) # Calcular varianza varianza = df['valores'].var() # Calcular desviación estándar desviacion_estandar = df['valores'].std() # Imprimir resultados con formato print(f'Varianza: {varianza:.2f}') # Formatea a 2 decimales print(f'Desviación Estándar: {desviacion_estandar:.2f}') # Formatea a 2 decimalesMedidas de dispersión
Fuente: Elaboración PropiaEn este caso, se calculan la varianza y la desviación estándar del conjunto de datos, lo que permite comprender la dispersión de los valores respecto a la media (McKinney, 2018).
8.1.4 Visualización de Datos
La visualización de datos es una herramienta clave en el análisis descriptivo, ya que permite representar gráficamente la información y facilita la identificación de patrones. Bibliotecas como Matplotlib y Seaborn son ampliamente utilizadas en Python para crear visualizaciones efectivas.
Código
import matplotlib.pyplot as plt import seaborn as sns import pandas as pd # Importa pandas para crear el DataFrame # Datos de ejemplo (los mismos que en el ejemplo anterior) data = {'valores': [10, 20, 20, 30, 40]} df = pd.DataFrame(data) # Crear el histograma con KDE sns.histplot(df['valores'], bins=5, kde=True) # Añadir título y etiquetas a los ejes plt.title('Distribución de Valores') plt.xlabel('Valores') plt.ylabel('Frecuencia') # Mostrar el gráfico plt.show()Histplot
Fuente: Elaboración PropiaLos análisis descriptivos son fundamentales para el análisis inicial de datos, ya que permiten extraer información clave sobre un conjunto de datos. Utilizando Python y sus poderosas bibliotecas, los analistas pueden calcular medidas de tendencia central, dispersión y realizar visualizaciones efectivas que facilitan la toma de decisiones basadas en datos (McKinney, 2018).
Análisis Exploratorio de Datos
El análisis exploratorio de datos consiste en realizar una visión general de las variables del conjunto de datos a analizar, con el objetivo de obtener una comprensión inicial de los datos con los que vamos a trabajar. Entre los análisis recomendados se encuentran:
- Analizar medidas de tendencia central y medidas de dispersión.
- Determinar la cantidad de valores nulos.
- Identificar el número de registros distintos.
Las visualizaciones comúnmente utilizadas en este tipo de análisis incluyen gráficos de cajas, histogramas, gráficos de dispersión, entre otros.
Aprende más
Para conocer más sobre Análisis exploratorio de datos usando usando SweetViz, puedes leer el siguiente artículo ¡Accede aquí!
Análisis de Componentes Principales
El análisis de componentes principales (PCA, por sus siglas en inglés) es un procedimiento matemático que transforma un conjunto de variables correlacionadas en un conjunto menor de variables no correlacionadas, denominadas componentes principales.
El PCA es una técnica exploratoria que no establece supuestos y puede aplicarse siempre. Su objetivo es encontrar combinaciones lineales de las variables originales que maximicen la varianza en el espacio generado por las variables originales, minimizando la pérdida de información lineal.
El análisis de componentes principales tiene varios objetivos y características clave:
- Objetivo principal: Reducir la cantidad de dimensiones al eliminar variables o información redundante.
- Representación gráfica: Permite representar de manera gráfica información multidimensional.
- Normalización: Las unidades de medición de las variables pueden influir en la variabilidad de las componentes principales. Por lo tanto, es conveniente normalizar las variables antes de aplicar el análisis.
- Impacto de las unidades de medida: Las unidades de medida de las variables pueden afectar el análisis. Por ejemplo, cambiar las unidades de medida de metros a pulgadas (para la altura) o de kilogramos a libras (para el peso) podría generar resultados diferentes.
- Estandarización o normalización: Para evitar distorsiones por las unidades de medida, es recomendable estandarizar o normalizar los datos. Esto implica transformar los datos en rangos más pequeños, como [-1,1] o [0,1].
Formas de normalizar los datos
Min-Max Normalization: Supongamos que el valor mínimo y máximo del atributo "ingresos" son $12,000 y $98,000, respectivamente. Si queremos normalizar los datos en un rango de [0,1], el valor $73,600 se transformaría de la siguiente manera:
Fórmula
$$v_i' = \frac{v_i - \text{min}_{\Lambda}}{\text{max}_{\Lambda} - \text{min}_{\Lambda}} (\text{new_max}_{\Lambda} - \text{new_min}_{\Lambda}) + \text{new_min}_{\Lambda}$$ $$\frac{73600 - 12000}{98000 - 12000} \cdot (1 - 0) + 0 = 0.716$$
Min Max Normalization
Fuente: Elaboración PropiaZ-Score Normalization
Supongamos que la media y la desviación estándar de los valores para los ingresos son $54,000 y $16,000, respectivamente. Usando la normalización Z-score, el valor de $73,600 para los ingresos se transformaría de la siguiente manera:
Fórmula
$$\frac{73600 - 54000}{16000} = 1.225$$
Z- Score Normalization
Fuente: Elaboración PropiaAprende más
Para conocer más sobre cómo implementar e interpretar las componentes principales, puedes leer el siguiente artículo ¡Accede aquí!
8.1.5 Ejemplos de aplicación de las componentes principales
8.1.5.1 Reconocimiento facial
El PCA se utiliza frecuentemente en el reconocimiento facial, donde ayuda a reducir la dimensionalidad de imágenes de alta resolución. Al transformar las imágenes en un espacio de menor dimensión, el PCA capta las características más relevantes de las caras, mejorando la eficiencia de los algoritmos de reconocimiento (Turk & Pentland, 1991).
8.1.5.2 Compresión de Datos
Otra aplicación del PCA es en la compresión de datos, como en archivos de audio y video. Al eliminar las componentes menos significativas, se puede reducir el tamaño del archivo mientras se conserva la mayor parte de la información. Esta técnica es especialmente útil en aplicaciones de streaming y almacenamiento (Wang et al., 2015).
8.1.5.3 Análisis de Clientes
En marketing, el PCA permite identificar patrones de comportamiento en grandes conjuntos de datos de clientes. Por ejemplo, en un análisis de segmentación, el PCA reduce las dimensiones de variables como hábitos de compra, edad y ubicación, facilitando la identificación de grupos de clientes similares (Hernández et al., 2015).
8.1.5.4 Bioinformática
En estudios genéticos, el PCA se aplica para analizar grandes conjuntos de datos de expresión génica. Al reducir la dimensionalidad, se facilita la identificación de patrones asociados con enfermedades, lo que puede ayudar en la investigación y diagnóstico (Ringner, 2008).
8.1.5.5 Detección de Anomalías
El PCA también se utiliza en la de fraudes, especialmente en el análisis de transacciones. Al reducir las dimensiones de las características de las transacciones, se pueden identificar fácilmente aquellas que se desvían de los patrones normales, lo que puede indicar posibles fraudes (Xia et al., 2015).
8.1.5.6 Visualización de Datos
En la visualización de datos multidimensionales, el PCA facilita la representación gráfica de conjuntos de datos con muchas variables. Al reducir las dimensiones a 2 o 3, se facilita la interpretación y el análisis visual de los datos (Gabriel, 1971).
8.1.5.7 Análisis de Sentimientos
En el análisis de texto, el PCA se utiliza para reducir la dimensionalidad de las características de texto, como los términos en un documento. Esto permite una representación más manejable de los datos textuales en tareas de clasificación o (Blei et al., 2003).
Profundiza más
Este recurso te ayudará a enfatizar sobre la librería de scikit-learn ¡Accede aquí!
-
Hacer un envío
-
Hacer intentos: 1
-
Hacer intentos: 1