{"id":26063625,"url":"https://github.com/paez-dev/bigdata2025act1paez_suarez","last_synced_at":"2026-04-29T23:33:51.434Z","repository":{"id":281061894,"uuid":"939707677","full_name":"paez-dev/BigData2025Act1Paez_Suarez","owner":"paez-dev","description":"Este proyecto implementa la etapa de ingesta de datos del proyecto integrador de Big Data. El objetivo principal es extraer datos desde un API, almacenarlos en una base de datos SQLite y generar evidencias complementarias.","archived":false,"fork":false,"pushed_at":"2025-03-06T19:09:07.000Z","size":47173,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-06T19:38:49.470Z","etag":null,"topics":["actions","artefacts","bd","big-data","github","infrastructure","text","xlsx"],"latest_commit_sha":null,"homepage":"https://paezdev.github.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/paez-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-27T01:14:23.000Z","updated_at":"2025-03-06T19:09:10.000Z","dependencies_parsed_at":"2025-03-06T19:38:51.570Z","dependency_job_id":"ce416a04-819f-4ae5-be38-a851dbc92f82","html_url":"https://github.com/paez-dev/BigData2025Act1Paez_Suarez","commit_stats":null,"previous_names":["paez-dev/bigdata2025act1paez_suarez"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paez-dev%2FBigData2025Act1Paez_Suarez","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paez-dev%2FBigData2025Act1Paez_Suarez/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paez-dev%2FBigData2025Act1Paez_Suarez/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/paez-dev%2FBigData2025Act1Paez_Suarez/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/paez-dev","download_url":"https://codeload.github.com/paez-dev/BigData2025Act1Paez_Suarez/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242581154,"owners_count":20153025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actions","artefacts","bd","big-data","github","infrastructure","text","xlsx"],"created_at":"2025-03-08T17:17:29.246Z","updated_at":"2026-04-29T23:33:49.777Z","avatar_url":"https://github.com/paez-dev.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# **Infra_Arqui_BigData2025PaezJeanCarlos_SuarezJuliana**\n\n## **Descripción del Proyecto**\nEste proyecto implementa las etapas de **ingesta de datos** y **preprocesamiento y limpieza de datos** del proyecto integrador de Big Data. El objetivo principal es extraer datos desde un API, almacenarlos en una base de datos SQLite, realizar un análisis exploratorio, limpiar los datos y generar evidencias complementarias. Todo el proceso está automatizado mediante **GitHub Actions**, lo que permite ejecutar los scripts de manera continua y dejar evidencia de los resultados.\n\n---\n\n## **Objetivos Generales**\n1. **Ingesta de Datos**:\n   - Leer datos desde un API (Kaggle).\n   - Almacenar los datos en una base de datos SQLite.\n   - Generar evidencias complementarias:\n     - Un archivo Excel con una muestra representativa de los datos.\n     - Un archivo de auditoría que compare los registros extraídos con los almacenados.\n   - Automatizar el proceso mediante GitHub Actions.\n\n2. **Preprocesamiento y Limpieza de Datos**:\n   - Validar, transformar y depurar el conjunto de datos extraído en la etapa de ingesta.\n   - Generar evidencias complementarias:\n     - Un archivo Excel o CSV con una muestra representativa de los registros limpios.\n     - Un archivo de auditoría que detalle las operaciones realizadas (eliminación de duplicados, manejo de valores nulos, corrección de tipos de datos, etc.).\n   - Automatizar el proceso mediante GitHub Actions.\n\n---\n\n## **Estructura del Proyecto**\nLa estructura del proyecto es la siguiente:\n\n```\nBigData2025Act1Paez_Suarez/\n├── setup.py                     # Configuración del proyecto y dependencias\n├── README.md                    # Documentación del proyecto\n├── .gitignore                   # Archivos y carpetas ignorados por Git\n├── .github/\n│   └── workflows/\n│       ├── bigdata.yml          # Workflow de ingesta de datos\n├── src/\n│   ├── ingestion.py             # Script principal de ingesta de datos\n│   ├── cleaning.py              # Script principal de limpieza de datos\n│   ├── static/\n│       ├── auditoria/\n│       │   ├── ingestion.txt    # Archivo de auditoría de ingesta\n│       │   └── cleaning_report.txt # Archivo de auditoría de limpieza\n│       ├── db/\n│       │  ├── ingestion.db      # Base de datos SQLite generada (inlcuida en gitignore)\n│       │  └── cleaned_data.db  # Base de datos SQLite generada (inlcuida en gitignore)        \n│       └── csv/\n│           ├── ingestion.csv    # Archivo csv de muestra de ingesta\n│           └── cleaned_data.csv # Archivo csv de muestra de limpieza\n└── .venv/                       # Entorno virtual (ignorado por Git)\n```\n\n## **Base de Datos SQLite**\n\n### **Ubicación**\nLa base de datos SQLite generada se encuentra en la siguiente ruta dentro del proyecto, pero no está en el repo, porque se incluyó en el gitignore:\n```\nsrc/static/db/ingestion.db\n```\n\n### **Contenido**\nLa base de datos contiene las siguientes tablas, generadas a partir de los archivos CSV descargados desde el dataset de Kaggle (https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce):\n\n1. **`olist_geolocation_dataset`**:\n   - Contiene información geográfica de ubicaciones en Brasil, como códigos postales y coordenadas.\n   - **Campos principales**: `geolocation_zip_code_prefix`, `geolocation_lat`, `geolocation_lng`.\n\n2. **`olist_order_payments_dataset`**:\n   - Detalla los métodos de pago utilizados en las órdenes.\n   - **Campos principales**: `order_id`, `payment_type`, `payment_value`.\n\n3. **`product_category_name_translation`**:\n   - Proporciona traducciones de las categorías de productos.\n   - **Campos principales**: `product_category_name`, `product_category_name_english`.\n\n4. **`olist_order_reviews_dataset`**:\n   - Contiene reseñas de los clientes sobre los pedidos realizados.\n   - **Campos principales**: `review_id`, `review_score`, `review_comment_message`.\n\n5. **`olist_customers_dataset`**:\n   - Información sobre los clientes, como su ubicación y código postal.\n   - **Campos principales**: `customer_id`, `customer_zip_code_prefix`.\n\n6. **`olist_sellers_dataset`**:\n   - Información sobre los vendedores, incluyendo su ubicación.\n   - **Campos principales**: `seller_id`, `seller_zip_code_prefix`.\n\n7. **`olist_products_dataset`**:\n   - Detalles de los productos disponibles en la plataforma.\n   - **Campos principales**: `product_id`, `product_category_name`.\n\n8. **`olist_orders_dataset`**:\n   - Información sobre las órdenes realizadas por los clientes.\n   - **Campos principales**: `order_id`, `customer_id`, `order_status`.\n\n9. **`olist_order_items_dataset`**:\n   - Detalles de los productos incluidos en cada orden.\n   - **Campos principales**: `order_id`, `product_id`, `price`.\n\n---\n\n## **Primera Actividad: Ingesta de Datos**\n\n### **Descripción**\nLa primera actividad consiste en la ingesta de datos desde un API (Kaggle), su almacenamiento en una base de datos SQLite y la generación de evidencias complementarias. Este proceso está automatizado mediante un workflow de GitHub Actions.\n\n### **Pasos Realizados**\n1. **Descarga de Datos**:\n   - Se descargaron los datos desde el dataset de Kaggle: [Brazilian E-Commerce Public Dataset](https://www.kaggle.com/datasets/olistbr/brazilian-ecommerce).\n   - Se utilizó la librería `kagglehub` para la descarga automática.\n\n2. **Procesamiento de Datos**:\n   - Los archivos CSV descargados se almacenaron en una base de datos SQLite (`ingestion.db`).\n   - Se generó un archivo csv (`ingestion.csv`) con una muestra representativa de los datos.\n   - Se creó un archivo de auditoría (`ingestion.txt`) que compara los registros extraídos con los almacenados en la base de datos.\n\n3. **Automatización**:\n   - Se configuró un workflow de GitHub Actions (`bigdata.yml`) para ejecutar automáticamente el proceso de ingesta.\n\n### **Archivos Generados**\n- **Archivo Csv de Muestra**:\n  - **Ruta:** `src/static/csv/ingestion.csv`\n  - Contiene una muestra representativa (las primeras 10 filas) de cada archivo CSV.\n\n- **Archivo de Auditoría**:\n  - **Ruta:** `src/static/auditoria/ingestion.txt`\n  - Contiene un reporte que compara el número de registros extraídos de los archivos CSV con los registros almacenados en la base de datos.\n\n### **Workflow de GitHub Actions**\nEl workflow de ingesta (`bigdata.yml`) realiza las siguientes tareas:\n1. Configura Python 3.9 y las dependencias del proyecto.\n2. Configura las credenciales de Kaggle.\n3. Ejecuta el script de ingesta (`ingestion.py`).\n4. Sube los archivos generados como artefactos.\n5. Realiza un commit y push automático de los archivos generados al repositorio.\n\n---\n\n## **Segunda Actividad: Preprocesamiento y Limpieza de Datos**\n\n### **Descripción**\nLa segunda actividad consiste en la limpieza y transformación de los datos extraídos en la primera actividad. Este proceso incluye la validación, eliminación de duplicados, manejo de valores nulos, corrección de tipos de datos y generación de evidencias complementarias.\n\n### **Pasos Realizados**\n1. **Extracción de Datos**:\n   - Se conectó a la base de datos SQLite generada en la primera actividad.\n   - Se cargaron los datos utilizando la librería `pandas`.\n\n2. **Análisis Exploratorio**:\n   - Se identificaron problemas de calidad en los datos, como registros duplicados, valores nulos e inconsistencias en los tipos de datos.\n\n3. **Limpieza y Transformación**:\n   - Se eliminaron registros duplicados.\n   - Se manejaron valores nulos mediante imputación o eliminación.\n   - Se corrigieron los tipos de datos para garantizar la consistencia.\n\n4. **Generación de Evidencias**:\n   - Se creó un archivo csv (`cleaned_data.csv`) con una muestra representativa de los registros limpios.\n   - Se generó un archivo de auditoría (`cleaning_report.txt`) que documenta las operaciones realizadas.\n\n5. **Automatización**:\n   - Se configuró un workflow de GitHub Actions (`cleaning.yml`) para ejecutar automáticamente el proceso de limpieza.\n\n### **Archivos Generados**\n- **Archivo Csv de Datos Limpios**:\n  - **Ruta:** `src/static/csv/cleaned_data.csv`\n  - Contiene una muestra representativa de los registros limpios.\n\n- **Archivo de Auditoría**:\n  - **Ruta:** `src/static/auditoria/cleaning_report.txt`\n  - Documenta las operaciones realizadas durante la limpieza.\n\n### **Workflow de GitHub Actions**\nEl workflow de limpieza (`cleaning.yml`) realiza las siguientes tareas:\n1. Configura Python 3.9 y las dependencias del proyecto.\n2. Extrae los datos desde la base de datos SQLite.\n3. Ejecuta el script de limpieza (`cleaning.py`).\n4. Sube los archivos generados como artefactos.\n5. Realiza un commit y push automático de los archivos generados al repositorio.\n\n---\n\n## **Requisitos Previos**\nAntes de comenzar, asegúrate de tener instalado lo siguiente:\n1. **Python 3.9 o superior**.\n2. **pip** (gestor de paquetes de Python).\n4. **Cuenta en Kaggle** con credenciales configuradas para la API.\n\n---\n\n## **Instalación**\n\n### **1. Clonar el repositorio**\nClona este repositorio en tu máquina local:\n\n```bash\ngit clone https://github.com/paez-dev/BigData2025Act1Paez_Suarez.git\ncd BigData2025Act1Paez_Suarez\n```\n\n### **2. Crear un entorno virtual**\nCrea y activa un entorno virtual para instalar las dependencias:\n\n```bash\n# Crear el entorno virtual\npython -m venv .venv\n\n# Activar el entorno virtual\n# En Windows:\n.venv\\Scripts\\activate\n# En macOS/Linux:\nsource .venv/bin/activate\n```\n\n### **3. Instalar las dependencias**\nInstala las dependencias del proyecto utilizando el archivo `setup.py`:\n\n```bash\npip install -e .\n```\n\n---\n\n## **Ejecución Local**\n\n### **1. Configurar las credenciales de Kaggle**\nCrea un archivo `kaggle.json` con tus credenciales de Kaggle y colócalo en la carpeta `~/.kaggle` (en Windows, `C:\\Users\\\u003ctu_usuario\u003e\\.kaggle`).\n\n### **2. Ejecutar los scripts**\n- **Ingesta de Datos**:\n  ```bash\n  python src/ingestion.py\n  ```\n- **Limpieza de Datos**:\n  ```bash\n  python src/cleaning.py\n  ```\n\n---\n\n## **Automatización con GitHub Actions**\nEl proyecto incluye workflows de GitHub Actions para automatizar las etapas de ingesta y limpieza de datos. Los workflows se encuentran en la carpeta `.github/workflows`.\n\n---\n\n## **Autores**\n- **Jean Carlos Páez Ramírez**\n- **Juliana Maria Peña Suárez**\n\n---\n\n## **Licencia**\nEste proyecto está bajo la licencia MIT. Consulta el archivo `LICENSE` para más detalles.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaez-dev%2Fbigdata2025act1paez_suarez","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpaez-dev%2Fbigdata2025act1paez_suarez","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpaez-dev%2Fbigdata2025act1paez_suarez/lists"}