Skip to content

Pipeline de dados end-to-end para análise de conteúdos da Netflix. Inclui extração (CSV), transformação (limpeza, engenharia de features), carregamento (PostgreSQL) e visualização (4 dashboards). Pronto para produção com logging, tratamento de erros e documentação completa. Projeto de engenharia de dados modular e escalável.

Notifications You must be signed in to change notification settings

Thiago-code-lab/data-engineering-netflix

Repository files navigation

🎬 Netflix Data Engineering Pipeline

Netflix Data Pipeline

Python PostgreSQL Docker License: MIT

🚀 Pipeline ETL completo para análise avançada do catálogo Netflix

Demonstrando competências profissionais em Engenharia de Dados, Analytics e Arquitetura de Software

🎯 Visão Geral🏗️ Arquitetura🚀 Início Rápido📊 Resultados🤝 Contribuição


🎯 Visão Geral

Pipeline de Engenharia de Dados de classe empresarial para processamento e análise do catálogo Netflix

Este projeto demonstra um pipeline ETL (Extract, Transform, Load) completo e profissional, desenvolvido com as melhores práticas de engenharia de dados. O sistema processa 8.807 títulos Netflix através de uma arquitetura modular, escalável e pronta para produção.

✨ Destaques Técnicos

Títulos Features Dashboards
Qualidade Arquitetura Status

🏗️ Arquitetura

📊 Fluxo do Pipeline

graph TD
    A[📁 Netflix Dataset<br/>8,807 títulos] --> B[🔍 Extract<br/>Validação & Limpeza]
    B --> C[⚙️ Transform<br/>Feature Engineering]
    C --> D[💾 Load<br/>PostgreSQL]
    D --> E[📈 Analytics<br/>Dashboards & KPIs]
    E --> F[📋 Reports<br/>Insights Automáticos]
    
    style A fill:#e74c3c,stroke:#2c3e50,stroke-width:2px,color:#fff
    style B fill:#3498db,stroke:#2c3e50,stroke-width:2px,color:#fff
    style C fill:#9b59b6,stroke:#2c3e50,stroke-width:2px,color:#fff
    style D fill:#2ecc71,stroke:#2c3e50,stroke-width:2px,color:#fff
    style E fill:#f39c12,stroke:#2c3e50,stroke-width:2px,color:#fff
    style F fill:#1abc9c,stroke:#2c3e50,stroke-width:2px,color:#fff
Loading

🔧 Stack Tecnológica

Categoria Tecnologias
🐍 Core Python Pandas NumPy
🗄️ Database PostgreSQL SQLAlchemy
📊 Analytics Matplotlib Seaborn Plotly
🛠️ DevOps Docker Git Loguru

🏛️ Arquitetura do Sistema

📦 netflix-data-pipeline/
├── 🎯 src/
│   ├── ⚙️  config.py           # Configurações centralizadas
│   ├── 🔍 extract.py          # Extração robusta de dados
│   ├── ⚙️  transform.py        # Feature engineering avançado
│   ├── 💾 load.py             # Carregamento otimizado
│   ├── 📊 visualizations.py   # Dashboards profissionais
│   ├── 🛠️  utils.py            # Utilitários e logging
│   └── 🚀 pipeline.py         # Orquestrador principal
├── 📊 data/                   # Dados processados
├── 🎨 output/                 # Visualizações e relatórios
├── 📝 logs/                   # Sistema de logging
└── 📋 requirements.txt        # Dependências

🚀 Início Rápido

📋 Pré-requisitos

Requisito Versão Mínima Status
Python 3.8+
PostgreSQL 13+
RAM 4GB
Docker Latest 🔧 Opcional

⚡ Instalação Express (3 minutos)

# 1️⃣ Clone o repositório
git clone https://github.com/Thiago-code-lab/netflix-data-pipeline.git
cd netflix-data-pipeline

# 2️⃣ Configurar ambiente virtual
python -m venv venv && source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate  # Windows

# 3️⃣ Instalar dependências
pip install -r requirements.txt

# 4️⃣ Iniciar PostgreSQL (Docker)
docker-compose up -d

# 5️⃣ Executar pipeline completo
python src/pipeline.py

🎬 Demo sem PostgreSQL

# Execução apenas com visualizações (sem banco de dados)
python demo_pipeline.py

📊 Resultados

🎯 KPIs do Dataset

📈 Total

8,807

Títulos processados

🎬 Filmes

6,131

69.6% do catálogo

📺 Séries

2,676

30.4% do catálogo

🌍 Países

123

Diversidade global

🎭 Gêneros

42

Categorias únicas

📊 Dashboards Analíticos

