Skip to content

ASalonio/AEMET

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Análisis y Predicción de Condiciones Meteorológicas en España

Python Streamlit MySQL Pandas Keras

Descripción

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.


📜 Índice

  • 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

✨ Características principales

  • 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.

📁 Estructura del proyecto

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

🚀 Instalación y configuración

Sigue estos pasos para poner en marcha el proyecto en tu entorno local.

Pre-requisitos

  • Python 3.10 o superior.
  • Un servidor de MySQL en ejecución.
  • Git.

Pasos de instalación

  1. Clonar el repositorio:

    git clone https://github.com/Jorge-rivero-94/PROYECTO-FINAL-.git
    cd PROYECTO-FINAL-
  2. 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
  3. Instalar las dependencias:

    pip install -r requirements.txt
  4. Configurar las credenciales (Secrets): Crea una carpeta .streamlit en la raíz del proyecto y, dentro de ella, un fichero llamado secrets.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"
  5. 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.

💻 Uso de la aplicación

  1. Ejecutar la aplicación: Una vez completada la instalación y configuración, inicia la aplicación con Streamlit:

    streamlit run Inicio.py
  2. 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.


🛠️ Tecnologías utilizadas

  • 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

👥 Autores

Este proyecto fue desarrollado como parte del Data Science & IA Bootcamp 2025 por:

About

CONDICIONES METEOROLÓGICAS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 81.9%
  • HTML 16.8%
  • Python 1.3%