Kaggle入门 - TMDB 5000 电影推荐数据分析
本文是针对kaggle上的数据集TMDB 5000 Movie Dataset进行数据分析。
数据集在以下链接就可下载 https://www.kaggle.com/tmdb/tmdb-movie-metadata
![](https://img-
blog.csdn.net/2018071616175174?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
本文将按以下几个步骤描述,数据分析的流程:
1.提出问题,给出分析目的;
2.数据清洗;
3.针对问题建立模型;
4.数据可视化;
5.分析结果,形成数据分析报告
1.提出问题,给出分析目的
首先观察数据,tmdb_5000_credit文件标签有电影id,名称,演员,工作人员
![](https://img-
blog.csdn.net/20180721153512569?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
tmdb_5000_movies标签有,很多。能用上的有id,名称,电影标语,电影时长,评分,预算金额,电影类型,关键字,制作公司,上映时期,收入。
从本人阅片无数的角度来看,基于电影推荐提出几个问题如下:
分类型推荐。每个人都有自己的爱好,电影也一样,找出每个类型下评分最高前20名,并给出相应电影的标语tagline,简介overview。
按制作国家分类推荐。也许就是一时兴起就想看一个美国大片,或者看个迪士尼的动漫也还挺好,哎看个日本的文艺小清新片子也是个不错的idea。
按热门电影推荐,根据popularity的值从高到低排序。
按评分推荐,分数要较高且评分人数高于某值。
按观影者心情推荐。抑郁的人推荐小众文艺片,从生活出发到灵魂结束,在平淡中找到人生的意义,积极向上的电影;无聊的人推荐喜剧,科技探索片也是个不错的选择;开心的人推荐烧脑片之类的剧情电影,让你忘掉开心,【笑脸】。
2.数据清洗
数据清洗主要分三步:1.数据预处理;2.特征提取;3.特征选取[1]。
2.1 数据预处理
数据预处理包括:发现和填补缺失值、数据类型转换、异常值删除等。
首先合并两个数据表,删除重复的movie_id,删除本次分析不需要用到的列。
![](https://img-
blog.csdn.net/20180723171712467?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
查看数据信息,看那个数据缺失。
![](https://img-
blog.csdn.net/2018072317182088?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
数据中release_date列缺失1条数据,runtime列缺失2条数据,通过索引的方式找到具体是哪一部电影,上网搜索准确数据填上,homepage,
overview, tagline以字符null填充。对于release_date列,需将其转换为日期类型,然后提取出“年份”数据。
查找release_date缺失的那一列,搜索数据填上,同理runtime列。
![](https://img-
blog.csdn.net/20180723174600561?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
homepage, overview, tagline以字符null填充。
![](https://img-
blog.csdn.net/20180723180534987?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
2.2 特征提取
针对提出的每一个问题,选取合适的特征去研究分析,构造dataframe进行数据可视化。
credits数据中,cast、crew是json的格式,需要将演员、导演读取出来,以字符串格式显示。movies数据中genres、keywords、production_companies也是json格式,需要转化成字符串。通过json.loads先将JSON字符串转换为字典列表"[{},{},{}]"的形式,再遍历每个字典,取出键(key)为‘name’所对应的值(value),并将这些值(value)用
“,” 分隔。[1]
![](https://img-
blog.csdn.net/20180724160642160?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
再提取导演和主演。
![](https://img-
blog.csdn.net/20180724162728172?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/2018072416282182?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
3.数据可视化
3.1 问题1. 分类型推荐
每个人都有自己的爱好,电影也一样,找出每个类型下评分最高前20名,并给出相应电影的标语tagline,简介overview及电影主页homepage。
首先看哪种类型电影数量最多,及电影类型随时间的变化趋势。提取所有的电影类型,对各种电影类型进行one-
hot编码,如果一个值中包含指定内容,则编码为1,否则编码为0。
![](https://img-
blog.csdn.net/20180724185031644?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/20180724185139909?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/20180724210110975?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/20180724210133915?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/20180724210451879?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
![](https://img-
blog.csdn.net/20180724210706187?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
# 电影类型随时间的变化趋势图fig = plt.figure(figsize=(10, 8)) # 设置画图框尺寸ax1 = plt.subplot(1, 1, 1)# 设置图的位置plt.plot(genre_year60) #画折线图# 设置图形格式plt.title('电影类型随时间的变化趋势图', fontsize=18)plt.xlabel('年份', fontsize=18)plt.ylabel('数量', fontsize=18)plt.xticks(range(1960, 2017, 10))# 设置x轴的刻度plt.legend(genre_year60)plt.show()fig.savefig('film genre by year.png', dpi=600)
[/code]![](https://img-
blog.csdn.net/20180724210815139?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)在研究分类型推荐电影时,为了降低主观性先删除评价人数小于100的电影记录。```codegenres_df['id'] = merge_df['id']genres_df['title'] = merge_df['title']genres_df['vote_average'] = merge_df['vote_average']genres_df['vote_count'] = merge_df['vote_count']# 删除评价人数小于100的电影genres_df = genres_df[genres_df['vote_count'] > 100]
[/code]例如针对剧情Drama电影,在genres_df中找出'Drama'值为1的记录,新建数据框,加入电影的id, title, vote_average,
tagline, overview,利用vote_average降序排列,取前20个记录。![](https://img-
blog.csdn.net/20180726205534678?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)drama类型下,评分前20的电影如下图,同理其他类型。drama类型下的推荐电影:### ![](https://img-
blog.csdn.net/20180726205244798?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)###
3.2 问题2. 按制作国家分类推荐也许就是一时兴起就想看一个美国大片,或者看个迪士尼的动漫也还挺好,哎看个日本的文艺小清新片子也是个不错的idea。首先看哪种国家电影数量最多,及每个国家的电影随时间的变化趋势。由于很多电影的制作国家不止一个,所以按问题一中的思路,提取所有的电影制作国家,对各个国家进行one-
hot编码,如果一个值中包含指定内容,则编码为1,否则编码为0。![](https://img-
blog.csdn.net/20180727120115178?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)考查哪种国家电影数量最多,用pie图看每个国家电影数目比例。![](https://img-
blog.csdn.net/20180727120138886?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)![](https://img-
blog.csdn.net/20180727120337821?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)每个国家的电影随时间的变化趋势。![](https://img-
blog.csdn.net/20180727122635854?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)![](https://img-
blog.csdn.net/20180727132516609?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)以美国为例,按制作国家推荐电影。![](https://img-
blog.csdn.net/20180727134151281?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)美国电影评分top20:id | title | vote_average | tagline
---|---|---|---
278 | The Shawshank Redemption | 8.5 | Fear can hold you prisoner. Hope
can set you f...
238 | The Godfather | 8.4 | An offer you can't refuse.
550 | Fight Club | 8.3 | Mischief. Mayhem. Soap.
240 | The Godfather: Part II | 8.3 | I don't feel I have to wipe
everybody out, Tom...
424 | Schindler's List | 8.3 | Whoever saves one life, saves the world
entire.
244786 | Whiplash | 8.3 | The road to greatness can take you to the
edge.
680 | Pulp Fiction | 8.3 | Just because you are a character doesn't mean
...
510 | One Flew Over the Cuckoo's Nest | 8.2 | If he's crazy, what does
that make you?
497 | The Green Mile | 8.2 | Miracles do happen.
769 | GoodFellas | 8.2 | Three Decades of Life in the Mafia.
73 | American History X | 8.2 | Some Legacies Must End.
13 | Forrest Gump | 8.2 | The world will never be the same, once you've
...
311 | Once Upon a Time in America | 8.2 | Crime, passion and lust for
power - Sergio Leo...
1891 | The Empire Strikes Back | 8.2 | The Adventure Continues...
539 | Psycho | 8.2 | The master of suspense moves his cameras into ...
155 | The Dark Knight | 8.2 | Why So Serious?
389 | 12 Angry Men | 8.2 | Life is in their hands. Death is on their
minds.
27205 | Inception | 8.1 | Your mind is the scene of the crime.
11 | Star Wars | 8.1 | A long time ago in a galaxy far, far away...
77 | Memento | 8.1 | Some memories are best forgotten. ### 3.3 问题3. 按热门电影推荐根据popularity的值从高到低排序。![](https://img-
blog.csdn.net/20180726150624599?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)输出结果如下,可见按popularity推荐的是比较新的人们关注度高的电影,例如小黄人,星际穿越,死侍,银河护卫队等等。id | title | year | polularity
---|---|---|---
211672 | Minions | 2015 | 875.581305
157336 | Interstellar | 2014 | 724.247784
293660 | Deadpool | 2016 | 514.569956
118340 | Guardians of the Galaxy | 2014 | 481.098624
76341 | Mad Max: Fury Road | 2015 | 434.278564
135397 | Jurassic World | 2015 | 418.708552
22 | Pirates of the Caribbean: The Curse of the Bla... | 2003 |
271.972889
119450 | Dawn of the Planet of the Apes | 2014 | 243.791743
131631 | The Hunger Games: Mockingjay - Part 1 | 2014 | 206.227151
177572 | Big Hero 6 | 2014 | 203.734590
87101 | Terminator Genisys | 2015 | 202.042635
271110 | Captain America: Civil War | 2016 | 198.372395
244786 | Whiplash | 2014 | 192.528841
155 | The Dark Knight | 2008 | 187.322927
286217 | The Martian | 2015 | 167.932870
27205 | Inception | 2010 | 167.583710
109445 | Frozen | 2013 | 165.125366
209112 | Batman v Superman: Dawn of Justice | 2016 | 155.790452
19995 | Avatar | 2009 | 150.437577
550 | Fight Club | 1999 | 146.757391 ### 3.4 问题4. 按评分推荐分数要较高且评分人数高于某值,取评分人数大于100的记录,显示前20个。![](https://img-
blog.csdn.net/20180726145239661?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)输出结果如下,可见按评分推荐的是一些比较经典的,像肖申克的救赎,教父,辛德勒的名单等等。id | title | year | vote_average
---|---|---|---
278 | The Shawshank Redemption | 1994 | 8.5
238 | The Godfather | 1972 | 8.4
424 | Schindler's List | 1993 | 8.3
680 | Pulp Fiction | 1994 | 8.3
129 | Spirited Away | 2001 | 8.3
240 | The Godfather: Part II | 1974 | 8.3
244786 | Whiplash | 2014 | 8.3
550 | Fight Club | 1999 | 8.3
510 | One Flew Over the Cuckoo's Nest | 1975 | 8.2
13 | Forrest Gump | 1994 | 8.2
155 | The Dark Knight | 2008 | 8.2
389 | 12 Angry Men | 1957 | 8.2
128 | Princess Mononoke | 1997 | 8.2
497 | The Green Mile | 1999 | 8.2
539 | Psycho | 1960 | 8.2
346 | Seven Samurai | 1954 | 8.2
1891 | The Empire Strikes Back | 1980 | 8.2
73 | American History X | 1998 | 8.2
4935 | Howl's Moving Castle | 2004 | 8.2
769 | GoodFellas | 1990 | 8.2 与问题二的结果对比,可见美国评分top20里面包括了大部分总体电影评分top20,也正好证实了美国是电影大国,有质有量。### 3.5 问题5. 按观影者心情推荐抑郁的人推荐小众文艺片,从生活出发到灵魂结束,在平淡中找到人生的意义,积极向上的电影;无聊的人推荐喜剧,科技探索片也是个不错的选择;开心的人推荐烧脑片之类的剧情电影,让你忘掉开心,【笑脸】。观影者心情与电影类型对应表 观影者心情 | 对应推荐的电影类型
---|---
高兴happy | Drama, adventure, thriller, horror
伤心sad | Comedy, science fiction, family, fantasy
迷茫exhausted | Romance, adventure, family, mystery
无聊bored | Comedy, science fiction, thriller, crime
轻松relaxed | Drama, comedy, romance,music
孤独lonely | comedy, family, mystery, documentary
生气angry | Comedy, adventure, family, crime 以伤心sad为例,推荐这四种Comedy, science fiction, family, fantasy电影的前10个。![](https://img-
blog.csdn.net/20180727141307705?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)![](https://img-
blog.csdn.net/20180727141335999?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FpbmxpdTA5MDE=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)###有个问题暂时不知道怎么解决,就是怎么同时找出每个类型的评分前20,由于每部电影属于多个类型,这样就会有重复的记录,在类型少的时候可以一个一个找出但是太多的时候就不行了,如果有人看的话希望可以多多交流多多学习。[1] Kaggle——TMDB 5000 Movie Dataset电影数据分析. [
https://blog.csdn.net/zhuoyue65/article/details/80285875
](https://blog.csdn.net/zhuoyue65/article/details/80285875)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608151750993.gif)
Kaggle入门 - TMDB 5000 电影推荐数据分析相关推荐
- 数据分析案例之电影推荐
前言 通过案例来学习数据分析的思路和练习相应分析工具,往往最有效的.本文用julia来进行全流程的探索和分析,以期达到既掌握分析思路,又练习了这一新兴的数据科学利器.同时,个性化推荐是个太大的topi ...
- python电影推荐算法_基于Python的电影推荐算法
原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...
- Kaggle入门,看这一篇就够了
转载地址:https://zhuanlan.zhihu.com/p/25686876 之前发表了这篇关于 Kaggle 的专栏,旨在帮助对数据科学( Data Science )有兴趣的同学们更好的了 ...
- Kaggle数据集之电信客户流失数据分析(三)之决策树分类
一.导入数据 import pandas as pd df=pd.read_csv(r"D:\PycharmProjects\ku_pandas\WA_Fn-UseC_-Telco-Cust ...
- 关于Kaggle入门,看这一篇就够了
这次酝酿了很久想给大家讲一些关于Kaggle那点儿事,帮助对数据科学(Data Science)有兴趣的同学们更好的了解这个项目,最好能亲身参与进来,体会一下学校所学的东西和想要解决一个实际的问题所需 ...
- svm和k-最近邻_使用K最近邻的电影推荐和评级预测
svm和k-最近邻 Recommendation systems are becoming increasingly important in today's hectic world. People ...
- 关于Kaggle入门
博客转载至:https://blog.csdn.net/bbbeoy/article/details/73274931 这次酝酿了很久想给大家讲一些关于Kaggle那点儿事,帮助对数据科学(Data ...
- Kaggle入门和学习资源
官网:https://www.kaggle.com/ 转载自:https://zhuanlan.zhihu.com/p/25686876 也可以看看:https://zhuanlan.zhihu.co ...
- NLP自然语言处理系列-基于知识图谱的电影推荐实战
NLP自然语言处理系列-基于知识图谱的电影推荐实战 kaggle数据集 https://www.kaggle.com/netflix-inc/netflix-prize-data?select=com ...
- Kaggle入门系列:(一)Kaggle简介
Kaggle是全球最大的数据分析在线平台,吸引了全球范围内数十万的顶级数据科学家,同时也是检测我们机器学习技能的最佳平台. 一.Kaggle简介 Kaggle成立于2010年,网址:https://w ...
最新文章
- RDKit | PD/PD-L1抑制活性 化合物指标分析
- Java算法练习——正则表达式匹配
- Android --- .gradle文件夹的路径
- 对uC/OS-II内二维指针的研究
- 1112 Stucked Keyboard
- java图片上传被旋转,在其他大牛那看到的java手机图片上传旋转问题的解决方法...
- 你真正了解public、internal、protected、private吗?不妨幽默一些
- paip.提升用户体验---c++ ide 自动化注释插件的开发...
- 静态网页制作前夕小记录
- 应用概率统计-第六章 极限定理
- WiFi万能钥匙+小米手机拿到coffee店WiFi密码
- 微信小程序开屏广告实现
- 功能测试VS性能测试
- 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
- javascript11位手机号码正则表达式
- Selective Search算法-候选框生成
- 为什么选用Gurobi
- tar命令解压.zip文件出错:gzip: stdin has more than one entry--rest ignored
- Android内存泄漏总结,年薪超过80万!
- “互联网+”催生农产品线交易万亿市场
热门文章
- 麒麟操作系统激活相关问题
- sql server数据库可疑状态解决方法
- OpenGL图形渲染管线(Pipeline)学习
- js上传文件到OSS
- [Java]利用itextpdf将多个多页的PDF合并为一个
- Luyten报错:This application requires a Java Runtime Environment 1.7.0 or 1.8.0
- 苏宁收购天天快递,海航哭晕,申通老板怒赚20亿
- CANOE学习笔记-CAPL语言设计
- 熵权法求权重python代码
- 大数据工程师简历_大数据毕业生简历该怎么写?