-
Notifications
You must be signed in to change notification settings - Fork 0
/
desafios_aula02.py
130 lines (87 loc) · 4.34 KB
/
desafios_aula02.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# -*- coding: utf-8 -*-
"""Desafios_aula02.ipynb
Automatically generated by Colaboratory.
Original file is located at
https://colab.research.google.com/drive/1N6pcYaVdzmDz80dRlkjgELy3jgtxE8k9
# Desafios Aula 02
Bem-vindo e bem-vinda aos desafios da Aula02, **lembre-se que temos várias formas de fazer e que o mais importante é você conseguir tirar conclusões dos resultados.**
## Desafio 1 do [Guilherme Silveira](https://twitter.com/guilhermecaelum)
Rotacionar os thicks (os nomes dos generos) do gráfico de barras verdes (o último), de forma a deixar as legendas mais legíveis.
"""
import seaborn as sns
sns.set_style("whitegrid")
filmes_por_genero = filmes["generos"].str.get_dummies('|').sum().sort_values(ascending=False)
plt.figure(figsize=(16,8))
ax = sns.barplot(x=filmes_por_genero.index,
y=filmes_por_genero.values,
palette=sns.color_palette("BuGn_r", n_colors=len(filmes_por_genero) + 4))
plt.xticks(rotation=45)
plt.show()
"""## Desafio 2 do [Paulo Silveira](https://twitter.com/paulo_caelum)
Encontar vários filmes com médias próximas e distribuições diferentes, use a função **plot_filmes(n)** para plotar.
"""
plot_filme(924) # 2001: A Space Odyssey (1968)
plot_filme(55820) # No Country for Old Men (2007)
plot_filme(2150) # Gods Must Be Crazy, The (1980)
"""## Desafio 3 do [Paulo Silveira](https://twitter.com/paulo_caelum)
Criar o boxplot dos 10 filmes com mais votos (não é com maior média, é com mais votos!). Não apenas plot mas também analise e tente tirar conclusões.
"""
# filmes_com_media_e_votos vem do desafio da aula 01
top_10_votos_por_filme = filmes_com_media_e_votos.sort_values(by='total_votos', ascending=False).head(10)
top_10_votos_por_filme_titulos = top_10_votos_por_filme['titulo'].to_list()
top_10_votos_por_filme_ids = top_10_votos_por_filme['filmeId'].to_list()
plt.figure(figsize=(18, 8))
ax = sns.boxplot(x='filmeId', y='nota', data=avaliacoes.query(f"filmeId in {top_10_votos_por_filme_ids}"))
ax.set_xticklabels(top_10_votos_por_filme_titulos, fontsize=12)
ax.set_xlabel("Filme", fontsize=16)
ax.set_ylabel("Nota", fontsize=16)
plt.xticks(rotation=45)
plt.show()
"""## Desafio 4 do [Guilherme Silveira](https://twitter.com/guilhermecaelum)
Configurar a visualização do boxplot gerado pelo seaborn (último boxplot plotado na aula). Configurar o tamanho e colocar o nome dos filmes nos thicks.
"""
plt.figure(figsize=(12, 6))
ax = sns.boxplot(data = avaliacoes.query("filmeId in [1,2,919,46578]"), x="filmeId", y="nota")
ax.set_xticklabels(filmes.query("filmeId in [1,2,919,46578]")['titulo'], fontsize=12)
ax.set_xlabel("Filme", fontsize=16)
ax.set_ylabel("Nota", fontsize=16)
plt.show()
"""## Desafio 5 do [Allan Spadini](https://twitter.com/allanspadini)
Calcular moda, média e mediana dos filmes. Explore filmes com notas mais próximas de 0.5, 3 e 5.
"""
def explora_filme(filme_id):
filme = filmes.query(f'filmeId == {filme_id}')
notas = avaliacoes.query(f'filmeId == {filme_id}')['nota']
print(f'Filme: {filme.iloc[0, 1]}')
print()
print(f'Moda: {notas.mode().values}')
print(f'Média: {notas.mean()}')
print(f'Mediana: {notas.median()}')
print('------------')
explora_filme(8387)
explora_filme(89386)
explora_filme(3774)
explora_filme(2041)
explora_filme(7541)
explora_filme(160080)
explora_filme(177593)
explora_filme(1178)
explora_filme(4334)
"""## Desafio 6 da [Thais André](https://twitter.com/thais_tandre)
Plotar o boxplot e o histograma um do lado do outro (na mesma figura ou em figuras distintas, mas um do lado do outro).
"""
pulp_fiction = avaliacoes.query('filmeId == 296')['nota']
f, axes = plt.subplots(1, 2, figsize=(16, 6))
pulp_fiction.plot(kind='hist', ax=axes[0])
pulp_fiction.plot(kind='box', ax=axes[1])
plt.show()
"""## Desafio 7 do [Thiago Gonçalves](https://twitter.com/tgcsantos)
Criar um gráfico de notas médias por ano (média geral considerando todos os filmes lançados naquele ano).
"""
filmes_com_media_e_ano = filmes_com_media.copy()
filmes_com_media_e_ano['ano'] = filmes_com_media['titulo'].str.extract("\((\d{4})\)")
filmes_com_media_e_ano.head()
nota_media_por_ano = filmes_com_media_e_ano.groupby('ano')['nota_media'].mean()
plt.figure(figsize=(18, 8))
nota_media_por_ano.plot()
"""#Não esqueça de compartilhar a solução dos seus desafios com nossos instrutores, seja no twitter ou linkedin. Boa sorte!"""