Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

slides.tex 9.8 KB

You have to be logged in to leave a comment. Sign In
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
  1. % Created 2022-02-14 Mon 16:30
  2. % Intended LaTeX compiler: pdflatex
  3. \documentclass[french]{beamer}
  4. \usepackage[utf8]{inputenc}
  5. \usepackage[T1]{fontenc}
  6. \usepackage{graphicx}
  7. \usepackage{longtable}
  8. \usepackage{wrapfig}
  9. \usepackage{rotating}
  10. \usepackage[normalem]{ulem}
  11. \usepackage{amsmath}
  12. \usepackage{amssymb}
  13. \usepackage{capt-of}
  14. \usepackage{hyperref}
  15. \usepackage{minted}
  16. \usepackage[french]{babel}
  17. \usepackage[titles]{tocloft}
  18. \usepackage{listings}
  19. \usepackage[font=scriptsize]{caption}
  20. \usepackage{minted}
  21. \usemintedstyle{xcode}
  22. \definecolor{UBCblue}{rgb}{0.04706, 0.13725, 0.26667} % UBC Blue (primary)
  23. \usecolortheme[named=UBCblue]{structure}
  24. \newminted{sqlite}{fontsize=\footnotesize}
  25. \addtobeamertemplate{footnote}{}{\vspace{2ex}}
  26. \usetheme{default}
  27. \usecolortheme{dolphin}
  28. \usefonttheme{professionalfonts}
  29. \useinnertheme[shadow]{rounded}
  30. \useoutertheme{infolines}
  31. \author{Pierre, Thierno, Bastien, Laurent}
  32. \date{\today}
  33. \title{Créer et utiliser une base de données}
  34. \subtitle{Movie Db}
  35. \titlegraphic{\includegraphics[width=90]{img/iu.png}}
  36. \setbeamerfont{caption}{size=\scriptsize}
  37. \hypersetup{
  38. pdfauthor={Pierre, Thierno, Bastien, Laurent},
  39. pdftitle={Créer et utiliser une base de données},
  40. pdfkeywords={},
  41. pdfsubject={},
  42. pdfcreator={Emacs 27.2 (Org mode 9.5.2)},
  43. pdflang={French}}
  44. \begin{document}
  45. \maketitle
  46. \begin{frame}{Outline}
  47. \setcounter{tocdepth}{1}
  48. \tableofcontents
  49. \end{frame}
  50. \section{Milestone 1 : (Modélisation) Analyse fonctionnelle}
  51. \label{sec:orgc2c4664}
  52. \begin{frame}[label={sec:org45241b8},shrink=20]{Données en entrée}
  53. \begin{center}
  54. \begin{tabular}{lrrrrr}
  55. & count & unique & top & freq & mean\\
  56. \hline
  57. color & 5024 & 2 & Color & 4815 & nan\\
  58. director\_name & 4939 & 2398 & Steven Spielberg & 26 & nan\\
  59. num\_critic\_for\_reviews & 4993 & nan & nan & nan & 140.194\\
  60. duration & 5028 & nan & nan & nan & 107.201\\
  61. director\_facebook\_likes & 4939 & nan & nan & nan & 686.509\\
  62. actor\_3\_facebook\_likes & 5020 & nan & nan & nan & 645.01\\
  63. actor\_2\_name & 5030 & 3032 & Morgan Freeman & 20 & nan\\
  64. actor\_1\_facebook\_likes & 5036 & nan & nan & nan & 6560.05\\
  65. gross & 4159 & nan & nan & nan & 4.84684e+07\\
  66. genres & 5043 & 914 & Drama & 236 & nan\\
  67. actor\_1\_name & 5036 & 2097 & Robert De Niro & 49 & nan\\
  68. movie\_title & 5043 & 4917 & Ben-Hur & 3 & nan\\
  69. num\_voted\_users & 5043 & nan & nan & nan & 83668.2\\
  70. cast\_total\_facebook\_likes & 5043 & nan & nan & nan & 9699.06\\
  71. actor\_3\_name & 5020 & 3521 & John Heard & 8 & nan\\
  72. facenumber\_in\_poster & 5030 & nan & nan & nan & 1.37117\\
  73. plot\_keywords & 4890 & 4760 & based on novel & 4 & nan\\
  74. movie\_imdb\_link & 5043 & 4919 & \url{http://www.imdb.com/title/tt0232500/?ref\_=fn\_tt\_tt\_1} & 3 & nan\\
  75. num\_user\_for\_reviews & 5022 & nan & nan & nan & 272.771\\
  76. language & 5031 & 47 & English & 4704 & nan\\
  77. country & 5038 & 65 & USA & 3807 & nan\\
  78. content\_rating & 4740 & 18 & R & 2118 & nan\\
  79. budget & 4551 & nan & nan & nan & 3.97526e+07\\
  80. title\_year & 4935 & nan & nan & nan & 2002.47\\
  81. actor\_2\_facebook\_likes & 5030 & nan & nan & nan & 1651.75\\
  82. imdb\_score & 5043 & nan & nan & nan & 6.44214\\
  83. aspect\_ratio & 4714 & nan & nan & nan & 2.2204\\
  84. movie\_facebook\_likes & 5043 & nan & nan & nan & 7525.96\\
  85. \end{tabular}
  86. \end{center}
  87. \end{frame}
  88. \begin{frame}[label={sec:orgd9a5857}]{Dictionnaire des données}
  89. \begin{center}
  90. \includegraphics[width=9cm]{./fig/cat.png}
  91. \end{center}
  92. \end{frame}
  93. \section{Milestone 2 : (Modélisation) Modèle conceptuel de données}
  94. \label{sec:org67d6240}
  95. \begin{frame}[label={sec:org7f57c89}]{MCD}
  96. \begin{center}
  97. \includegraphics[width=10cm]{./fig/mcd.png}
  98. \end{center}
  99. \end{frame}
  100. \section{Milestone 3 : (Modélisation) Modèle logique de données}
  101. \label{sec:orge866a38}
  102. \begin{frame}[label={sec:org067e138}]{Modèle logique de données}
  103. \begin{center}
  104. \includegraphics[width=10cm]{./fig/umldb.png}
  105. \end{center}
  106. \end{frame}
  107. \section{Milestone 4 : (Implémentation) Création de la base}
  108. \label{sec:org42e5e79}
  109. \begin{frame}[label={sec:org61a25d6},fragile,shrink=5]{Création de la base de données (SQLAlchemy)}
  110. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{python}
  111. class Movie(Base):
  112. __tablename__ = 'Movie'
  113. id = Column(String, primary_key=True, nullable=False)
  114. title = Column(String)
  115. year = Column(Date)
  116. color = Column(String)
  117. language = Column(String)
  118. country = Column(String)
  119. content_rating = Column(String)
  120. duration = Column(Integer)
  121. gross = Column(Integer)
  122. budget = Column(Integer)
  123. aspect_ratio = Column(Float)
  124. facebook_likes = Column(Integer)
  125. imdb_score = Column(Integer)
  126. num_user_for_reviews = Column(Integer)
  127. plot_keywords = Column(String)
  128. facenumber_in_poster = Column(Integer)
  129. genres = relationship('Genre', secondary = 'movie_genres', back_populates="movies")
  130. cast = relationship('Artist', secondary = 'appearances', back_populates="movies")
  131. \end{minted}
  132. \end{frame}
  133. \begin{frame}[label={sec:org648933e},fragile]{Création de la base de données (SQL)}
  134. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  135. CREATE TABLE appearances (
  136. id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
  137. role VARCHAR(32),
  138. facebook_likes INTEGER,
  139. movie_id VARCHAR,
  140. artist_id INTEGER,
  141. FOREIGN KEY(movie_id) REFERENCES "Movie" (id),
  142. FOREIGN KEY(artist_id) REFERENCES "Artist" (id)
  143. )
  144. ;
  145. \end{minted}
  146. \end{frame}
  147. \section{Milestone 5 : (Implémentation) Importation des données}
  148. \label{sec:org09e848e}
  149. \begin{frame}[label={sec:org182091a},fragile]{Chargement des donneés}
  150. \begin{itemize}
  151. \item Extrait du script d'initialisation et de chargement de la base:
  152. \end{itemize}
  153. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{python}
  154. roles = ['director', 'actor_1', 'actor_2', 'actor_3']
  155. for i, row in df.iterrows():
  156. for role in roles:
  157. a = eval(f'row.{role}_name')
  158. q = s.query(Artist).filter(Artist.name==a)
  159. if s.query(q.exists()).scalar():
  160. artist_id = q.first().id
  161. else:
  162. artist = Artist(**{
  163. 'name': eval(f'row.{role}_name')
  164. })
  165. s.add(artist)
  166. s.commit()
  167. artist_id = q.first().id
  168. \end{minted}
  169. \end{frame}
  170. \section{Milestone 6 : (Exploitation) Requêtes SQL}
  171. \label{sec:orgec4d481}
  172. \begin{frame}[label={sec:org01f8d3b},fragile]{le top 10 des films les plus rentables}
  173. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  174. SELECT title,gross-budget FROM Movie ORDER BY gross-budget DESC LIMIT 10
  175. \end{minted}
  176. \begin{center}
  177. \begin{tabular}{lr}
  178. title & gross-budget\\
  179. \hline
  180. Avatar  & 523505847\\
  181. Jurassic World  & 502177271\\
  182. Titanic  & 458672302\\
  183. Star Wars: Episode IV - A New Hope  & 449935665\\
  184. E.T. the Extra-Terrestrial  & 424449459\\
  185. The Lion King  & 377783777\\
  186. Star Wars: Episode I - The Phantom Menace  & 359544677\\
  187. The Dark Knight  & 348316061\\
  188. The Hunger Games  & 329999255\\
  189. Deadpool  & 305024263\\
  190. \end{tabular}
  191. \end{center}
  192. \end{frame}
  193. \begin{frame}[label={sec:org4ff9b60},fragile]{le top 10 des films les moins rentables}
  194. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  195. SELECT title,gross-budget FROM Movie ORDER BY gross-budget ASC LIMIT 10
  196. \end{minted}
  197. \begin{center}
  198. \begin{tabular}{lr}
  199. The Host  & -12213298588\\
  200. Lady Vengeance  & -4199788333\\
  201. Fateless  & -2499804112\\
  202. Princess Mononoke  & -2397701809\\
  203. Steamboy  & -2127109510\\
  204. Akira  & -1099560838\\
  205. Godzilla 2000  & -989962610\\
  206. Tango  & -698312689\\
  207. Kabhi Alvida Naa Kehna  & -696724557\\
  208. Red Cliff  & -553005191\\
  209. \end{tabular}
  210. \end{center}
  211. \end{frame}
  212. \begin{frame}[label={sec:orgbcfb3f1},fragile,shrink=5]{les réalisateurs qui ont fait le plus de films}
  213. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  214. SELECT
  215. a.name, COUNT(*)
  216. FROM
  217. Artist a
  218. INNER JOIN
  219. (Movie m INNER JOIN appearances p ON m.id = p.movie_id) ON a.id = p.artist_id
  220. WHERE role='director'
  221. GROUP BY a.name
  222. ORDER BY COUNT(*) DESC LIMIT 10;
  223. \end{minted}
  224. \begin{center}
  225. \begin{tabular}{lr}
  226. Steven Spielberg & 26\\
  227. Woody Allen & 22\\
  228. Martin Scorsese & 20\\
  229. Clint Eastwood & 20\\
  230. Spike Lee & 16\\
  231. Ridley Scott & 15\\
  232. Renny Harlin & 15\\
  233. Steven Soderbergh & 14\\
  234. Oliver Stone & 14\\
  235. Ron Howard & 13\\
  236. \end{tabular}
  237. \end{center}
  238. \end{frame}
  239. \begin{frame}[label={sec:org3efeda2},fragile]{l'acteur qui a joué dans le plus de films}
  240. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  241. SELECT
  242. a.name, COUNT(*)
  243. FROM
  244. Artist a
  245. INNER JOIN
  246. (Movie m INNER JOIN appearances p ON m.id = p.movie_id) ON a.id = p.artist_id
  247. WHERE role='actor_1' OR role='actor_2' OR role='actor_3'
  248. GROUP BY a.name
  249. ORDER BY COUNT(*) DESC LIMIT 1;
  250. \end{minted}
  251. \begin{center}
  252. \begin{tabular}{lr}
  253. Robert De Niro & 51\\
  254. \end{tabular}
  255. \end{center}
  256. \end{frame}
  257. \begin{frame}[label={sec:orgfaabb1c},fragile]{le nombre de films avec "love" dans les mots clés}
  258. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  259. SELECT COUNT(*) From movie WHERE plot_keywords LIKE '% love,%'
  260. \end{minted}
  261. \begin{verbatim}
  262. 156
  263. \end{verbatim}
  264. \end{frame}
  265. \begin{frame}[label={sec:org859b5d7},fragile]{le nombre de films français}
  266. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  267. SELECT COUNT(*) From movie WHERE language = 'French'
  268. \end{minted}
  269. \begin{verbatim}
  270. 64
  271. \end{verbatim}
  272. \end{frame}
  273. \begin{frame}[label={sec:orge155738},fragile]{le réalisateur avec au moins 10 films qui obtient la meilleure moyenne (note imdb)}
  274. \begin{minted}[frame=lines,fontsize=\scriptsize,linenos]{sql}
  275. SELECT a.name, AVG(m.imdb_score), COUNT(*)
  276. FROM movie m INNER JOIN appearances p
  277. ON m.id = p.movie_id INNER JOIN artist a
  278. ON p.artist_id = a.id WHERE p.role='director'
  279. GROUP BY a.name HAVING COUNT(m.id) > 9
  280. ORDER BY AVG(m.imdb_score) DESC LIMIT 1
  281. \end{minted}
  282. \begin{center}
  283. \begin{tabular}{lrr}
  284. David Fincher & 7.75 & 10\\
  285. \end{tabular}
  286. \end{center}
  287. \end{frame}
  288. \section{Bibliography}
  289. \label{sec:org04ca828}
  290. \begin{frame}[label={sec:org4e90d95}]{References}
  291. \begin{itemize}
  292. \item \url{https://github.com/lsiksous/recsys}
  293. \end{itemize}
  294. \bibliographystyle{unsrt}
  295. \bibliography{recsys}
  296. \end{frame}
  297. \end{document}
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...