🌍 Análise Geográfica Content Analysis

🎬 Análise de Gêneros Temporal Analysis

🎭 Análise de Conteúdo Geographic Analysis

⏲️ Análise Temporal Genre Analysis

🔍 Insights Principais

🎯 Insight 📊 Métrica 🔍 Impacto
Dominância Americana 🇺🇸 36% do conteúdo Estratégia de mercado focada
Crescimento Explosivo 📈 70% pós-2015 Expansão digital acelerada
Diversidade Global 🌍 123 países Alcance verdadeiramente mundial
Preferência por Filmes 🎬 69.6% filmes Modelo de consumo preferido
Gênero Dominante 🎭 18% dramas Preferência por narrativas

🛠️ Funcionalidades Técnicas

🔍 Extração de Dados

  • Detecção automática de encoding (UTF-8, Latin-1, ISO-8859-1)
  • Validação robusta de estrutura específica para dados Netflix
  • Tratamento avançado de exceções com logging detalhado
  • Verificação de integridade em tempo real

⚙️ Transformação de Dados

  • 🔧 Feature Engineering: 32 features derivadas de 12 originais
  • 🧹 Limpeza inteligente: Tratamento de valores nulos e inconsistências
  • 📅 Análise temporal: Décadas, idade do conteúdo, sazonalidade
  • 🌍 Processamento geográfico: Normalização de países e regiões
  • 📊 Métricas de qualidade: Monitoramento contínuo da qualidade

💾 Carregamento Otimizado

  • 🚀 Bulk insert: Carregamento em lotes otimizado
  • 🔗 Connection pooling: Gerenciamento eficiente de conexões
  • Verificação de integridade: Validação pós-carregamento
  • 📊 Indexação automática: Criação de índices para performance

📊 Visualização Avançada

  • 🎨 4 dashboards completos: Análises multidimensionais
  • 📈 Gráficos interativos: Plotly para exploração dinâmica
  • 📋 Relatórios automáticos: Geração de insights em Markdown
  • 🗄️ Biblioteca SQL: Consultas otimizadas pré-desenvolvidas

💡 Exemplos de Uso

🐍 Uso Programático

from src.extract import extract_netflix_data
from src.transform import transform_netflix_data
from src.load import load_to_postgres
from src.visualizations import generate_all_visualizations

# Pipeline completo em Python
def run_analysis():
    # Extração
    raw_data = extract_netflix_data()
    print(f"✅ Extraídos {len(raw_data)} registros")
    
    # Transformação
    clean_data = transform_netflix_data(raw_data)
    print(f"🔧 Processadas {clean_data.shape[1]} features")
    
    # Carregamento
    success = load_to_postgres(clean_data)
    print(f"💾 Carregamento: {'✅ Sucesso' if success else '❌ Falha'}")
    
    # Visualização
    charts = generate_all_visualizations(clean_data)
    print(f"📊 Gerados {len(charts)} dashboards")

# Executar análise
run_analysis()

🔍 Consultas SQL Avançadas

-- 🏆 Top 10 países por diversidade de gêneros
WITH country_genres AS (
    SELECT 
        primary_country,
        COUNT(DISTINCT primary_genre) as unique_genres,
        COUNT(*) as total_titles
    FROM netflix_titles 
    WHERE primary_country IS NOT NULL 
      AND primary_genre IS NOT NULL
    GROUP BY primary_country
)
SELECT 
    primary_country,
    unique_genres,
    total_titles,
    ROUND(unique_genres::numeric / total_titles * 100, 2) as diversity_ratio
FROM country_genres 
WHERE total_titles >= 50
ORDER BY diversity_ratio DESC 
LIMIT 10;

-- 📊 Evolução temporal com análise de tendências
SELECT 
    date_added_year,
    COUNT(*) as titles_added,
    LAG(COUNT(*)) OVER (ORDER BY date_added_year) as prev_year_count,
    ROUND(
        (COUNT(*) - LAG(COUNT(*)) OVER (ORDER BY date_added_year))::numeric / 
        NULLIF(LAG(COUNT(*)) OVER (ORDER BY date_added_year), 0) * 100, 2
    ) as growth_rate
FROM netflix_titles 
WHERE date_added_year BETWEEN 2010 AND 2021
GROUP BY date_added_year 
ORDER BY date_added_year;

📈 Análise Customizada

import matplotlib.pyplot as plt
import seaborn as sns
from src.utils import setup_plot_style

# Configurar estilo profissional
setup_plot_style()

