Skip to content
New Workbook
Sign up
Project: Investigating Netflix Movies

Netflix!

Um amigo teve acesso aos dados da Netflix e me afirmou que a média de duração dos filmes está caindo ao longo do tempo. Será que ele realizou a verificação correta, ou será que os filmes estão de fato ficando menores? 🤔

Solicitei a base de dados que ele utilizou e fiz algumas verificações.

# Importando pandas e matplotlib
import pandas as pd
import matplotlib.pyplot as plt

# Começando as análises!

A base de dados utilizada é a "netflix_data.csv". Temos alguns valores nulos e outliers, mas, para este projeto, ainda não iremos nos preocupar com isso.

#Lendo arquivo csv
netflix_df = pd.read_csv("netflix_data.csv")

#Verificação inicial do arquivo
netflix_df.head()

Podemos observar nesta base que temos tanto filmes quanto séries, então precisamos filtrar o dataframe para conter apenas filmes. Além disso, podemos reduzir nossos dados mantendo apenas as colunas de interesse.


#Subset somente filmes
netflix_subset = netflix_df[netflix_df["type"] == 'Movie']

#Subset colunas específicas
netflix_movies = netflix_subset[["title", "country","genre", "release_year", "duration"]]

#Verificando base filtrada
netflix_movies

Temos alguns filme com duração de 3, 10, 20 minutos. Para entender melhor a situação, vamos filtrar o DF para filmes com duração menor que 60 minutos


#Verificando filmes menor que 60min duração
short_movies = netflix_movies[netflix_movies["duration"]<60]

#print filmes curtos
short_movies

Com uma rápida verificação, podemos observar que os "filmes curtos" estão distribuídos entre documentários, filmes infantis e stand-up, o que parece ser um resultado lógico.

Para analisar melhor a duração dos filmes, poderíamos remover esses gêneros da base de dados. No entanto, uma maneira interessante de verificar o impacto desses gêneros em nossa distribuição é plotar um gráfico de dispersão, atribuindo cores aos diferentes gêneros!

#definindo uma cor para cada tipo de gênero
colors = []
for lab, row in netflix_movies.iterrows():
    if row["genre"] == "Children":
        colors.append("yellow")
    elif row["genre"] == "Documentaries":
        colors.append("green")
    elif row["genre"] == "Stand-Up":
        colors.append("blue")
    else:
        colors.append("grey")

#print colors
colors[0:30]

O resultado deste loop é uma lista na qual cada elemento representa um filme, e cada nome de cor corresponde a um gênero. Utilizaremos essa lista como parâmetro para definir a cor no nosso gráfico de dispersão.

#Criando um gráfico e definindo seu tamanho
fig = plt.figure(figsize =(12,8))

#Definindo tipo do gráfico como gráfico de dispersão "scatter" e plotando por ano de lançamento e duração, inserindo a lista "colors" como parametro de cor

plt.scatter(netflix_movies["release_year"],netflix_movies["duration"], c=colors)

# Definindo os rótulos e título
plt.xlabel("Release year")
plt.ylabel("Duration (min)")
plt.title("Movie Duration by Year of Release")

plt.show()

Com o gráfico acima, já podemos responder à pergunta inicial. No entanto, para melhorar a compreensão dos dados, podemos adicionar uma legenda para as cores.

#Criando um gráfico e definindo seu tamanho
fig = plt.figure(figsize =(12,8))

#Definindo tipo do gráfico como gráfico de dispersão "scatter" e plotando por ano de lançamento e duração, inserindo a lista "colors" como parametro de cor

plt.scatter(netflix_movies["release_year"],netflix_movies["duration"], c=colors)

# Definindo os rótulos e título
plt.xlabel("Release year")
plt.ylabel("Duration (min)")
plt.title("Movie Duration by Year of Release")

# Adicionando legenda para as cores

import matplotlib.patches as mpatches
legend_labels = [mpatches.Patch(color="yellow", label="Children"),
                 mpatches.Patch(color="green", label="Documentaries"),
                 mpatches.Patch(color="blue", label="Stand-Up"),
                 mpatches.Patch(color="grey", label="Other")]
plt.legend(handles=legend_labels)

#Exibindo gráfico
plt.show()