Un Dashboard interactivo para explorar bills/proyectos legislativos y miembros del Congreso de EE.UU, desarrollado con Pandas, Django y Vega-Altair. A partir de un proceso ETL, se extrae la información desde la API oficial de congress.gov, almacenando una parcialidad del dataset en SQLite. La interfaz gráfica proporciona resúmenes, tablas completas y gráficos dinámicos.
- Clona el repositorio, y accede al nuevo subdirectorio creado:
git clone https://github.com/PaylemanC/Proyecto-Final-BC-Python-Avanzado-g2.git
- Crea y activa tu entorno virtual:
# Crear entorno:
python -m venv venv
# Activación en Windows:
cd venv
Scripts/activate
cd ..
# Activación en Linux & MacOS
source venv/bin/activate
- Instala las dependencias desde el directorio raíz:
pip install -r requirements.txt
Librería/Framework | Uso |
---|---|
Django | Dashboard interactivo y UI. |
Pandas | Extracción y transformación de datos. |
Vega-Altair | Generación de gráficos con Python y JS. |
Loguru | Implementación de logs y debugging. |
Dotenv (Python) | Manejo de variables de entorno. |
Requests | Peticiones GET a la API. |
Para ver el Dashboard y proyecto en general:
cd rollcall_votes
python manage.py runserver
Para la app de graphics, verificar que los gráficos se generan correctamente:
cd rollcall_votes
python manage.py test graphics
Debido a que la base de datos ya se encuentra inicializada e incluida en la raíz del repositorio, “house_votes_db.sqlite
", este paso es *opcional. Sin embargo, para corroborrar y ver el proceso de extracción de datos (ETL), se pueden seguir los siguientes pasos:
- Elimina el archivo de la base de datos
house_votes_db.sqlite
. - Crea un archivo
.env
a la altura del archivo.env-dist
, con la siguiente estructura:
CONGRESS_API_KEY="API KEY (STR)"
ENVIRONMENT="The environment, being either PROD or DEV (STR)"
CONGRESS="The congress number (INT)"
SETUP_SCHEMA="Whether to setup the schema in the database (BOOL)"
Recomendación:
CONGRESS_API_KEY="EE6i06Z939y8B9bzhLcgsTT93faX1SP5CHDr34Ze"
ENVIRONMENT=DEBUG
SETUP_SCHEMA=TRUE
CONGRESS=117
Consideraciones:
- La API KEY puedes obtenerla aquí; a fines académicos, se proporciona:
EE6i06Z939y8B9bzhLcgsTT93faX1SP5CHDr34Ze
- La variable
ENVIROMENT
determina el comportamiento del módulo logging. - La variable
CONGRESS
puede ser cualquier número entre el 101 y el 115. - La variable
SETUP_SCHEMA
debe estar en FALSE si ya está creada la base de datos, y en TRUE si se debe crear.
- Ejecutar la extracción:
python -m scraper.main_scraper
Carpetas y archivos relevantes:
/
|-- rollcall_votes/
| |-- dashboard/
| |-- data/
| |-- graphics/
| |-- rollcall_votes/
| |-- static/
| |-- templates/
|-- scraper/
|-- house_votes_db.sqlite
|-- requirements.txt
-
rollcall_votes: Proyecto de Django.
- dashboard: Contiene las vistas y urls de todas las páginas.
- data: Contiene los modelos que conectan a la base de datos SQLite.
- graphics: Clases que generan gráficos con Vega-Altair.
- rollcall_votes: Configuración del proyecto de Django.
- static: Archivos estáticos (CSS).
- templates: Templates HTML del Django (UI).
-
scraper: Módulo de extracción de datos.
-
house_votes_db.sqlite: Base de datos SQLite con los datos extraídos.
Tu entorno virtual y archivo .env debe estar a la altura de la carpeta raíz.