EDA Netflix Dataset con pandas
Exploración completa del catálogo de Netflix mediante técnicas de visualización avanzadas con pandas, matplotlib y seaborn
EDA Netflix Dataset: Análisis Visual y Exploratorio
Objetivos de Aprendizaje
- Dominar técnicas de visualización utilizando matplotlib y seaborn
- Explorar patrones y tendencias en un conjunto de datos real de Netflix
- Limpiar y transformar datos para análisis efectivo
- Interpretar visualizaciones para extraer insights de negocio
- Crear dashboards informativos con múltiples tipos de gráficos
Contexto de Negocio
Netflix, como líder global en servicios de streaming, necesita entender en profundidad su catálogo para tomar decisiones estratégicas sobre adquisición y producción de contenido. Este análisis permite:
- Identificar patrones en tipos de contenido (películas vs series)
- Analizar distribuciones geográficas (países de origen)
- Entender tendencias temporales en lanzamientos
- Estudiar clasificaciones por audiencia (ratings)
- Explorar géneros y duraciones
El dataset utilizado contiene información sobre títulos disponibles en la plataforma, incluyendo detalles como tipo, país, fecha de lanzamiento, rating y género.
Proceso de Análisis
1. Preparación y Carga de Datos
# Importar librerías esenciales
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
# Configuración visual
plt.style.use("classic")
sns.set_palette("husl")
plt.rcParams['figure.figsize'] = (10, 6)
# Cargar dataset
url = "https://raw.githubusercontent.com/swapnilg4u/Netflix-Data-Analysis/refs/heads/master/netflix_titles.csv"
df = pd.read_csv(url)
2. Análisis de Datos Faltantes
La identificación de valores nulos es crucial para entender la completitud de los datos:
# Detectar datos faltantes
missing_data = df.isna().sum().sort_values(ascending=False)
missing_percent = (df.isna().sum() / len(df) * 100).sort_values(ascending=False)
# Visualizar con barras horizontales y heatmap
plt.figure(figsize=(12, 6))
plt.subplot(1, 2, 1)
sns.barplot(x=missing_percent[missing_percent > 0].values,
y=missing_percent[missing_percent > 0].index,
palette='Reds_r')
plt.title('Porcentaje de Datos Faltantes por Columna')
3. Distribución de Tipos de Contenido
Una de las primeras preguntas a responder: ¿Cómo se distribuye el contenido entre películas y series?
# Calcular proporción de tipos
type_counts = df['type'].value_counts()
type_percent = df['type'].value_counts(normalize=True) * 100
# Visualización con countplot y pie chart
fig, axes = plt.subplots(2, 2, figsize=(15, 10))
# Countplot básico
sns.countplot(data=df, x='type', ax=axes[0, 0], palette='Set2')
axes[0, 0].set_title('Distribución: Movies vs TV Shows')
# Pie chart
axes[0, 1].pie(type_counts.values, labels=type_counts.index,
autopct='%1.1f%%', startangle=90, colors=['skyblue', 'lightcoral'])
axes[0, 1].set_title('Proporción Movies vs TV Shows')
4. Análisis Temporal
El análisis de tendencias a lo largo del tiempo revela patrones de crecimiento y cambios estratégicos:
# Preparar datos temporales
df['release_year'] = pd.to_numeric(df['release_year'], errors='coerce')
yearly_releases = df['release_year'].value_counts().sort_index()
recent_years = yearly_releases[yearly_releases.index >= 2000]
# Línea temporal
plt.plot(recent_years.index, recent_years.values,
marker='o', linewidth=2, markersize=4, color='darkblue')
plt.title('Cantidad de Contenido por Año (2000-2021)')
plt.grid(True, alpha=0.3)
5. Análisis Geográfico
La distribución geográfica del contenido muestra mercados prioritarios y oportunidades:
# Preparar datos de países
df_countries = df.dropna(subset=['country']).copy()
countries_expanded = df_countries['country'].str.split(', ').explode()
country_counts = countries_expanded.value_counts().head(20)
# Top 15 países - barras horizontales
top_15_countries = country_counts.head(15)
sns.barplot(y=top_15_countries.index, x=top_15_countries.values,
palette='viridis')
plt.title('Top 15 Países con Más Contenido')
6. Análisis de Ratings
Las clasificaciones por audiencia determinan el público objetivo:
# Preparar datos de ratings
rating_counts = df['rating'].value_counts().head(10)
# Countplot de ratings
sns.countplot(data=df, x='rating', order=rating_counts.index, palette='Set1')
plt.title('Distribución de Ratings')
plt.tick_params(axis='x', rotation=45)
Visualizaciones Principales
Las visualizaciones son fundamentales para entender patrones en los datos. A continuación se presentan los principales gráficos de este análisis:
Insights Clave
El análisis exploratorio reveló varios hallazgos importantes:
- Crecimiento exponencial de contenido desde 2015, con un fuerte impulso en 2018-2020
- Predominio de películas (70%) sobre series (30%) en el catálogo global
- Concentración geográfica en Estados Unidos, India y Reino Unido como principales productores
- Co-producciones estratégicas entre Estados Unidos y Reino Unido (185), y Estados Unidos y Canadá (137)
- Cambio en el enfoque desde películas hacia series de TV en la última década
- Ratings dominantes: TV-MA, TV-14 y PG-13, reflejando un enfoque en audiencias adultas y adolescentes
- Géneros más populares: Dramas, Comedias y Documentales
Recomendaciones Estratégicas
Basado en los patrones observados, se sugieren las siguientes estrategias:
- Diversificar el catálogo geográficamente, aumentando producción en mercados emergentes
- Equilibrar el portafolio entre películas y series, priorizando series por su creciente popularidad
- Desarrollar contenido familiar para ampliar el alcance más allá del actual enfoque en contenido adulto
- Aprovechar co-producciones internacionales para reducir costos y ampliar audiencias
- Invertir en géneros de alta demanda como Dramas y Documentales
Limitaciones y Trabajo Futuro
Este análisis presenta algunas limitaciones que podrían abordarse en futuras investigaciones:
- Falta de datos de audiencia que permitirían correlacionar contenido con preferencias de usuarios
- Ausencia de métricas de rendimiento como ratings de IMDb o Rotten Tomatoes
- Sin información de costos para evaluar retorno de inversión por tipo de contenido
- Datos limitados de comportamiento del usuario para entender patrones de visualización
Herramientas y Técnicas Utilizadas
- pandas: Manipulación y análisis de datos
- matplotlib: Visualizaciones básicas y personalizadas
- seaborn: Visualizaciones estadísticas avanzadas
- ydata-profiling: Generación de reportes EDA automatizados
Conclusión
El análisis exploratorio del catálogo de Netflix proporciona información valiosa sobre la evolución y estado actual de la plataforma. Las visualizaciones revelan patrones claros en la estrategia de contenido, destacando la transición hacia un mayor enfoque en series de TV y la importancia de ciertos mercados geográficos. Estos insights pueden guiar decisiones estratégicas para optimizar la adquisición y producción de contenido.
Nota: Este análisis fue realizado con fines educativos utilizando datos públicos de Netflix.