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:
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.
,
). 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.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.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
name
.*
). 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.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'
GROUP BY
, emparejadas con una función de agregación como COUNT
, SUM
, AVG
, 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
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.weight
, price
, units_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.Price
tiene una magnitud porque está midiendo cuánto hay de algo.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.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).25
.12.78
.'Red'
.True
o False
.2021-03-01
.Home Sold
podría contener el entero 1
en lugar de la cadena 'Yes'
y el entero 0
en lugar de la cadena 'No'
.
3 / 2
o 1.5
. Si convirtiera la medida del cronómetro en una fracción decimal, obtendría 3.1769444…
horas.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.-------------------------------------------------------------------------------------------------------------------------------------------------------------
data_raw
, desde donde se pueden mostrar o manipular a través del código Python.conn
estableció una conexión con la base de datos.houses
.houses
y examine la lista de código debajo de ella.DataFrame
llamado houses
. Luego, muestra las primeras cinco filas de datos del archivo DataFrame
.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
.house_data
.house_data
. Hubo 18.769 registros del archivo de texto y 2849 en el archivo de base de datos.