# Análise de sazonalidade
def analyze_seasonality(data):
    monthly_releases = (
        data.groupby(['date_added_month', 'type'])
        .size()
        .unstack(fill_value=0)
    )
    
    fig, ax = plt.subplots(figsize=(14, 8))
    monthly_releases.plot(kind='bar', ax=ax, width=0.8)
    
    ax.set_title('📅 Padrão Sazonal de Lançamentos Netflix', 
                 fontsize=16, fontweight='bold', pad=20)
    ax.set_xlabel('Mês', fontsize=12)
    ax.set_ylabel('Número de Títulos', fontsize=12)
    ax.legend(title='Tipo de Conteúdo', frameon=True, fancybox=True)
    
    plt.xticks(rotation=45)
    plt.tight_layout()
    plt.savefig('output/seasonality_analysis.png', dpi=300, bbox_inches='tight')
    
    return fig

# Executar análise
seasonality_chart = analyze_seasonality(processed_data)

🏆 Recursos Avançados

⚡ Performance e Escalabilidade

  • 🔄 Processamento em chunks: Otimizado para grandes volumes
  • 🗃️ Indexação inteligente: Índices automáticos baseados em uso
  • 💾 Cache de resultados: Evita reprocessamento desnecessário
  • ⚖️ Balanceamento de carga: Distribuição eficiente de recursos

🔍 Monitoramento e Observabilidade

  • 📊 Logging estruturado: Logs JSON para análise automatizada
  • 🎯 Métricas em tempo real: KPIs de qualidade e performance
  • 🚨 Alertas inteligentes: Notificações automáticas de anomalias
  • 📈 Dashboard de sistema: Monitoramento visual do pipeline

🛡️ Qualidade e Confiabilidade

  • ✅ Validação rigorosa: Múltiplas camadas de verificação
  • 🔒 Gestão de credenciais: Variáveis de ambiente seguras
  • 📝 Auditoria completa: Rastreamento de todas as operações
  • 🔄 Recovery automático: Tratamento inteligente de falhas

🤝 Contribuição

🌟 Junte-se à comunidade de desenvolvedores que estão moldando o futuro da engenharia de dados! 🌟

Contributors Forks Stars

🚀 Como Contribuir

# 1. Fork o projeto
gh repo fork Thiago-code-lab/netflix-data-pipeline

# 2. Clone seu fork
git clone https://github.com/seu-usuario/netflix-data-pipeline.git

# 3. Crie uma branch para sua feature
git checkout -b feature/nova-funcionalidade

# 4. Faça suas alterações
git add . && git commit -m "✨ feat: adiciona nova funcionalidade"

# 5. Push e abra um PR
git push origin feature/nova-funcionalidade

🎯 Áreas de Interesse

Categoria Oportunidades Impacto
🤖 ML/IA Algoritmos preditivos, recomendações 🔥 Alto
🌐 APIs Conectores para streaming services 🔥 Alto
📊 Dashboards Streamlit, Dash, Power BI 🔥 Alto
🧪 Testes Unit tests, integration tests 📈 Médio
📚 Docs Tutoriais, exemplos avançados 📈 Médio
⚡ Performance Otimizações, paralelização 🚀 Crítico

📞 Contato Profissional

👨‍💻 Thiago Cardoso Davi

LinkedIn GitHub Email

📧 analyticsdev.thiago@gmail.com | 🌐 Portfolio: GitHub)

🆘 Suporte Técnico

Canal Uso Resposta
🐛 Issues Bugs, problemas técnicos 24-48h
💬 Discussions Dúvidas, ideias 12-24h
📖 Wiki Documentação completa Sempre atual

📜 Licença

Este projeto está licenciado sob a Licença MIT

License: MIT

Você é livre para usar, modificar e distribuir este código conforme os termos da licença MIT.

📄 Ver Licença Completa


🌟 Reconhecimentos

🙏 Agradecimentos Especiais

Organização Contribuição
Netflix Netflix Dataset público de alta qualidade
Python Python Foundation Ecossistema de bibliotecas excepcional
PostgreSQL PostgreSQL Global Development Group Sistema de banco robusto e confiável
🌍 Open Source Community Inspiração e ferramentas incríveis

Gostou do projeto?

Mostre seu apoio dando uma estrela no repositório!

Stars


Netflix Pipeline Data Engineering Python Powered Production Ready

🚀 Desenvolvido com ❤️ por profissionais, para profissionais

About

Pipeline de dados end-to-end para análise de conteúdos da Netflix. Inclui extração (CSV), transformação (limpeza, engenharia de features), carregamento (PostgreSQL) e visualização (4 dashboards). Pronto para produção com logging, tratamento de erros e documentação completa. Projeto de engenharia de dados modular e escalável.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published