Ir al contenido principal

Diagrama de temas

      • Extraer, transformar y cargar (ETL)


        Extraer, transformar y cargar (ETL) es el proceso de combinar datos de varias fuentes, prepararlos y cargar el resultado en un destino. Es la primera fase importante de cualquier proceso de un proyecto de IA o AA que implica un trabajo práctico con los datos. El objetivo general del proceso ETL es básicamente hacerse cargo de un desorden y ordenarlo. No es recomendable ingresar en la fase de modelado con datos de varias fuentes dispares; tampoco desea modelar datos que son incoherentes o tienen muchos problemas. Esto perjudicará en gran medida el desempeño del modelo, desacelerará el proyecto y pondrá en peligro un resultado correcto. Incluso si cree que sus datos están limpios, o si solo provienen de una única fuente, debe pasarlos a través del proceso ETL para asegurarse de que estén en el mejor estado posible.


        ETL es en realidad una de las tareas que más tiempo consumen en el proceso de AA cuando se trata de esfuerzo humano directo. Esto es cierto sobre todo si está trabajando con grandes volúmenes de datos, incluidos los big data. ETL demanda un enfoque cuidadoso y metódico para el control de datos porque cada conjunto de datos y cada aplicación de dicho conjunto de datos a un problema es diferente. No hay una forma segura de obtener siempre sus datos en el estado perfecto, pero existen prácticas recomendadas generales que comenzará a aprender en breve.


        A continuación, encontrará una descripción somera de cada paso del proceso de ETL:

        - Extraer: extrae todos o algunos de los datos de varias fuentes, que pueden tener estructuras de datos similares o diferentes.
        - Transformar: convierte los datos en un formato o estructura de almacenamiento adecuado y uniforme.
        - Cargar: inserta los datos en el destino donde se almacenarán para su posterior análisis y modelado.


        Python y Jupyter Notebook

        Hay muchos lenguajes de programación y herramientas que pueden realizar el proceso ETL. Uno de los lenguajes de programación más utilizados es Python y una de las herramientas basadas en Python más útiles es Jupyter Notebook.


      • Validación de datos para tareas de IA


        Antes de comenzar a extraer datos, debería considerar realizar alguna validación de datos por adelantado para facilitar las cosas cuando inicie la fase de transformación. En este punto, no es necesario dedicar tiempo a corregir errores individuales o pequeños grupos de errores. Eso puede realizarse en el futuro. Sin embargo, todavía puede centrarse en los datos no válidos de forma integral. Por ejemplo, si extrae datos de varios archivos, uno de esos archivos podría estar dañado en su mayoría o por completo. Todos los valores de datos pueden estar codificados o simplemente ser incomprensibles. Ese es un problema que puede identificar fácilmente, ya sea manual o automáticamente. Luego, podría evitar incluir ese origen de datos durante el proceso de extracción. 

        Algunos problemas son un poco más sutiles, como los datos que están muy desactualizados. Tal vez trata de proyectar las ventas de productos en el futuro inmediato. Si uno de sus orígenes de datos tiene datos de ventas de hace 20 años, probablemente no valga la pena agregarlos al conjunto de datos. Por lo tanto, si puede validar la antigüedad de los datos, le será más fácil eliminar lo que no desea incluir. 

        La validación rápida al inicio del proceso de ETL puede ahorrarle tiempo y esfuerzo en el futuro. Las personas del equipo del proyecto con conocimiento de dominio sobre los datos pueden ayudarle en estos esfuerzos.

      • Sesgo en los datos


        Los datos pueden estar sesgados cuando no representan con precisión la población o el problema para el que se utilizan. Muchos conjuntos de datos, e incluso la mayoría de estos, sufren de algún tipo de sesgo. Si usa datos sesgados en la creación de un modelo de aprendizaje automático, el modelo resultante estará sesgado y sus resultados serán defectuosos. De hecho, podrían producirse resultados discriminatorios o perjudiciales para los seres humanos. Para mitigar el impacto del sesgo en los datos, debe examinar los datos en busca de sesgo como parte del proceso de modelado. Al hacerlo, busque estos tipos de sesgo:

        - Sesgo de selección: El sesgo de selección se produce cuando el conjunto de datos de entrenamiento no representa realmente la población a la que se aplicará el modelo. Por ejemplo, supongamos que desarrolla un modelo para predecir los costos de calefacción de un edificio. La selección de los datos de entrenamiento podría sesgar los resultados si cubre solo dos meses de un año o si proviene de un año que fue inusualmente frío.
        - Sesgo de respuesta. Esto también se llama sesgo de actividad y ocurre cuando las personas responden a las preguntas de la encuesta de manera falsa. Esto puede suceder en revisiones en línea, en publicaciones de redes sociales y en otras áreas. Normalmente, es probable que solo un pequeño porcentaje de personas haga esto, por lo que el impacto del sesgo de respuesta depende del tamaño del conjunto de datos.
        - Sesgo de informe. El sesgo de informe se produce cuando a los datos de entrenamiento les faltan observaciones no informadas. Por ejemplo, algunos tipos de delitos pueden tener más probabilidades de denunciarse que otros. El uso de datos con un sesgo de informe para entrenar un modelo de aprendizaje automático puede sesgar el resultado.
        - Sesgo de desgaste. El sesgo de desgaste se produce cuando los datos de entrenamiento excluyen a los participantes que abandonaron con el tiempo. Por ejemplo, se podría desarrollar un modelo para predecir la tasa de éxito de un tratamiento médico en particular a lo largo del tiempo. Algunos participantes podrían abandonar el tratamiento y un analista de datos bien intencionado podría eliminar sus datos del conjunto de datos de entrenamiento bajo la lógica de que los resultados de los participantes que abandonan sesgarían los resultados. Sin embargo, el hecho de que algunos participantes no completen el programa de tratamiento es una parte importante de las predicciones que el modelo debe hacer.
        - Sesgo de desvío. El sesgo de desvío es similar a la idea de desviación del concepto que vio anteriormente en el curso. Si entrena un algoritmo de aprendizaje automático en un conjunto de datos con características específicas y el sistema que genera los datos cambia sustancialmente, los datos procedentes de ese sistema pueden cambiar e invalidar la utilidad del algoritmo.
        - Sesgo de variable omitida. El sesgo de variable omitida se produce cuando faltan características de datos críticas para producir resultados precisos. Es posible que falten características porque esos datos no se recopilaron o no se entiende la importancia de estos.
        - Sesgo social. El sesgo social es otro tipo de sesgo creado por los seres humanos, generalmente debido a los estereotipos que afectan a los datos que se capturan o ingresan.

        Los profesionales de IA también deben tener cuidado de no introducir ningún sesgo en los datos a medida que preparan y refinan los conjuntos de datos para su procesamiento.

        Información adicional


        Para obtener más información sobre el sesgo de respuesta, visite este sitio.
        Para obtener más información sobre el sesgo social, visite este sitio.

      • Extracción de datos de archivos


        Los archivos de texto, también conocidos como archivos de valores separados por comas (CSV), contienen datos en formato de texto donde cada valor está separado por un carácter de coma (,). Este carácter de separación también se denomina delimitador. El delimitador ayuda a los programas que toman el archivo como entrada y analizan los datos dentro del archivo, a menudo como una tabla con filas y columnas. Al examinar el delimitador, el programa puede determinar qué texto es una fila, qué texto es una etiqueta de columna y qué texto es un valor para una columna específica.

        Nota: Las comas no son el único delimitador posible en un archivo de texto, simplemente tienden a ser las más comunes. Algunos otros delimitadores incluyen tabulaciones, canalizaciones (|), dos puntos (:) y punto y coma (;).
        Los archivos de texto contienen solo texto, no se compilan como un archivo ejecutable u otro archivo binario y se pueden abrir en cualquier editor de texto para ver su contenido. En la siguiente ilustración, puede ver el contenido de un archivo CSV tal como aparece en un editor de texto simple.

        Figura 1. Un archivo CSV que contiene datos meteorológicos.

        Si un archivo CSV contiene los datos que necesita, querrá leerlo para que aparezca como una tabla, lo que facilita a los humanos su comprensión y trabajo con él. Una manera fácil de hacerlo es abrirlo en un programa de hoja de cálculo como Microsoft® Excel®.

        Figura 2. Archivo CSV en Microsoft Excel.

        Muchos lenguajes de programación como Python tienen bibliotecas con funciones que pueden leer un archivo CSV y abrir los datos en el entorno de programación para que pueda trabajar con él. La forma en que se hace esto difiere con cada lenguaje de programación, pero la mayoría le dan opciones para especificar cosas como:


        Qué tipo de datos se debe utilizar para almacenar los valores en cada columna. Un tipo de datos define cómo se va a tratar un valor cuando se ejecuta el código.
        Qué fila debe usarse para determinar el encabezado de las columnas.
        Qué columna se debe utilizar como índice para las filas. Un índice es una columna que se puede utilizar para optimizar la búsqueda y la ordenación de datos.
        Qué carácter indica el inicio de un comentario y debe omitir el analizador.
        Qué carácter utilizar como delimitador, si no es una coma.


        En algunos casos, el lenguaje de programación puede hacer suposiciones basadas en los datos. Por ejemplo, la función pandas read_csv() en Python convertirá automáticamente el texto 'Joe' en un tipo de datos de cadena porque está entre comillas. Una cadena es un tipo de datos utilizado por los lenguajes de programación para almacenar datos de texto. Esa misma función utilizará la primera fila del archivo de texto como encabezados de columna. Al leer archivos CSV en un entorno de programación, es importante comprobar que todo se leyó como esperaba. No desea que los encabezados de columna se conviertan en valores de datos reales, por ejemplo.

        Los archivos CSV son algunas de las formas más simples de almacenar datos y, por lo tanto, son un formato común para compartir conjuntos de datos abiertos.

      • Extracción de datos de bases de datos estructuradas

        El lenguaje de consulta estructurado (SQL) es un lenguaje de consulta estructurado para acceder y administrar datos almacenados en bases de datos relacionales. Las instrucciones SQL, llamadas consultas, se utilizan para recuperar datos, crear datos, modificar datos y eliminar datos. Estas acciones se emiten utilizando una sintaxis específica. SQL es altamente versátil y funciona con muchos sistemas de administración de bases de datos relacionales como MySQL®, Oracle® Database, Microsoft SQL Server® y más.
        Sin embargo, cuando se trata de extraer datos de una base de datos durante la fase de extracción, hay algunos enfoques comunes. La palabra clave más relevante para recuperar datos almacenados en una base de datos es SELECT. Cuando se empareja con la palabra clave FROM, puede escribir una consulta que devuelva los datos que está buscando. Por ejemplo, para recuperar una columna llamada name de una tabla llamada buyers, podría escribir:

        SELECT name FROM buyers

        Esto devolverá todas las filas de la tabla, pero solo los valores de la columna name.

        Figura 1. Ejemplo de consulta SQL: recuperar una columna de datos.


        También puede devolver todas las columnas mediante el carácter comodín (*). Esto puede ser útil si planea realizar la preparación de los datos con una herramienta que no sea SQL y solo desea obtener todos los datos en su entorno de trabajo. Sin embargo, tenga en cuenta que hacer esto con bases de datos muy grandes podría tardar mucho tiempo o provocar problemas de rendimiento. Es posible que desee dividir los datos en partes, ya sea por filas o columnas, para que sean más controlables.

        También vale la pena considerar cómo puede filtrar los datos que cumplen ciertas condiciones. Esta es una buena manera de extraer datos en un nivel granular sin tener que extraer cada valor. La recuperación de datos en función de una condición se realiza mediante la palabra clave WHERE . Por ejemplo, para obtener todas las columnas de la base de datos, pero solo las filas de los compradores que trabajan en el área de Seattle, Washington, podría escribir:

        SELECT * FROM buyers WHERE city = 'Seattle'

        Figura 2. Ejemplo de consulta SQL: filtrar datos por una columna específica.

        Por supuesto, hay muchas más formas de usar consultas SQL para extraer datos y realizar otras operaciones de extracción y administración de datos, como la consolidación de datos.

      • Agregación de datos


        La agregación de datos es el proceso en el que se resumen los datos de algún tipo. Normalmente, esto hace para realizar análisis estadísticos en datos y como parte de la extracción de datos para proyectos de IA y AA, ya que la mayoría de los algoritmos de IA y AA se basan en el análisis estadístico. Por ejemplo, si deseara saber el precio promedio de una vivienda en el área de Seattle en el último año, agregaría todos los precios de venta de viviendas sumándolos y luego dividiéndolos por el número de viviendas vendidas.

        Es común agregar datos de tabla a medida que ingresan en la fase de extracción. De este modo, puede asegurarse de que los datos están en un formato que es más fácil de interpretar o un formato que es más coherente con otros orígenes de datos que utiliza. Cuando se trabaja con bases de datos estructuradas mediante comandos SQL, se hace mediante la palabra clave GROUP BY, emparejadas con una función de agregación como COUNTSUMAVG, etc. Por ejemplo, supongamos que tiene una columna llamada sale_price en la base de datos real_estate y desea devolver una tabla que enumere cada vecindario y el precio de venta promedio de las viviendas en ese vecindario. Podría escribir:

        SELECT neighborhood , AVG(sale_price) AS avg_price FROM real_estate GROUP BY neighborhood


        Figura 1. Ejemplo de consulta SQL: agregar datos mediante una función.


      • Extracción de datos de bases de datos no estructuradas


        NoSQL se refiere a cualquier tecnología de base de datos no relacional. No es necesariamente un lenguaje, protocolo o tecnología específicos, sino simplemente una forma de describir cualquier base de datos que no almacene datos como tablas relacionales. NoSQL es popular en el mundo de big data porque tiende a ser más rápido y más eficiente que las bases de datos relacionales en el tratamiento de grandes volúmenes de datos no estructurados o semiestructurados. Muchas redes sociales almacenan los datos para sus plataformas como datos no estructurados.

        Dado que NoSQL tiene varios enfoques distintos, no hay un estándar de consulta universal como SQL para bases de datos relacionales. Cada implementación es diferente. Si el proyecto requiere datos NoSQL, tenga en cuenta que los métodos de acceso y búsqueda utilizados en el origen de datos dictarán cómo se deben extraer los datos.

        Soluciones NoSQL

        Algunos ejemplos de soluciones NoSQL populares son Redis, MongoDB, Couchbase, Amazon DynamoDB, Azure® Cosmos DB y Google Cloud™ Datastore.

        Información adicional

        Para obtener más información sobre el uso y el crecimiento de una base de datos NoSQL, visite este sitio.
        Para obtener más información sobre los tipos de base de datos NoSQL, consulte este sitio.

      • Consolidación de datos


        Aparte de adquirir datos y llevarlos a un entorno de IA o ML, la otra parte importante de la fase de extracción de ETL es consolidar los datos. En otras palabras, combinar datos similares en una forma más simplificada que sea más propicia para transformarse y cargarse.

        La consolidación puede referirse a un par de cosas diferentes, dependiendo del contexto. Una forma de ver la consolidación es considerar los datos desde una perspectiva granular, es decir, hasta los propios valores de los datos. Por ejemplo, una fuente de datos que rastrea los electrodomésticos de cocina puede tener una columna llamada weight_lbs y otra fuente de datos que rastrea de los cubiertos tiene una columna llamada weight_ounces. Ambos valores hacen referencia a la misma característica: el peso del producto. Si desea combinar estos orígenes en un único conjunto de datos, puede que esté bien que tenga dos columnas de peso diferentes. Pero también es posible que desee optimizar los datos mediante la consolidación de los pesos en una columna, ya sea peso en libras, peso en onzas o algo más. Puede convertir los datos en la unidad de medida elegida. En última instancia, será más fácil administrar el conjunto de datos.

        Otra forma de realizar la consolidación es cambiar la estructura de los datos en su conjunto. Supongamos que tiene dos fuentes de datos que rastrean los electrodomésticos de cocina. El primer origen de datos tiene muchas columnas diferentes que describen cada dispositivo, incluidos weightpriceunits_sold y mucho más. La segunda fuente enumera algunos de los mismos productos exactos, pero con una columna que no está en la primera fuente color. El segundo origen también incluye algunas filas de productos que ni siquiera están en el primer origen. Para consolidar los datos de estos dos orígenes en un único conjunto de datos que contenga la información que desee, puede utilizar un proceso llamado combinación para crear un nuevo conjunto de datos a partir de otros orígenes de datos.

      • Evaluación del tipo de datos


        Cuando se discuten los tipos de datos, realmente puede estar refiriéndose a una de dos cosas: los tipos de características de alto nivel o los tipos de datos legibles por máquina. El primero se refiere a la forma general en que los valores de datos representan una o más observaciones. Esto tiene un impacto significativo en cómo se puede trabajar con esos datos, incluida la forma en que se preparan, cómo se analizan y cómo se modelan. Hay tres tipos principales de características:


        Los datos cuantitativos (o numéricos) contienen valores numéricos que expresan magnitud. Por ejemplo, una característica Price tiene una magnitud porque está midiendo cuánto hay de algo.
        Los datos cualitativos (o categóricos) contienen un valor de un conjunto de valores que normalmente son limitados. Por ejemplo, la característica Color de un automóvil puede contener valores como rojo, azul y negro. Tenga en cuenta que no hay una clasificación inherente en los datos categóricos: ningún color es "mejor" que los demás en este ejemplo.
        Los datos ordinales no son del todo categóricos porque se pueden ordenar. Pero tampoco son del todo cuantitativos porque no miden la magnitud. Por ejemplo, una característica Grade puede contener la calificación de un alumno, que puede ser A, B, C, D o F. Se representa un rango u orden inherente (por ejemplo, una A es una mejor calificación que una C).

        Por otro lado, los tipos de datos, también llamados formatos de datos, además se refieren a las formas en que los lenguajes de programación representan los datos para su ejecución por hardware informático. Estos tipos de datos tienen un impacto directo en la forma en que un programa interpreta los datos. Entre los ejemplos de los tipos de datos con los que podría estar familiarizado se incluyen:

        - Enteros, como 25.
        - Flotadores, como 12.78.
        - Cadenas, como 'Red'.
        - Booleanos, como True o False.
        - Fechas y horas, como 2021-03-01.


        Es importante comprender estas diferencias, ya que las características y los tipos de datos no siempre se asignan uno a uno. Por ejemplo, no todos los datos categóricos se representan mediante una cadena. La característica Home Sold podría contener el entero 1 en lugar de la cadena 'Yes' y el entero 0 en lugar de la cadena 'No'.

      • Variables continuas frente a variables discretas


        Una variable continua es una variable cuantitativa cuyos valores son incontables y pueden extenderse infinitamente dentro de un determinado rango. Considere el tiempo que tarda un corredor de larga distancia en completar una maratón. Un ser omnisciente podría decir que alguien terminó la carrera en exactamente 3 horas, 10 minutos, 37 segundos, 845 milisegundos y así sucesivamente, continuando indefinidamente con una precisión perfecta. 

        Obviamente, los jueces humanos deben conformarse con un cronómetro de una imperfecta precisión. El cronómetro podría indicar que la carrera tomó 3 horas, 10 minutos y 37 segundos. Aunque la variable no se midió con una precisión perfecta, todavía se considera una variable continua porque puede tomar todos los valores reales entre un conjunto de valores. Otra forma de pensar acerca de las variables continuas es que normalmente se representan como fracciones, como 3 / 2 o 1.5. Si convirtiera la medida del cronómetro en una fracción decimal, obtendría 3.1769444… horas.

        Ciertos métodos de análisis y algoritmos de AA no pueden funcionar de manera eficaz con variables continuas. Por el contrario, una variable discreta es aquella cuyos valores son contables y limitados, porque hay una brecha definida entre cada valor en un rango de valores. Una característica como Time in Minutes que utiliza un tipo de datos entero es una variable discreta porque es 120, 121, 122, 123, etc., y no se puede dividir en valores más precisos. A diferencia de las variables continuas, las variables discretas se representan normalmente como números enteros.

        La diferencia entre variables continuas y discretas influirá en cómo se tratan los datos en varias fases del proceso de análisis y modelado, incluida la transformación de datos. Por ejemplo, las variables continuas suelen tener el formato de flotantes mientras que las variables discretas suelen tener el formato de enteros.

      • Análisis de datos


        Proceso de analizar datos como entrada y luego representarlos en una determinada estructura o sintaxis. Puede analizar datos sin procesar y transformarlos en datos con formato correcto. Por ejemplo, puede haber un archivo CSV donde cada línea de texto se convierte en un registro en una tabla relacional. O bien, puede analizar datos que ya tienen un formulario definido, pero desea cambiar ese formulario en algo diferente. Por ejemplo, puede convertir los datos de una página web con formato HTML en una tabla de datos.

        Nota: Hay muchas maneras en que los datos se pueden representar en HTML, por lo que el analizador debe ser capaz de identificar elementos específicos, separarlos en objetos distintos y reformarlos en el formato de destino.

        La mayoría de las herramientas de análisis de la IA y el AA tienen capacidades de análisis automatizadas con formatos de datos comunes. Con ellas es posible determinar el tipo de datos y la estructura general necesaria para los datos. Aun así, algunos tipos de datos requieren trabajo manual para su análisis. Los lenguajes de marcado como HTML tienden a requerir una mayor entrada manual porque pueden representar datos de muchas maneras. En ese caso, es posible que deba proporcionar instrucciones a un analizador o configurarlas de alguna manera para que la conversión de los datos sea más exitosa.

        Siempre que sea necesario, debe asegurarse de que todos los datos se analizan en los formatos de trabajo antes de continuar con las tareas de transformación.

      • Canalización del aprendizaje automático


        Una canalización automatiza el proceso de aprendizaje automático para que se puedan introducir nuevos datos en el modelo con el fin de producir nuevas salidas. Una canalización de aprendizaje automático realizará todos los pasos que forman parte del proceso, desde la extracción de datos hasta la implementación del modelo, y creará servicios independientes a partir de ellos. Entonces, se puede acceder a esos servicios, o a un subconjunto de esos servicios, y usarlos en otras áreas fuera del proyecto original.

        Por ejemplo, si creó un proceso de AA de reconocimiento de imágenes para identificar alimentos no envasados y cobrar a los clientes en el momento del proceso de pago, puede ampliar la utilidad de la solución de aprendizaje automático a la atención sanitaria mediante la creación de una canalización. Al acceder a los componentes de la canalización y entrenar el algoritmo en nuevos datos de imagen, la solución se puede aplicar como un sistema de detección de cáncer para encontrar células cutáneas anormales.

      • Extracción y evaluación de datos


        Archivos de datos


        /home/student/ITSAI/ETL/Accessing and Managing Data for AI.ipynb
        /home/student/ITSAI/ETL/data/kc_house_data.csv
        /home/student/ITSAI/ETL/data/kc_house_data.db


        Escenario

        Deberá cargar el archivo de texto kc_house_data.csv y revisará brevemente los datos para asegurarse de que sea utilizable y determinará cuántos registros hay. Se le dio acceso a un archivo de base de datos que contiene más datos de viviendas. Deberá cargar la base de datos kc_house_data.db y revisar esos datos para ver si los dos orígenes de datos pueden combinarse. Luego, deberá combinar los dos orígenes de datos en una única tabla.

        Nota: Todo el código de las actividades de este curso ya fue escrito para usted. Simplemente deberá ejecutar el código y ver los resultados.

        Nota: Recuerde que si se le pide en cualquier momento que inicie sesión, el nombre de la cuenta es student y la contraseña es Pa22w0rd.


        -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
        1. Inicie Jupyter Notebook.
        1. En el escritorio, haga doble clic en el icono de Jupyter para iniciar el servidor de Jupyter Notebook y abrir un explorador web.


        El servidor se inicia primero en una ventana de terminal (un programa que acepta comandos de texto) y, luego, el explorador web se inicia para proporcionar la interfaz de usuario de Jupyter Notebook.
        El explorador web muestra una lista de directorios en el equipo.
        Puede usar esta lista para desplazarse a las carpetas que contienen cuadernos que desea abrir.

        2. Seleccione ITSAI.
        Nota: Seleccione el texto "ITSAI", no el icono de carpeta junto a él.
        El directorio ITSAI contiene subdirectorios para diferentes cuadernos y conjuntos de datos.
        3. Seleccione ETL.
        El subdirectorio ETL contiene un subdirectorio denominado datos y dos archivos de cuaderno: Accessing and Managing Data for AI.ipynb y Handling Textual Data.ipynb.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        2. Ejecute código para importar las bibliotecas de software relevantes.
        1. Seleccione la etiqueta del cuaderno Accessing and Managing Data for AI.ipynb.
        Se abrirá el cuaderno Accessing and Managing Data for AI en Jupyter Notebook.
        2. Examine el código Python debajo del título Importar bibliotecas de software.
        Desplácese, si es necesario, para ver la lista de código completa.
        Nota: Si los números de línea no se muestran a lo largo del lado izquierdo de la lista de código, seleccione Ver→Activar números de línea para agregarlos. Aunque los números de línea no son necesarios para ejecutar el código, facilitarán la discusión del código en clase.


        Este código importa las varias bibliotecas de software que se utilizarán en este programa y, luego, muestra los nombres de las diferentes bibliotecas, junto con el número de versión instalado en el computador.


        3. Seleccione la celda que contiene la lista de código.


        Se agregará un borde alrededor de la celda que contiene la lista de código, lo cual indica que la celda que contiene el código está ahora seleccionada.

        4. Seleccione el botón Ejecutar para ejecutar el código en la celda seleccionada.


        5. Observe el resultado del código que acaba de ejecutar.
        Se enumeran las bibliotecas utilizadas en el proyecto, junto con sus números de versión.
        Es importante documentar qué herramientas y versiones está utilizando para que pueda reconstruir el entorno correcto más adelante, si es necesario. Las configuraciones y los valores predeterminados también pueden cambiar con el tiempo, lo cual podría afectar los resultados.

        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        3. Cargue los datos de texto de la casa.
        1. Desplácese hacia abajo para ver la celda titulada Cargar los datos de texto y examine la lista de código debajo de ella.

        Este código identifica la ubicación del directorio que contiene el conjunto de datos y, luego, muestra una lista de archivos en el directorio de datos. Luego, cargará el archivo de datos CSV desde la ubicación vista anteriormente.
        2. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.
        3. Observe los resultados.

        Se cargaron 18.769 registros desde el archivo kc_house_data.csv.
        Estos registros ahora se cargan en data_raw, desde donde se pueden mostrar o manipular a través del código Python.

        4. En la siguiente celda de código, examine el código.

        Este código mostrará las primeras cinco filas de los datos.


        5. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.


        6. Observe los resultados.

        Son los mismos datos que vio en el tema anterior. Cada fila es una casa que se vendió.
        7. En la siguiente celda de código, examine el código.

        Este código mostrará la dimensionalidad de los datos (el número de filas y columnas).

        8. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        9. Observe los resultados.

        Esta tabla tiene 18.769 filas y 22 columnas.

        -------------------------------------------------------------------------------------------------------------------------------------------------------------

        4. Cree una conexión a la base de datos SQLite.
        1. Desplácese hacia abajo para ver la celda titulada Crear una conexión a la base de datos SQLite y examine la lista de código debajo de ella.

        Este código utiliza la biblioteca sqlite3 para conectarse al archivo de base de datos kc_house_data.db.


        2. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        3. Se está conectando a una base de datos SQLite, la cual es solo un archivo en el sistema de archivos local.
        Examine el resultado.

        El objeto conn estableció una conexión con la base de datos.

        -------------------------------------------------------------------------------------------------------------------------------------------------------------
        5. Lea los datos de houses.
        1. Desplácese hacia abajo para ver la celda titulada Lea los datos de houses y examine la lista de código debajo de ella.

        Este código contiene una consulta que seleccionará todos los registros de la tabla casas en el archivo de base de datos kc_house_data.db.

        2. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        3. En la siguiente celda de código, examine el código.

        Este código lee el archivo de base de datos mediante la consulta que definió en el bloque de código anterior y lo almacena en el DataFrame llamado houses. Luego, muestra las primeras cinco filas de datos del archivo DataFrame.

        4. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.


        5. Examine el resultado.

        Los datos de la base de datos tienen las mismas columnas que los datos del archivo de texto.

        6. En la siguiente celda de código, examine el código.

        Este código mostrará el número de filas y columnas de este conjunto de datos.

        7. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        8. Examine el resultado.

        Esta tabla tiene 2849 filas y 22 columnas.


        -------------------------------------------------------------------------------------------------------------------------------------------------------------
        6. Combine los datos de texto con los datos de la base de datos.
        1. Desplácese hacia abajo para ver la celda titulada Combinar ambas fuentes de datos y examine la lista de código debajo de ella.

        Este código agrega los datos de houses de la base de datos a los datos de data_raw del archivo de texto. Los datos combinados están contenidos en house_data.

        2. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        3. En la siguiente celda de código, examine el código.

        Este código muestra las primeras cinco filas de house_data.

        4. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        5. Examine el resultado.

        Estas son las mismas cinco filas que vio en el archivo de texto. Las filas de la base de datos se agregaron al final.

        6. En la siguiente celda de código, examine el código.

        Este código mostrará el número de filas y columnas de este conjunto de datos. Esto mostrará el número total de filas para los datos combinados.

        7. Seleccione la celda que contiene la lista de código y luego seleccione Ejecutar.

        8. Examine el resultado.

        21.618 registros se combinaron en house_data. Hubo 18.769 registros del archivo de texto y 2849 en el archivo de base de datos.