MAT281 - Laboratorio N°03¶
Objetivo: Aplicar técnicas avanzadas de manipulación y análisis de datos con pandas sobre un conjunto real de datos de contenido de Netflix, reforzando buenas prácticas y métodos eficientes sin recurrir a groupby, merge, pivot, ni join.
Dataset:
Trabajaremos con el archivo netflix_titles.csv, que contiene información sobre los títulos disponibles en la plataforma Netflix hasta el año 2021.
| Variable | Clase | Descripción |
|---|---|---|
| show_id | caracter | Identificador único del título en el catálogo de Netflix. |
| type | caracter | Tipo de contenido: 'Movie' o 'TV Show'. |
| title | caracter | Título del contenido. |
| director | caracter | Nombre del director (puede ser nulo). |
| cast | caracter | Lista de actores principales (puede ser nulo). |
| country | caracter | País o países donde se produjo el contenido. |
| date_added | fecha | Fecha en la que el título fue agregado al catálogo de Netflix. |
| release_year | entero | Año de lanzamiento original del título. |
| rating | caracter | Clasificación por edad (por ejemplo: 'PG-13', 'TV-MA'). |
| duration | caracter | Duración del contenido (minutos o número de temporadas para series). |
| listed_in | caracter | Categorías o géneros en los que está clasificado el contenido. |
| description | caracter | Breve sinopsis del contenido. |
import pandas as pd
# Cargar datos
df = pd.read_csv('https://raw.githubusercontent.com/fralfaro/MAT281/main/docs/labs/data/netflix_titles.csv')
df.head()
| show_id | type | title | director | cast | country | date_added | release_year | rating | duration | listed_in | description | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | s1 | Movie | Dick Johnson Is Dead | Kirsten Johnson | NaN | United States | September 25, 2021 | 2020 | PG-13 | 90 min | Documentaries | As her father nears the end of his life, filmm... |
| 1 | s2 | TV Show | Blood & Water | NaN | Ama Qamata, Khosi Ngema, Gail Mabalane, Thaban... | South Africa | September 24, 2021 | 2021 | TV-MA | 2 Seasons | International TV Shows, TV Dramas, TV Mysteries | After crossing paths at a party, a Cape Town t... |
| 2 | s3 | TV Show | Ganglands | Julien Leclercq | Sami Bouajila, Tracy Gotoas, Samuel Jouy, Nabi... | NaN | September 24, 2021 | 2021 | TV-MA | 1 Season | Crime TV Shows, International TV Shows, TV Act... | To protect his family from a powerful drug lor... |
| 3 | s4 | TV Show | Jailbirds New Orleans | NaN | NaN | NaN | September 24, 2021 | 2021 | TV-MA | 1 Season | Docuseries, Reality TV | Feuds, flirtations and toilet talk go down amo... |
| 4 | s5 | TV Show | Kota Factory | NaN | Mayur More, Jitendra Kumar, Ranjan Raj, Alam K... | India | September 24, 2021 | 2021 | TV-MA | 2 Seasons | International TV Shows, Romantic TV Shows, TV ... | In a city of coaching centers known to train I... |
Parte 1: Limpieza y preparación¶
Revisar y describir el dataset:
- ¿Cuántas filas y columnas tiene?
- ¿Qué tipos de datos hay?
- ¿Cuántos valores nulos hay por columna?
Transformar la columna
date_addeda tipo fecha.Crear columnas auxiliares con
assign:- Año (
year_added) - Mes (
month_added)
- Año (
#FIXME
Parte 2: Técnicas avanzadas de pandas¶
Utilizar
.locpara seleccionar películas (type == 'Movie') que fueron agregadas después del año 2018.Utilizar
str.contains()ystr.extract():- Filtrar títulos que contienen la palabra 'love' (sin distinguir mayúsculas/minúsculas).
- Extraer la duración en minutos para las películas desde la columna
duration.
Aplicar
explode()sobre la columnalisted_inpara obtener una fila por cada género.Obtener un top 10 de géneros más frecuentes utilizando
value_counts().Aplicar
where()ymask()para marcar las películas de más de 120 minutos como contenido largo en una nueva columna.Utilizar
.locpara filtrar películas que cumplen con:- Más de 100 minutos de duración.
- Rating igual a
'R'. - País igual a
'United States'.
Utilizar
.stylepara formatear visualmente el top 10 de películas más largas.
#FIXME
Pregunta Desafío¶
- ¿Cuáles son las combinaciones más frecuentes de género y rating en el dataset?
(Sugerencia: utilizar
value_countsconsubset=["genre", "rating"]después de aplicarexplode()).
Bonus: Análisis de duplicados y limpieza¶
- ¿Existen películas con el mismo nombre (
title) pero con distinto año de lanzamiento (release_year)? - ¿Cuántos títulos únicos hay en total en la columna
title?
#FIXME