猫眼Top100电影数据分析概述

从这一节开始,我们就综合利用已学到的一些分析技术来尝试做一些比较复杂的实际数据分析项目。在这些实际的项目案例中,我们将会看到一个完整的数据分析流程:数据清理——数据分析——数据可视化(即数据解释)。最终使得用户能够一眼看清楚一批复杂数据中所蕴含的知识。

本节所要讲的一个案例是:对利用爬虫手段从猫眼网站所爬下来的Top100的电影数据展开分析。在爬下来的电影数据集中,最重要的数据包括影片的主演、影片的上映时间、制作国、影评分等。

而我们想知道的是:在这批数据中,主要有哪些国家制作了这些脍炙人口的影片、最著名的演员都有哪些、不同的年份或不同的月份下影片的上映情况、不同影评分下的影片数量分布情况等信息。通过这些信息我们就知道,哪些国家发型的大片最多,哪些年份上映的好看影片最多,通常都会集中在哪些月份进行集中上映,同时我们还能知道最受观众喜爱的演员都有哪些。最后我们还能够清楚地看到,在这100部影片中,大部分影片的一个打分情况。

现在,就让我们来具体分析一下这批影片数据。关于影片数据集如何获取的,大家可以利用我们所介绍过的爬虫技术从猫眼网站进行爬取,这里就不再单独介绍。

此外,我们在本项目中采用了百度开发出来的pyecharts库来开展可视化操作,它在当前项目中要比Matplotlib库更加好用,尤其是在折线图的展示上。

如果没有安装过这个可视化库的,可以参考一下下面这个网址所提供的一个安装思路:

https://blog.csdn.net/zqs305082800/article/details/84581299

另外一个库:collections,则可用于快速统计不同数据出现的次数。非常方便。

感兴趣的小伙伴们可以考虑对pyecharts库和collections库做一个深入了解,必将对你的数据分析工作有莫大帮助。

PS:本项目案例中的代码都是成段出现,并非是连一片出现的,这是因为我在测试的过程中发现:若把这些片段的代码集中到一起,最终只能展示出最后的那个分析结论的可视化效果图,其余分析结论的可视化展示就会失效。故而我这里选择了分段来讲解。

再有一点需要说明的是:本项目案例中,有些处理逻辑参考借鉴了一丢丢前辈们的有益思路。因此,如果你觉得这里的分析处理逻辑似曾相识,请不要过于惊讶,哈哈哈!但我会尽可能地把我对这个项目分析案例的理解以及对这些理解的实现展示地更透彻一些!

展示数据集的基本信息

首先,我们将数据导入到代码中,并查看一下这批数据集的基本信息以及一些基本的统计量分析结果。对于影评分,我们可以查看它的平均分、最大值、最小值等。然后我们就开始对数据集中的一些数据做进一步的分析处理,并以可视化的形式展示给大家。这里所要分析的数据就是影片的上映日期,先看看不同年份下所上映的影片数的一个分布情形,以折线图进行展示:

import pandas as pd

import numpy as np

from pyecharts.charts import Line,Bar,Pie

import pyecharts.options as opts

from collections import Counter

#设置字段对齐

pd.set_option('display.unicode.ambiguous_as_wide', True)

pd.set_option('display.unicode.east_asian_width', True)

#设置最大显示列数与显示宽度,以防止出现不必要的换行输出现象

pd.set_option('display.max_columns',500)

pd.set_option('display.width',1000)

data = pd.read_csv('maoyan.csv',encoding='utf-8')

print('前10部影片信息:')

print(data.head(10))

#查看数据基本信息

print('查看影片数据基本信息:')

print(data.info())

#查看数据集中的基本统计分析

print('查看影片数据基本统计结果:')

print(data.describe())

#获得电影的平均分

print('获得所有影片的平均分:')

print(data['star'].mean())

#提取日期的年份与月份,这里没有采用Pandas库中的to_datatime()

#主要是考虑到原始数据中的日期没有包含天,只有年和月

#且采用字符串分割操作更显得方便些

data['year'] = data['pub_time'].str.split('-').str[0]

data['month'] = data['pub_time'].str.split('-').str[1]

year = data.groupby('year')['year'].count()

attr_year = list(year.index)

num_year = list(year)

#以下是pyecharts库中绘制折线图的基本套路

#先声明一个Line对象,然后添加X轴坐标

#然后添加y轴坐标,如果需要给y轴坐标起名字的话,可添加名字

#利用is_smooth可以设置折现是光滑曲线还是不光滑的折线

#最后设置一下折线图的一些全局属性,比如标题,位置是居中还是

#左对齐或右对齐等

line = (

Line()

.add_xaxis(attr_year)

.add_yaxis('',num_year,is_smooth=True)

.set_global_opts(title_opts=opts.TitleOpts(,pos_left='center'))

)

#下面这一行代码让折线图在Jupyter Notebook上显示的

#一条必备命令,缺少它,我们所绘制的折线图

#将不会在Notebook上显示。

line.render_notebook()

其运行结果截图如下:

从这个折线图上我们不难看出这么一个信息:在1993年到2013年这11年间,上映的大片普遍比较多(个别年份除外)。当然,这个讯息的背后还能进一步得出什么样的结论,比如是否可以进一步判定在这11年间内,大片的行情普遍比较火等,这就要靠更专业的人士结合他们所处行业的综合信息来作出这方面的判断了。

查看不同月份上映的影片数

通常,电影的上映时间是很有讲究的,比如一些大片会选在黄金周来上映,因为那个时期观影人数会更多;再比如,影片的排挡也会综合考虑不同月份下的行情。因此,我们可以对这批影片数据做进一步分析,看看通常在哪些月份上映的影片数最多:

month = data.groupby('month')['month'].count()

attr_month = list(month.index)

v_month = list(month)

#以下是利用pyecharts库制作柱状图的基本思路

bar = (

Bar()#声明一个Bar对象

.add_xaxis(attr_month)#添加X坐标

.add_yaxis('',v_month)#添加y坐标值,也可以再加个标题

.set_global_opts(title_opts=opts.TitleOpts(,pos_left='center'))#设置好柱状图的全局信息,包括图标题、位置等!

)

#这一步非常重要,千万不能省略,否则

#无法在NoteBook上显示

bar.render_notebook()

其运行结果如下:

从这个柱状图来看,我们可以看出一个大体的趋势:步入到下半年之后,影片通常都会扎堆放映了。这可以被电影从业人员视作是一个影片档期排挡规律。比如我们国家每年都会有一个贺岁档,我想大概也是因为这个原因吧。至于为什么会有这么一个神奇的规律,这就需要深度分析人们的社会行为、消费习惯规律等数据才能得出一个准确答案,而不是从这一批数据中就能得到的。

影片发行国分布情况分析

弄明白影片上映时间的规律之后,我们接下来就会想着这些最受欢迎的影片大多来源于哪些国家。通过这样的分析,我们就可以看出当前哪些国家制作的影片最受欢迎,或者还可以这么说:哪些国家在制作这种受欢迎大片上的实力最牛掰。

#本段代码的作用是分析出不同国家所制作的影片数的一个占比情况

def get_country(country):

#首先要做的就是提取所有的国家信息

country_str = ''

if country.find('(') < 0 or country.find('中国香港') > 0 :

#这里的条件判断并不特别严谨,是因为满足上述

#条件的第一个判断,也可能是来自国外的影片,比如

#数据集中的泰坦尼克号这部影片就来自国外,但我们会依据

#这里的判断而将其归类于中国电影

#获取国家这个API实际上还需要做进一步的分析,

#但就目前数据集中有限的信息,我们很难做出最完美的判断。

#因此,这就说明采集数据时,保证数据信息的完整性

#是多么的重要。

country_str = '中国'

elif country.find('法国戛纳') > 0:

country_str = '法国'

else:

country_str = country.split('(')[1].strip(')')

return country_str

data['country'] = data['pub_time'].map(get_country)

country = data.groupby('country')['country'].count()

attr_country = list(country.index)

num_country = list(country)

#以下是pyecharts库绘制饼状图的基本思路

pie = Pie()#声明一个Pie图对象

pie.add(

"国家",#设置饼状图名称

#设置一下饼状图中要显示的数据

[list(z) for z in zip(attr_country ,num_country )],

# center为圆心坐标

center=["20%", "50%"],

# 60为内半径,80为外半径

radius=[60, 80],

)

#设置饼状图的全局属性,包括标题、位置信息等

pie.set_global_opts(

title_opts=opts.TitleOpts(,pos_left='left'),

legend_opts=opts.LegendOpts(

type_="scroll", pos_top="200%", pos_left="80%", orient="vertical"

),

)

# 设置显示百分比

pie.set_series_opts(

tooltip_opts=opts.TooltipOpts(

trigger="item", formatter="{a}
{b}: {c} ({d}%)"

))

#下面这行代码是确保饼状图能够在Notebook上显示的必备代码

pie.render_notebook()

其运行结果如下:

从这个国家分布的饼状图上来看,中美两国所发布的大片受到的喜爱程度最高,尤其是中国。这个原因我想主要还是在于发布这个猫眼Top100的网站里参与影片评分的人绝大多数还是以中国人为主。这里边多少有一些爱国情怀的作用,哈哈哈。

小结

这一节我们简单地分析了一下猫眼Top100电影数据集中的一些基本信息,包括影片上映时间规律、影片发行国规律等信息。在这些分析过程中,我们利用了所学习到的分组分析、基本统计分析等分析技术。在分析影片发行国规律时我们还对数据做了比较复杂的处理,这属于数据清理的范畴。最后我们利用可视化的形式展示了我们所分析出来的结论,并对这个结论做了一些基本的解释。

因此,我们可以从这个实际的小项目中就能够完整地看到数据分析的三个主要环节——数据清理、数据分析、分析结果解释等。

当然,对于这批数据集的分析我们还没结束,还有一些重要的信息有待提取,这就留待下一节的项目案例分享中继续为大家分享。

本节的数据分析项目案例分享就到此为止,谢谢大家!我们下一节的分享中,不见不散!

