Skip to content

Dashboard interactivo para explorar proyectos legislativos y miembros del Congreso de EE.UU con resúmenes, tablas y gráficos, desarrollado con Pandas, Django y Vega-Altair, con proceso ETL para extraer la información desde la API congress.gov, almacenando una parcialidad del dataset en SQLite. Proyecto final del BC Avanzado de Python, en Código.

Notifications You must be signed in to change notification settings

PaylemanC/Proyecto-Final-BC-Python-Avanzado-g2

Repository files navigation

Dashboard y ETL - Análisis de Proyectos Legislativos del Congreso USA

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.

Integrantes

Instalación

  1. Clona el repositorio, y accede al nuevo subdirectorio creado:
git clone https://github.com/PaylemanC/Proyecto-Final-BC-Python-Avanzado-g2.git
  1. 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
  1. Instala las dependencias desde el directorio raíz:
pip install -r requirements.txt 

Tecnologías utilizadas

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.

Levantar Web

Para ver el Dashboard y proyecto en general:

cd rollcall_votes

python manage.py runserver

Correr tests unitarios

Para la app de graphics, verificar que los gráficos se generan correctamente:

cd rollcall_votes

python manage.py test graphics

Correr extracción de datos*

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:

  1. Elimina el archivo de la base de datos house_votes_db.sqlite.
  2. 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.
  1. Ejecutar la extracción:
python -m scraper.main_scraper

Estructura del Proyecto

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.

About

Dashboard interactivo para explorar proyectos legislativos y miembros del Congreso de EE.UU con resúmenes, tablas y gráficos, desarrollado con Pandas, Django y Vega-Altair, con proceso ETL para extraer la información desde la API congress.gov, almacenando una parcialidad del dataset en SQLite. Proyecto final del BC Avanzado de Python, en Código.

Topics

Resources

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •