本文是针对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,名称,电影标语,电影时长,评分,预算金额,电影类型,关键字,制作公司,上映时期,收入。

从本人阅片无数的角度来看,基于电影推荐提出几个问题如下:

  1. 分类型推荐。每个人都有自己的爱好,电影也一样,找出每个类型下评分最高前20名,并给出相应电影的标语tagline,简介overview。

  2. 按制作国家分类推荐。也许就是一时兴起就想看一个美国大片,或者看个迪士尼的动漫也还挺好,哎看个日本的文艺小清新片子也是个不错的idea。

  3. 按热门电影推荐,根据popularity的值从高到低排序。

  4. 按评分推荐,分数要较高且评分人数高于某值。

  5. 按观影者心情推荐。抑郁的人推荐小众文艺片,从生活出发到灵魂结束,在平淡中找到人生的意义,积极向上的电影;无聊的人推荐喜剧,科技探索片也是个不错的选择;开心的人推荐烧脑片之类的剧情电影,让你忘掉开心,【笑脸】。

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 电影推荐数据分析相关推荐

  1. 数据分析案例之电影推荐

    前言 通过案例来学习数据分析的思路和练习相应分析工具,往往最有效的.本文用julia来进行全流程的探索和分析,以期达到既掌握分析思路,又练习了这一新兴的数据科学利器.同时,个性化推荐是个太大的topi ...

  2. python电影推荐算法_基于Python的电影推荐算法

    原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...

  3. Kaggle入门,看这一篇就够了

    转载地址:https://zhuanlan.zhihu.com/p/25686876 之前发表了这篇关于 Kaggle 的专栏,旨在帮助对数据科学( Data Science )有兴趣的同学们更好的了 ...

  4. Kaggle数据集之电信客户流失数据分析(三)之决策树分类

    一.导入数据 import pandas as pd df=pd.read_csv(r"D:\PycharmProjects\ku_pandas\WA_Fn-UseC_-Telco-Cust ...

  5. 关于Kaggle入门,看这一篇就够了

    这次酝酿了很久想给大家讲一些关于Kaggle那点儿事,帮助对数据科学(Data Science)有兴趣的同学们更好的了解这个项目,最好能亲身参与进来,体会一下学校所学的东西和想要解决一个实际的问题所需 ...

  6. svm和k-最近邻_使用K最近邻的电影推荐和评级预测

    svm和k-最近邻 Recommendation systems are becoming increasingly important in today's hectic world. People ...

  7. 关于Kaggle入门

    博客转载至:https://blog.csdn.net/bbbeoy/article/details/73274931 这次酝酿了很久想给大家讲一些关于Kaggle那点儿事,帮助对数据科学(Data ...

  8. Kaggle入门和学习资源

    官网:https://www.kaggle.com/ 转载自:https://zhuanlan.zhihu.com/p/25686876 也可以看看:https://zhuanlan.zhihu.co ...

  9. NLP自然语言处理系列-基于知识图谱的电影推荐实战

    NLP自然语言处理系列-基于知识图谱的电影推荐实战 kaggle数据集 https://www.kaggle.com/netflix-inc/netflix-prize-data?select=com ...

  10. Kaggle入门系列:(一)Kaggle简介

    Kaggle是全球最大的数据分析在线平台,吸引了全球范围内数十万的顶级数据科学家,同时也是检测我们机器学习技能的最佳平台. 一.Kaggle简介 Kaggle成立于2010年,网址:https://w ...

最新文章

  1. RDKit | PD/PD-L1抑制活性 化合物指标分析
  2. Java算法练习——正则表达式匹配
  3. Android --- .gradle文件夹的路径
  4. 对uC/OS-II内二维指针的研究
  5. 1112 Stucked Keyboard
  6. java图片上传被旋转,在其他大牛那看到的java手机图片上传旋转问题的解决方法...
  7. 你真正了解public、internal、protected、private吗?不妨幽默一些
  8. paip.提升用户体验---c++ ide 自动化注释插件的开发...
  9. 静态网页制作前夕小记录
  10. 应用概率统计-第六章 极限定理
  11. WiFi万能钥匙+小米手机拿到coffee店WiFi密码
  12. 微信小程序开屏广告实现
  13. 功能测试VS性能测试
  14. 软件架构模式 mark Richards - 读后总结 3 - 微内核架构
  15. javascript11位手机号码正则表达式
  16. Selective Search算法-候选框生成
  17. 为什么选用Gurobi
  18. tar命令解压.zip文件出错:gzip: stdin has more than one entry--rest ignored
  19. Android内存泄漏总结,年薪超过80万!
  20. “互联网+”催生农产品线交易万亿市场

热门文章

  1. 麒麟操作系统激活相关问题
  2. sql server数据库可疑状态解决方法
  3. OpenGL图形渲染管线(Pipeline)学习
  4. js上传文件到OSS
  5. [Java]利用itextpdf将多个多页的PDF合并为一个
  6. Luyten报错:This application requires a Java Runtime Environment 1.7.0 or 1.8.0
  7. 苏宁收购天天快递,海航哭晕,申通老板怒赚20亿
  8. CANOE学习笔记-CAPL语言设计
  9. 熵权法求权重python代码
  10. 大数据工程师简历_大数据毕业生简历该怎么写?