大数据项目开发案例_大数据分析技术——项目案例1(猫眼电影数据分析上)...相关推荐

  1. 大数据薪水大概多少_大数据工程师工资一般多少钱

    大数据热度不减,大家最关注的还是大数据工程师的工资待遇,在咨询课程前都会问这样的问题:大数据工程师拿多少工资?我国大数据人才缺口大,这是大数据工资收入提升的一个条件,另一个就是其岗位分不同工资待遇也会 ...

  2. 大数据薪水大概多少_大数据各岗位薪资收入水平多少?出路在哪里?

    大数据是近年来最受关注之一的技术,大部分的互联网企业都离不开大数据相关岗位的人才.根据最新的大数据人才报告显示,全国仅有46万大数据人才,而未来3-5年预估缺口高达150万. 大数据的岗位可以分为三大 ...

  3. python大数据工程师薪资待遇_大数据岗位就业薪资具体多少?大数据职业发展的2大方向和5个职位...

    大数据发展非常火热的时候,很多想加入大数据行业的小伙伴,犹豫和困惑最大的问题就是大数据岗位薪资情况,下面就给大家分析分析. 数据开发在互联网岗位薪酬中,排名第二 1.职位量大增,投递量增长更快 从 2 ...

  4. 大数据薪水大概多少_大数据工程师工资待遇一般多少?高吗

    对于计划学习大数据的人来说,可能最关心的问题就是工作后的薪资待遇了,毕竟学习大数据技术就是为了工作就业,所以学习者关心工资问题非常能理解,那么大数据工程师工资待遇高吗?能拿多少呢?到达是个什么水平呢? ...

  5. 大数据薪水大概多少_大数据工资一般多少

    大数据工资一般多少?以北京为例,大数据工程师的平均工资经过两年的发展在直线上涨.随着个人能力的全面提升,大数据工程师的薪资水平也必定会水涨船高. 大数据是一种规模大到在获取.存储.管理.分析方面大大超 ...

  6. 5000字 大数据时代读书笔记_大数据时代读书笔记

    大数据时代读书笔记 [篇一:大数据时代读书笔记] 大数据时代 -- 读书笔记 一.引论 1. 大数据时代的三个转变: 1. 可以分析更多的数据,处理和某个现象相关的所有数据,而不是 随机采样 2. 不 ...

  7. 大数据简介视频下载_大数据简介

    大数据简介视频下载 We are going to deliver a series of Tutorials on the following concepts one by one: 我们将逐一提 ...

  8. 大数据 智能交通调度_大数据技术在智能交通中的应用

    龙源期刊网 http://www.qikan.com.cn 大数据技术在智能交通中的应用 作者:庄斌 来源:<名城绘> 2018 年第 04 期 摘要:随着时代的发展和社会需求变化,现代智 ...

  9. 5000字 大数据时代读书笔记_大数据时代 读书笔记

    大数据时代 维克托·迈尔·舍恩伯格 首先作者抛出了大数据时代处理数据理念上的三大转变:  要全体不要抽样. 首先,要分析与某事物相关的所有数据,而不是依 靠分析少量的数据样本.全数据模式,样本 = ...

  10. python运用在大数据中精准生活_大数据分析技术在生活中的广泛应用

    段雯琼++薛然++任亚丽 摘 要 文章介绍了大数据技术的即时性.准确性和预测性,并将大数据技术与公共交通.医药领域.移动通信网络优化相结合,从而方便了人们的生活,提高了人们的生活质量. [关键词]大数 ...

最新文章

  1. c语言fopen函数打不开,[讨论]用fopen函数无法打开文件有哪几种情况
  2. 农信计算机资料录入试题,农村信用社考试计算机测试题(一)
  3. CSS布局——display,position,float属性
  4. 【已解决】navigateTo:fail page “/pages/.../...“ is not found
  5. java中hashcode作用_Java中hashCode的作用
  6. python opencv输出mp4_10分钟学会使用YOLO及Opencv实现目标检测
  7. 时间戳 java_java中获取时间戳的方法
  8. selenium-隐式等待和显式等待-0223
  9. utilities(C++)——单例(Singleton) (使用智能指针 shared_ptr)
  10. iOS 使用ZipArchive压缩文件
  11. MySQLl优化【附带优化视频教程全套】
  12. C# ffmpeg工具将视频转为SWF格式
  13. java简单计算器课程设计_简单计算器JAVA课程设计
  14. Vue+Vant的组件自定义使用阿里图标库图标
  15. 计算机链接与rtu通讯的区别,RTU
  16. 【转】GB2312 编码
  17. uchome数据字典
  18. 中南大学湘雅医院冯嵩:业财融合一体化信息平台的建设
  19. MySql创建视图的三种方法
  20. 老鱼Python数据分析——篇八:项目重构(思路)

热门文章

  1. linux系统调试网络,linux系统命令(网络相关的调试命令)
  2. 怎样把照片中的头像扶正_这些圣诞壁纸也太好看了吧,还能自制圣诞帽头像,换它...
  3. ldap radius mysql_radius vs ldap
  4. storm apache java_Apache Ignite与Apache Storm(深入)
  5. Dreamoon Likes Coloring CodeForces - 1330C(贪心+思维)
  6. KDD2021 放榜,6 篇论文带你了解阿里妈妈AI技术
  7. charles请求转发_用免费开源的frp实现内网穿透,使用nginx转发的方式去掉端口号...
  8. martin_pthread_pool
  9. 思维导图一定要用计算机来完成吗,计算机绘制思维导图有什么优势
  10. HDU 4616 Game 树形DP