Este proyecto es una aplicación web interactiva, desarrollada con Streamlit, para visualizar y analizar datos meteorológicos de España. La aplicación consume datos de la API de AEMET, los procesa a través de un pipeline ETL y los almacena en una base de datos MySQL para su posterior análisis y modelado.
- Características principales
- Estructura del proyecto
- Instalación y configuración
- Pre-requisitos
- Pasos de instalación
- Uso de la aplicación
- Tecnologías utilizadas
- Autores
- Análisis Exploratorio de Datos (EDA): Visualiza datos meteorológicos agregados en mapas coropléticos interactivos, con filtros por comunidad autónoma, provincia y rango de fechas.
- Comparador anual: Compara tendencias de métricas específicas (temperatura, precipitación, etc.) entre dos años para una provincia seleccionada.
- Predicciones con Deep Learning: Utiliza modelos pre-entrenados (GRU y Redes Neuronales) para pronosticar la temperatura media en estaciones específicas.
- Predicciones con Prophet: Implementa el modelo Prophet de Facebook para realizar pronósticos de series temporales.
- Actualización de datos: Funcionalidad para actualizar la base de datos con los datos más recientes de la API de AEMET.
- Visualización de la base de datos: Muestra el Modelo Entidad-Relación (MER) y la estructura de las tablas de la base de datos.
PROYECTO-FINAL/
│
├── .streamlit/
│ └── secrets.toml # Fichero para credenciales (BD, API keys) - NO INCLUIDO EN GIT
│
├── data/ # Ficheros de datos estáticos y cacheados
│ ├── spain-provinces.geojson
│ ├── spain-comunidad-autonoma.geojson
│ └── ...
│
├── images/ # Imágenes y logos para la interfaz
│
├── limpieza # Archivos necesarios para la limpieza de los datos (ETL)
│
├── pages/ # Páginas de la aplicación Streamlit
│ ├── 1_EDA.py # Página de Análisis Exploratorio de Datos (EDA)
│ ├── 2_Comparador.py # Página de comparador anual por métrica y provincia
│ ├── 3_Modelos_DL.py # Página de predicción con los modelos preentrenados de Deep Learning
│ ├── 4_Modelo_Prophet.py # Página de predicción con los modelos preentrenados de Prophet
│ ├── 5_Base_de_datos.py # Página de visualización de la estructura de la base de datos
│ └── 6_Sobre_Nosotros.py # Página detallando sobre nosotros
│
├── src/ # Código fuente principal
│ ├── actualizar_api.py # Función para actualizar los datos de datos nuevos de AEMET
│ ├── borra_tablas.py # Funciones para borrar tablas de la BD (no integrada en Streamlit)
│ ├── conectar.py # Lógica de conexión a la BD
│ ├── dibujar.py # Funciones para generar gráficos
│ ├── ETL.py # Pipeline de extracción, transformación y carga
│ ├── extraer_datos.py # Funciones para consultas a la BD
│ ├── hacer_peticion.py # Lógica para peticiones a la API de AEMET
│ ├── personalizacion.py # Funciones para personalizar los estilos de Streamlit
│ └── poblar.py # Scripts para crear y poblar tablas
│
├── modelos/
│ ├── modelos_dl/ # Carpeta donde se alojan los modelos de Deep Learning
│ └── prophet/ # Carpeta donde se alojan los modelos de Prophet
│
│
├── notebooks/ # Jupyter Notebooks para exploración y modelado (referencia)
│
├── Inicio.py # Página principal de la aplicación
├── requirements.txt # Dependencias del proyecto
└── README.md # Este fichero
Sigue estos pasos para poner en marcha el proyecto en tu entorno local.
- Python 3.10 o superior.
- Un servidor de MySQL en ejecución.
- Git.
-
Clonar el repositorio:
git clone https://github.com/Jorge-rivero-94/PROYECTO-FINAL-.git cd PROYECTO-FINAL- -
Crear y activar un entorno virtual:
# Crear el entorno python -m venv .entorno # Activar en Windows .entorno/Scripts/activate # Activar en macOS/Linux source .entorno/bin/activate
-
Instalar las dependencias:
pip install -r requirements.txt
-
Configurar las credenciales (Secrets): Crea una carpeta
.streamliten la raíz del proyecto y, dentro de ella, un fichero llamadosecrets.toml. Añade tus credenciales con el siguiente formato:# .streamlit/secrets.toml [database] user = "tu_usuario_mysql" password = "tu_password_mysql" host = "localhost" port = 3306 name = "aemet" # O el nombre que le des a tu base de datos # NOTA: La API Key de AEMET está hardcodeada en src/hacer_peticion.py # pero idealmente también iría aquí. # API_KEY = "tu_api_key_aemet"
-
Crear y poblar la base de datos: Asegúrate de que tu servidor MySQL esté corriendo y de haber creado una base de datos con el nombre que especificaste en
secrets.toml(ej.aemet). Luego, ejecuta el script de población desde la raíz del proyecto:python src/poblar.py --tabla todas
Este comando creará todas las tablas necesarias y las llenará con los datos iniciales del proyecto. Este proceso puede tardar varios minutos.
-
Ejecutar la aplicación: Una vez completada la instalación y configuración, inicia la aplicación con Streamlit:
streamlit run Inicio.py
-
Navegar por la aplicación: Abre la URL que aparece en tu terminal (normalmente
http://localhost:8501) en tu navegador. Desde la página de inicio o la barra lateral, podrás acceder a todas las funcionalidades descritas en la sección de características principales.
- Frontend: Streamlit
- Backend y lógica: Python, Pandas, NumPy
- Base de datos: MySQL (con SQLAlchemy y PyMySQL)
- Visualización de datos: Plotly, GeoJSON
- Machine Learning: Scikit-learn, Keras (TensorFlow), Prophet (Facebook)
- Peticiones API: Requests
Este proyecto fue desarrollado como parte del Data Science & IA Bootcamp 2025 por: