Skip to content

leopoldozumba/Final_Project_Big_Data

Repository files navigation

📊 Análisis de Reseñas de Películas en Rotten Tomatoes - Pipeline de Big Data

🎯 Descripción del Proyecto

Proyecto final del Módulo 8 - Big Data Analysis. Este trabajo realiza un análisis completo de datasets de reseñas de críticos y metadatos de películas de Rotten Tomatoes, demostrando un pipeline moderno de procesamiento de datos a gran escala.

El enfoque principal es la construcción de un flujo end-to-end que incluye:

  • Limpieza avanzada y garantía de integridad de datos.
  • Análisis exploratorio de estacionalidad en estrenos cinematográficos.
  • Estandarización de puntuaciones heterogéneas de críticos.
  • Modelado predictivo para estimar la puntuación de reseñas usando variables estructuradas.

Se emplean herramientas de alto rendimiento como Polars y DuckDB para manejar volúmenes significativos de datos de manera eficiente.

📈 Reporte de Análisis Estratégico

  1. Estrategia de Limpieza e Integridad de Datos Datasets principales:
  • critic_reviews.csv: ~200k reseñas individuales de críticos.
  • movies.csv: ~10k películas con metadatos (scores, fechas de estreno, runtime, rating, etc.).

Acciones clave realizadas con Polars:

  • Reporte de nulos: Solo 89 nulos en audience_score (~0.87% de los datos) → eliminados tras análisis de impacto estadístico (incremento del error estándar <0.44%, despreciable).
  • Duplicados: 11.886 registros duplicados exactos en críticas → eliminados para evitar sesgos.
  • Estandarización de originalScore: Formatos muy heterogéneos (fracciones como 3.5/5, letras A+/F, escalas 0-10 o 0-100). Se implementó una UDF personalizada integrada vía DuckDB para normalizar todo a escala 0-100.

Ejemplo simplificado de lógica de normalización:

def clean_and_normalize_score(score: str) -> float:
    score = score.strip()
    if '/' in score:                          # Fracciones
        num, den = map(float, score.split('/'))
        return (num / den) * 100
    elif score.upper() in grade_mapping:      # Letras A-F
        return grade_mapping[score.upper()]
    else:                                     # Números directos
        num = float(score)
        return num if num <= 100 else num / 10

2. Metodología de Análisis y Modelado

2.1. Análisis Exploratorio: Estacionalidad de Estrenos

Se calculó el volumen mensual de estrenos únicos en salas de cine para identificar ventanas estratégicas de oportunidad comercial.

  • Zona Roja (alta competencia): Junio-Julio (verano USA) y Noviembre-Diciembre (temporada navideña).
  • Zona Verde (baja competencia): Enero-Febrero y Agosto-Septiembre (ideal para lanzamientos independientes).
  • Visualización: Gráfico de barras con colores diferenciados y etiquetas numéricas.

2.2. Modelo Predictivo: Regresión para Puntuación de Críticos

Pipeline completo para predecir standardized_score (0-100):

  • a) Join eficiente entre tablas usando Polars + DuckDB.

  • b) Muestreo aleatorio Bernoulli (~20-30k filas) para entrenamiento rápido.

  • c) Feature Engineering:

  • isTopCritic → binaria a entero.

  • publicationName y rating → Target Encoding.

  • runtime_min → variable numérica directa.

  • d) Modelo base: Random Forest Regressor (100 árboles) Resultados obtenidos:

  • RMSE: ≈19.50

  • R²: ≈0.21 (explica ~21% de la variabilidad → línea base sólida; futuro mejora con NLP sobre texto de reseñas).

Resultados y Visualizaciones Clave

  • Reportes detallados de integridad (nulos/duplicados con justificación estadística).
  • Gráfico de estacionalidad con zonificación estratégica.
  • Evaluación cuantitativa del modelo predictivo.
  • Datasets limpios y preparados para extensiones (ej. análisis de sentimiento en quotes).

🛠️ Stack Tecnológico

  • Procesamiento de Datos: Polars, Pandas, NumPy
  • Consultas y UDFs: DuckDB
  • Encoding Categórico: category_encoders (TargetEncoder)
  • Modelado y Métricas: scikit-learn (RandomForestRegressor)
  • Visualización: Matplotlib
  • Entorno: Jupyter Notebook

📁 Estructura del Proyecto

textFinal_Project_Big_Data/
├── Proyecto_Big_Datav4.ipynb                  # Notebook principal (todo el pipeline)
├── NLP_reviews.ipynb                          # Análisis complementario con NLP (opcional)
├── archivos/
│   ├── critic_reviews.csv                     # Dataset original (no incluido por tamaño)
│   ├── movies.csv                             # Dataset original (no incluido por tamaño)
│   └── reviews_sample.csv                     # Sample pequeño para pruebas rápidas
├── ETL & Analisis de Costo.pdf                # Documentación adicional
├── archivos/Reviews Movies Slides.pdf         # Slides de presentación
├── Notas.txt                                  # Notas del equipo
└── README.md

🚀 Reproducibilidad

  • Clonar el repositorio:

  • Bashgit clone https://github.com/leopoldozumba/Final_Project_Big_Data.git

  • Instalar dependencias:

  • Bashpip install polars duckdb pandas scikit-learn category-encoders matplotlib

  • Colocar manualmente los datasets grandes en archivos/ (o usar el sample para pruebas rápidas). Ejecutar Proyecto_Big_Datav4.ipynb de principio a fin.

👥 Autores

Proyecto desarrollado en equipo para el Módulo de Big Data Analysis.

  • Corina Heras
  • Jonathan Santana
  • Karina Ortega
  • Leopoldo Zumba
  • Tonny Toscano

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors