Analice sus datos personales de Netflix con Python.

Sergio Rubiano
5 min readFeb 28, 2021

--

¿Cuánto tiempo has pasado mirando Netflix?, esta pregunta me la hice hace un par de días, soy usuario de esta plataforma hace 1 año, y me comencé a preguntar cuanto tiempo he invertido en ella, de esta manera podria analizar que episodios son los más vistos o incluso que usuario le dedica más tiempo a Netflix.

Pero, ¿cómo obtener mis datos de Netflix?, la compañía otorga a todos sus usuarios estos datos.

A continuación explicaré como solicitar tus datos a Netflix con un par de clics.

  1. Dirigirse a la siguiente página web https://www.netflix.com/account/getmyinfo

2. Dar clic en enviar solicitud de la información.

Luego de solicitar los datos, Netflix puede tardas hasta 30 días para enviarte toda la información al correo electrónico, conmigo en particular solo se demoraron 4 días, fue muy rápido y ya contaba con toda la información desde el primer día que utilice Netflix hasta el día que solicite dicha información.

Esta es la información que entregan:

Descargué dicha información y la subí a mi Google drive, y ahora si, manos a la obra.

En lo particular quería resolver 2 preguntas.

  1. ¿Qué usuario ha invertido el mayor tiempo dentro de la plataforma?
  2. ¿Cuáles episodios o películas son las más vistas por todos los usuarios?

Luego de observar toda la información que Netflix otorga, me di cuenta de que en la carpeta CONTENT_INTERATION en su archivo ViewingActivity.csv se encontraba los datos de las interacciones de cada usuario, esto es perfecto porque era justo lo que quería analizar.

Como herramientas, vamos a utilizar Python, con sus respectivas librerías pandas y matplotlib.

df = pd.read_csv("ViewingActivity.csv")df.info()

La columna Duration es con la que vamos a trabajar, pero se encontraba de tipo object, por lo tanto debemos cambiar su tipo a un timedelta64, ya que ahí se encuentra la duración de todos los usuarios cuando han visto un episodio o película en particular.

df['Duration'] = pd.to_timedelta(df['Duration'])

Luego cambié los nombres de los cinco usuarios por anónimos (este paso es opcional)

df['Profile Name'].replace({"nombre_usuario":'usuario 1','nombre_usuario':'usuario 2','nombre_usuario':'usuario 3','nombre_usuario':'usuario 4'},inplace=True)

Hacemos un value_counts() para tener la cantidad de registro de cada usuario.

df['Profile Name'].value_counts()

Podemos observar que el usuario número 5 es el que tiene más registros, con esto empezamos a tener una idea de los usuarios que más tiempo le han dedicado a la plataforma, pero a un no sabemos muy bien el por qué o el tiempo de cada usuario.

Entonces… ¿Qué usuario ha invertido el mayor tiempo dentro de la plataforma?

Primero, observaremos la columna Duration.

df['Duration'].head(10)

Se puede observar que nos muestra duraciones de un 1 segundo o menos de un minuto, esto es porque aveces pasamos mucho tiempo mirando el tráiler de un episodio o película, y luego nos salimos buscando otro contenido de nuestro interés dentro de la plataforma.

Filtramos la duración mayor a un minuto y hacemos una suma de todo el tiempo.

df[(df['Duration'] > '0 days 00:01:00')]df['Duration'].sum()

¡Guao! Esto es demasiado tiempo, es decir, 46 días y 20 horas en Netflix, es como si nos pegáramos una maratón de Netflix sin parar, este tiempo es la suma de todos los usuarios.

Vamos a ir más al detalle y mirar el tiempo por cada usuario.

usuario_1 = df.loc[df['Profile Name'] == 'usuario 1']duracion_usuario_1 = usuario_1['Duration'].sum()

replicar estas dos líneas de código para conocer el total de cada usuario

Es fascinante, el usuario número 5 ha invertido 17 días en Netflix (este total es como si estuvieras viendo Netflix durante 17 días sin parar)

Veamos la duración durante los días de la semana, que días han invertido la mayor parte del tiempo.

usuario_1['Start Time'] = pd.to_datetime(usuario_1['Start Time'])usuario_1['weekday'] = usuario_1['Start Time'].dt.weekdayusuario_1['weekday'] = pd.Categorical(usuario_1['weekday'], categories=[0,1,2,3,4,5,6],ordered=True)office_by_day_1 = usuario_1['weekday'].value_counts()office_by_day_1 = office_by_day_1.sort_index()

replicar estas dos líneas de códigos para conocer el total de cada usuario

Con esta información creamos un nuevo DataFrame y observemos que está pasando.

df_usuarios_semanas = pd.DataFrame({f'Usuario 1 = {duracion_usuario_1}':office_by_day_1, f'Usuario 2 = {duracion_usuario_2}':office_by_day_2,f'Usuario 3 = {duracion_usuario_3}':office_by_day_3, f'Usuario 4 = {duracion_usuario_4}':office_by_day_4, f'Usuario 5 = {duracion_usuario_5}':office_by_day_5})

Cambiando el index por los nombres de los días de la semana.

df_usuarios_semanas = df_usuarios_semanas.rename(index={0: 'Lunes', 1:'Martes', 2:'Miercoles', 3:'Jueves', 4:'Viernes', 5:'Sabado', 6:'Domingo'})

Creamos un gráfico para visualizar esta información.

df_usuarios_semanas.plot(kind = 'bar', figsize=(10,10))plt.title('Tiempo invertido por usuario')plt.xlabel("Dias de la semana")plt.ylabel("Numero de episodios")plt.xticks(rotation=35)plt.savefig('netflix-usuarios.png')

El usuario 5 ha invertido la mayor parte de su tiempo los días domingos con más de 200 episodios.

El usuario 4 es el que menos tiempo ha invertido o casi nulo.

2. ¿Cuáles episodios o películas son las más vistas por todos los usuarios?

ax = df['Title'].value_counts().head(10).plot(kind = 'barh', figsize=(10,10), color='red')plt.title('Episodios o peliculas más vistas por todos los usuarios (en general)')plt.xlabel('Total de episodios o peliculas')plt.savefig('total-episodios-o-peliculas.png')ax.invert_yaxis()

¿Es en serio? ¿Kong: La isla calavera?, y yo que pensaba que iba a ser Lucifer 😬, es decir que se ha visto 16 veces, el tráiler de Lupin un total de 10 veces.

¿Es buena la película Kong: La isla calavera?, no lo sé, tendré que verla. 😀

Por último, veamos que es lo que mira el usuario número 5.

Ha visto 7 veces la película de chiquito pero peligroso, ya tengo una idea de quien es este usuario 😀.

Muchas gracias por llegar al final de este blog, podrías sacar muchos más análisis con estos datos que nos otorga Netflix, si desarrollas tus propios análisis, déjamelo saber, sería un placer leerte. 🤗

¿Está listo para ir más lejos? 🚀

--

--