今年贺岁档上映了众多电影,其中有喜剧片代表唐探3、你好,李焕英,奇幻冒险片代表刺杀小说家、侍神令,犯罪片人潮汹涌等,众多电影中,我最喜欢看唐探3,因为之前看过唐探1和2系列,再加之本该去年上映的电影,延期一年才上映,心中多了一些期许。
豆瓣热映影评截图
从最新的豆瓣影评来看,唐探3豆瓣评分5.8,其中,44.7%的人评了3星,对此作者想分析春节档其他电影的评分情况,本节通过SQL创建库,并新建一个film表,用于存储电影影评数据,分析春节档电影的评分情况。
唐探3豆瓣评分截图
创建库
首先是在My SQL中创建一个库,取名叫做film,关于创建库有两种方法,一种方法是使用SQL语句创建库,另一种是借助Navicat Premium 12工具创建库。
使用SQL语言创建一个名字叫film的库。
# 新建数据库
CREATE DATABASE film;
另一种建立数据库的方式,鼠标右键选择新建数据库,填写数据库名,刷新一下,即可看到左侧创建的数据库。
因为My SQL中有很多的库,在创建库后,需要指定接下来需要操作的数据库。
# 指定接下来需要操作的数据库
USE film;
创建表
创建表,相当于创建一个只有标题而没有具体数值的表格,这里表格所包含的列标题分别代表电影名称,上映时间,上映国家、导演、电影类型、评分、评分人数、电影时长。
# 构建用于存储电影的空表
CREATE TABLE newfilm(
name VARCHAR(50),
uptime YEAR,
country VARCHAR(20),
director VARCHAR(30),
type SET('喜剧','悬疑','动作','奇幻','冒险','犯罪','动画'),
score DECIMAL(2,1),
Num_Commentaries INT,
costtime INT);
创建空表格后,需要给这张表格中插入数据,包括电影名称,上映时间,上映国家、导演、电影类型、评分、评分人数、电影时长,需要注意,SQL语句中的所有标点符号需在英文输入法下输入,且汉字需用单引号括起来。
# 插入表格数据
INSERT INTO newfilm(name,uptime,country,director,type,score,Num_Commentaries,costtime) VALUES
('唐人街探案3',2021,'中国大陆','陈思诚','喜剧,悬疑',5.8,380485,136),
('你好,李焕英',2021,'中国大陆','贾玲','喜剧',8.3,205475,128),
('刺杀小说家',2021,'中国大陆','路阳','动作,奇幻,冒险',7.1,118028,130),
('人潮汹涌',2021,'中国大陆','饶晓志','喜剧,犯罪',7.3,37235,119),
('侍神令',2021,'中国大陆','李蔚然','奇幻',6.1,39248,120),
('新神榜:哪吒重生',2021,'中国大陆','赵霁','动作,动画,冒险',7.4,24002,116),
('熊出没·狂野大陆',2020,'中国大陆','丁亮,邵和麒','喜剧,动画',6.8,5944,99),
('心灵奇旅 Soul',2020,'美国','彼特·道格特,凯普·鲍尔斯','动画,奇幻',8.9,580519,101),
('拆弹专家2',2020,'中国大陆','邱礼涛','动作,犯罪',7.9,320996,121),
('疯狂原始人2',2020,'美国','乔尔·克劳福德','喜剧,动画,冒险',8.0,149123,95),
('海底小纵队:火焰之环',2021,'中国大陆,英国','布莱尔·西蒙斯,周沁','动画,奇幻,冒险',7.0,1555,80);
插入数据仅用了0.007秒的时间。
将数据填充到表中后,预览数据表前五行数据,使用LIMIT语句,LIMIT5表示显示前5行的数据内容。
# 查看前五行数据表内容
SELECT * FROM newfilm
LIMIT 5;
预览前五行数据如下所示。
数据分析
选取2021年上映评分最高的前五个电影,SELECT选择电影名称和电影评分字段,WHERE用于筛选上映时间为2021年,GROUP BY按照电影名称分组统计, ORDER BY 按照电影评分高低降序排列。
#选取2021年上映评分最高的前五个电影
SELECT name,score from newfilm
WHERE uptime='2021'
GROUP BY name
ORDER BY score DESC
LIMIT 5;
从分析结果可以看出,你好,李焕英豆瓣评分为8.3,评分最高。
选取2021年评分人数最多的前五个电影,按照电影评分人数降序排列。
#选取2021年评分人数最多的前五个电影
SELECT name,Num_Commentaries,score from newfilm
WHERE uptime='2021'
GROUP BY name
ORDER BY Num_Commentaries DESC
LIMIT 5;
从分析结果来看,唐探3有近40万的影评人数,影评人数最多,但是豆瓣的评分只有5.8,实在是有点惋惜。
选取2021年上映电影时长最长的前五个电影,按照电影时长降序排列。
#选取2021年上映电影时长最长的前五个电影
SELECT name,costtime from newfilm
WHERE uptime='2021'
GROUP BY name
ORDER BY costtime DESC
LIMIT 5;
从分析结果来看,唐探3电影时长136分钟,在所有上映的电影中,播放时长最长,所以说,还没看唐探3的朋友,是否考虑,一桶爆米花不够呢?电影时长太长,要准备两桶才够,哈哈哈
除此之外,今年还有两部网剧的上映,分别是宋小宝导演的"发财日记",还有王宝强主演的"少林寺之得宝传奇"。
在此例中,往表中插入新的豆瓣影评,同样使用INSERT INTO的方法,插入需要字段的数值内容即可。
# 往表中插入新的豆瓣影评
INSERT INTO newfilm(name,uptime,score,Num_Commentaries,costtime) VALUES
('发财日记','2021','6.1',13267,128),
('少林寺之得宝传奇','2021','4.3',3492,93);
查看新增数据表内容,使用WHERE语句进行筛选,将名称中带有'发财日记'和'少林寺之得宝传奇'的电影名称单独筛选出来。
# 查看新增数据表内容
SELECT * FROM newfilm
WHERE name in ('发财日记','少林寺之得宝传奇');
筛选出来的数据结果如下所示。