MAT306 - 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/MAT306/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_added
a 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
.loc
para 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_in
para 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
.loc
para 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
.style
para 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_counts
consubset=["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