Analisando meus dados da Netflix
Tags: datascience, python, analyst, womenintech
Published: 2020-11-12 11:55:08

Aqui vamos nós para mais um post de Análise de Dados. Dessa vez mais incrível ainda, nós não vamos utilizar dados de outras pessoas para fazer uma análise, vamos utilizar nossos próprios dados. Incrível né?

Neste artigo você vai conseguir responder perguntas relacionadas à series e filmes assistidos por você. 

Perguntas como:

- **Quanto tempo passei assistindo determinada serie ou filme?**
- **Qual temporada eu mais assisti?**
- **Quais foram os episódios mais assistidos?**
- **Em quais dias da semana eu assisti mais episódios?**
- **Em que hora do dia eu assisto episódios de Friends com mais frequência?**

Primeiro vou começar fazendo uma Análise Exploratória geral nos dados. Depois irei filtrar os dados  e analisar mais detalhadamente uma série de comédia que eu amo: **Friends.**

Vamos lá??

![Friends](https://media.giphy.com/media/de4aRYwfD7T7q/giphy.gif)

---

Para começar preciso dizer que esta análise foi inspirada em um artigo postado pelo [Dataquest](http://dataquest.io/blog/). Vou pedir para que vocês acessarem [esse link](https://www.dataquest.io/blog/python-tutorial-analyze-personal-netflix-data/), onde eles explicam o passo a passo para solicitar seus dados no site da Netflix. Além disso, você consegue ver a análise feita pelo autor do artigo.

Como de costume, começamos importando as bibliotecas necessárias. Aqui, para essa analise simples, foram utilizadas apenas essas três.
```
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
```
## **Conhecendo e Preparando os Dados**

Vamos conhecer melhor nossos dados e prepara-los para a análise. Foram feitas transformações bem interessantes, tenho certeza que vai ser enriquecedor para você.
Depois de ler os dados que vieram no formato csv, vamos mostrar as 5 primeiras linhas do nosso DataFrame:

```
df = pd.read_csv('ViewingActivity.csv')
df.head()
```

Utilizando o `.info()` e `.shape` obtemos informações sobre nossas colunas e a quantidade de linhas e colunas, respectivamente.

```
df.shape

df.info()
```

![image1](https://miro.medium.com/max/875/0*P6V_tNOAG5ldqDUr)

Optei por eliminar algumas colunas que para minha analise não seriam interessantes. 

Além disso também renomeei a primeira coluna, apenas substituindo o espaço no `'Start Time'` por um underscore . E claro, verifiquei a existência de valores NaN.

```
df.drop(['Profile Name', 'Attributes', 'Supplemental Video Type', 'Device Type',
         'Bookmark', 'Latest Bookmark', 'Country'], axis=1, inplace=True)
df.head()
```

![image1](https://miro.medium.com/max/875/0*fkJVF6XmlfwsSB1x)

## **Convertendo tipo Object em Datetime e Timedelta**

Os dados das colunas `'Start_Time'` e `'Duration'` parecem corretos, mas se você reparar bem eles não estão armazenados no formato correto. Podemos usar `df.dtypes` para obter uma lista dos tipos de dados de cada coluna do nosso dataframe:

```
df.dtypes
```
![image1](https://miro.medium.com/max/374/0*xMFrFymsEvBLgL4K)

Todas as três colunas são armazenadas como **object**, o que significa que são **strings**. Isso não é bom para as duas colunas relacionadas ao tempo. Vamos converter essas duas colunas para trabalharmos com elas.

**O objetivo é:**

- Converter `Start_Time` para Datetime (um formato de data e hora que o Pandas pode entender e realizar cálculos)
- Converter `Start_Time` de UTC para nosso fuso horário local
- Converter `Duration` para Timedelta (um formato de duração de tempo que o Pandas podem entender e realizar cálculos)

Começando com a conversão `Start_Time` para datetime usando `pd.to_datetime()`

![image1](https://miro.medium.com/max/875/0*wkC6vi2r3GDbF6EL)

Adicionamos o argumento opcional `utc=True` para que nossos dados de data e hora tenham o fuso horário UTC anexado a eles.
Agora que temos essa coluna no formato correto, é hora de alterar o fuso horário para o horário local.

Podemos converter data e hora para qualquer fuso horário usando o `.tz_convert()` e passando um argumento com a string para o fuso horário que queremos converter.

Obs: Precisamos realizar mais um passo. Só podemos usar `.tz_convert()` em um DatetimeIndex, portanto, precisamos definir a coluna `Start_Time` como o índice usando `set_index()`.

![image1](https://miro.medium.com/max/875/0*xdC1udYEyTRDfvZj)

Agora, vamos lidar com a coluna `Duration`. Em vez de convertê-lo em uma data e hora, precisamos convertê-lo em um Timedelta, que é uma medida de duração de tempo que o pandas entende.

Fazemos isso utilizando `pd.to_timedelta()`

![image1](https://miro.medium.com/max/695/0*HLiVleEpaWxre2ZL)


## **Análise de Dados Gerais**

Se notarmos bem, a coluna `Title` contém o nome da série(ou filme), temporada e título do episódio. Essas informações poderiam ser "quebradas" em novas colunas, concordam?

E foi exatamente isso que eu fiz no código abaixo utilizando `str.split()`

![image1](https://miro.medium.com/max/875/0*tqMvNzIrz4wexuMK)

Além disso, decidi criar mais duas colunas a partir da coluna `'Start_Time'`. Como temos data e hora, criei a coluna `'Weekday'` que nos informa o dia da semana (Segunda=0, Domingo=6) e a coluna `'Hour'` com o horário.

Podemos usar os métodos `.dt.weekday` e .`dt.hour` para fazer isso.

![image1](https://miro.medium.com/max/875/0*C-HZCI-Mva0QteG2)

> **Quantas vezes foi dado play em cada série/filme?**

![image1](https://miro.medium.com/max/776/0*myP4maU4XWTncl5M)

> **Qual é o top 10 series/filmes mais assistidos?**

![image1](https://miro.medium.com/max/875/0*kacyCqkQjPaiiCvI)

## **Análise de Dados - Friends**

Como dito anteriormente, irei fazer uma análise mais detalhada selecionando apenas registros relacionados à série **Friends**.

Para isso irei criar um outro DataFrame somente com registros onde `'Title_Name'` é igual à Friends. Aqui você pode adaptar selecionando a sua série ou filme preferido.

![image1](https://miro.medium.com/max/875/0*RFjs-JYTSHq-ceaZ)

Percebemos em nossa exploração de dados que, quando algo como uma prévia de um episódio é reproduzido automaticamente, ele conta como uma visualização em nossos dados.

Então, vamos filtrar nosso dataframe `friends`, limitando para apenas linhas onde o valor de `Duration` seja maior que dois minutos.

![image1](https://miro.medium.com/max/875/0*0c4bYTQm5u-agU5U)

### **Respondendo mais algumas perguntas:**

> **Quanto tempo passei assistindo Friends?**

![image1](https://miro.medium.com/max/395/0*MWW4s6K-HTxXjIj6)

Confesso que esperava mais até haha. 
Não sei vocês, mas eu tenho o costume dar play em alguma série enquanto faço outra coisa só para ter um "companhia" enquanto, por exemplo, lavo a louça, arrumo a casa, almoço, janto… Então na verdade, uma parte desse tempo nem foi assistindo ativamente.

> **Qual temporada de Friends eu mais assisti?**

![image1](https://miro.medium.com/max/573/0*8qHdKOhqgT042qfE)

Caso você não saiba, a temporada 10 é a última temporada de Friends, está ai o porquê de ser a temporada que menos assisti, não gosto de ver os últimos episódios pois fico triste :(

> **Quais foram os episódios mais assistidos em Friends?**

![image1](https://miro.medium.com/max/875/0*7ssjdXtxtlPbeOH1)

Mais um caso, apesar de simples, de como a análise de dados é incrível, eu não fazia ideia de que esse era o episódio que eu mais tinha assistido até então.

> **Qual dia da semana costumo assistir Friends?**

![image1](https://miro.medium.com/max/395/0*MWW4s6K-HTxXjIj6)

```
print(friends.groupby('Weekday').agg({'Start_Time':'count'}))

# Monday=0, Sunday=6
plt.figure(figsize=(10,5))
ax = sns.countplot(x='Weekday', data=friends, color='blueviolet')
ax.set_title('Episódios de Friends assistidos por Dia da Semana', fontsize=17);
```

![image1](https://miro.medium.com/max/875/0*O6Xj0J9fMrcWiSgL)

Sábado é o dia em que mais assisti episódio de Friends, mas veja como Quarta-Feira está bem próximo também.

> **Em que hora do dia eu assisto episódios de Friends com mais frequência?**

```
print(friends.groupby('Hour').agg({'Start_Time':'count'}))

plt.figure(figsize=(10,5))
ax = sns.countplot(x='Hour', data=friends, color='blueviolet')
ax.set_title('Episódios de Friends assistidos por Hora', fontsize=17);
```

![image1](https://miro.medium.com/max/840/0*mJOmAQQeXZPbuP8T)

Por essa eu já esperava… Como eu disse, costumo assistir episódios enquanto estou almoçando, isso justifica o porque dessa barrinha tãao grande no horário de 12h.

---

Aqui você encontra a minha análise no GitHub: https://bit.ly/2Uo7JL5

Espero que vocês tenham gostado do post e da análise, foi algo simples, mas creio que consegui mostrar como conseguimos usar essas técnicas para saber mais sobre nossos gostos e hábitos.
Não esqueçam de conferir meus posts no [LinkedIn](https://www.linkedin.com/in/beatrizmaiads/) e me seguir por lá ♥

### **Contatos:**

- [LinkedIn]: https://www.linkedin.com/in/beatrizmaiads/
- [GitHub]: https://github.com/beatrizmaiads
- [Instagram]: https://www.instagram.com/beatrizmaiads/
- [Dev.to]: https://dev.to/beatrizmaiads