Este proyecto es un primer acercamiento al procesamiento de datos con Python, enfocado en la práctica de técnicas de ETL (Extract, Transform, Load).
El proyecto se compone de tres partes principales:
1️⃣ Configuración base de datos
Definición y creación de las tablas de la base de datos
2️⃣ Proceso ETL
Parte principal del proyecto cuyo flujo de trabajo es el siguiente:
- Lectura de datos de archivos CSV
- Limpieza y transformación de los datos. Eliminación de valores nulos, renombre de columnas, transformación de ciertos valores, creación de nuevo atributo, etc.
- Carga de datos limpios en la base de datos PostgreSQL
3️⃣ Ejecución de consultas
Analizar y extraer información relevante. Se incluyen algunas queries como ejemplo.
Los datos utilizados en este proyecto provienen de este dataset.
Está compuesto por respuestas de personas encuestadas e incluye una variedad de atributos personales y psicológicos (ocupación, días al año en casa, cambios de humor, estrés creciente ...).
Esta información permite explorar cómo distintos factores personales y psicológicos se relacionan entre sí, y puede ser útil para analizar temáticas relacionadas con la salud mental.
- Python 🐍
- PostgreSQL 🗄️
- Pandas.
- Prefect.
- SQLAlchemy.
*Desarrollado en entorno Windows utilizando Visual Studio
-
Descargar PostgreSQL. Una vez instalado, se puede usar pgAdmin para gestionar la base de datos.
-
Clonar el repositorio.
git clone https://github.com/alvaroggomez/etl_pipeline.git
-
Crear entorno virtual. Recomendable para manejar las dependencias del proyecto sin interferir con otras configuraciones del sistema.
python3 -m venv env
-
Instalar las dependencias.
pip install -r requirements.txt
-
Crear archivo .env en la raíz del proyecto basado en el archivo .env.example. Recomendable seguir el ejemplo y crear una carpeta para los csvs a leer y otra donde se guardarán los csvs ya leidos y tranformados.
-
Comprobar que se establece una conexión con la base de datos.
python .py
-
Crear tablas necesarias en la base de datos. Para ello es necesario ejecutar el archivo create_tables.py
python create_tables.py
Una vez se ha configurado todo el proyecto, se podrá ejecutar el flujo ETL
python main.py
Si se desea hacer consultas se puede iniciar el archivo queries.py
python queries.py
- main.py: Contiene el flujo principal de procesamiento de datos (ETL).
- create_tables.py: Creación de las tablas de la base de datos.
- data_processing.py: Lee, limpia y transforma los datos de los archivos CSV.
- load_data.py: Carga los datos tranformados en la base de datos.
- archivo_hash.py: Funciones para comprobar si un archivo ya se ha procesado previamente. En caso negativo, le asigna un hash.
- queries.py: Consultas para analizar los datos.
- conexion_db.py: Archivo para comprobar que se ha establecido la conexion con la base de datos.
- .env.example: Variables necesarias como las credenciales de la base de datos y las rutas de los archivos.
- requirements.txt: Lista de dependencias del proyecto.
- MentalHealthDataset.csv: Dataset usado en este proyecto