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

猫眼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()

其运行结果截图如下:

b186f78363b4586d2d6dba5c6f3a5409.png

875b55f65ab5f55f61f409ec7011b981.pngfbb707feb34a6bbf7f6e07d453f7c58d.png

从这个折线图上我们不难看出这么一个信息:在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()

其运行结果如下:

c2d43aceb8f19d46418d06be7e5174a8.png

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

影片发行国分布情况分析

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

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

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()

其运行结果如下:

ba77e44ca6c28683c47753ee2d029396.png

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

小结

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

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

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

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

cded9fb2caea8c7241ccb502999582ae.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matlab广泛用于什么,目前,Matlab已成为世界上最受欢迎的科学和工程计算软件工具....

目前&#xff0c;Matlab已成为世界上最受欢迎的用于科学和工程计算的软件工具. 它是一种新型的计算机高级编程语言&#xff0c;具有广阔的应用前景. 有人将其称为“第四代”计算机语言. 就影响而言&#xff0c;仍然没有其他计算软件可与Matlab匹敌. Matlab简介Matlab于1984年发…

必须使用列别名命名此表达式_lambda表达式

一般的&#xff0c;如果一个类定义了函数调用运算符&#xff0c;则我们可以像使用函数一样使用这个类&#xff0c;例如&#xff1a;一个类A定义了函数调用运算符&#xff0c;我们就可以使用A()这样的形式调用对象&#xff0c;实际上调用了类的调用运算符函数。如果一个类定义了…

mysql数据库出现幻读,MySQL 幻读怎样处理?_数据库

MySQL 幻读怎样处理&#xff1f;1、MVCC快照&#xff0c;将历史数据存一份快照&#xff0c;在其事件增添与删除数据时&#xff0c;保证当前事件来说是不可见的&#xff1b;多半数据库都完成了多版本并发掌握&#xff0c;而且都是靠保留数据快照来完成的。以 InnoDB 为例&#x…

搜索引擎提交软件_增加SEO超级外链须知的高权重网站目录提交方法

做SEO的朋友对开放式网站目录应该不陌生吧。网站目录就是按一定的分类方法把收录的网站进行分类归档。网站目录本身是不主动抓取网页的&#xff0c;一般只记录网站的名称&#xff0c;网址和有限的说明文字。和网址站、导航站、酷站网址大全等如同一辙。一般高质量的聚合目录网站…

把模糊MATLAB波形的图变清晰,什么修图软件能把模糊图片清晰化?

图片和内容的契合度再高&#xff0c;配色再完美&#xff0c;如果图片不清晰&#xff0c;那才真的是一图毁所有。针对这种情况&#xff0c;我也为大家找来两个非常实用的工具。第一个工具&#xff0c;SmartDeblur。主要针对原图分辨率不高的情况。这个软件目前支持三种模式&…

遗传算法在交通路线matlab,Matlab遗传算法公交车路线优化

Matlab遗传算法公交车路线优化Matlab遗传算法公交车路线优化Matlab遗传算法公交车路线优化1 模型介绍2模型分析2.1整体设计2.2要点分析3结果展示1 模型介绍以乘客出行总时间最小为目标函数&#xff0c;求出其最小值即为最终接驳优化方案。模型约束条件在算法过程中可能会产生不…

mysql 连续签到天数_新版签到活动明天上线,福利活动抢鲜看~

明天游戏中心app旧版福利签到活动马上就要结束啦&#xff0c;虽然很多的魅友反馈说积分签到结束的太早&#xff0c;积分不够换5折券&#xff0c;不过更早的开启新版签到才能更快的享受到更好的福利嘛~今晚0点新版签到活动即将上线&#xff0c;接下来就一起来看看新版的签到活动…

java中nio怎么实现聊天,JAVA-NIO实现聊天室详细代码说明

JAVA-NIO实现聊天室详细代码说明JAVA-NIO实现聊天室详细代码说明github源码&#xff1a;https://github.com/JolyouLu/JAVAIO.gitsrc\main\java\com\JolyouLu\nio\groupchat 文件夹下public class GroupChatServer {//定义属性private Selector selector;private ServerSocketC…

vscode 调试_如何使用VSCode调试JS?

更多精彩&#xff0c;请点击上方蓝字关注我们&#xff01;序言做前端开发的朋友经常需要使用Visual Studio Code编辑代码&#xff0c;很多朋友就想在VSCode调试JS代码&#xff0c;下面我们就介绍下如何配置操作。一、环境准备首先安装好VSCode&#xff0c;准备好一个JS项目&…

基于matlab的信号合成与分解,基于matlab的信号合成与分解

基于matlab的信号合成与分解 - I - 摘 要 为了便于进行周期信号的分析与处理&#xff0c;常要把复杂的周期信号进行分解&#xff0c;即将周期 信号分解为正余弦等此类基本信号的线性组合&#xff0c;通过对这些基本信号单元在时域和频域 特性的分析来达到了解信号特性的目的。本…

基站位置查询系统_木牛导航网络基站服务免费了!——更便捷、更高效、更省心!...

布谷飞飞劝早耕&#xff0c;春锄扑扑趁初晴。千层石树通行路&#xff0c;一带水田放水声。《山行》-- 姚鼐(Photo by Quang Nguyen Vinh)农业生产作为人类最传统的产业自古以来都讲究及时耕种&#xff0c;即抢农时根据气候适宜而进行季节性生产随着科技的发展&#xff0c;农业生…

php cgi进程很多win2008,php cgi.exe 太多 在 windowserver2008 apache 这个怎么样限制下?...

php cgi.exe 太多 在 windowserver2008 apache 这个怎么样限制下&#xff1f;mip版 关注:61 答案:2 悬赏:70解决时间 2021-02-24 01:48已解决2021-02-23 09:13php cgi.exe 太多 在 windowserver2008 apache 这个怎么样限制下&#xff1f;最佳答案2021-02-23 09:57可以设置最…

wince怎么刷carplay_Carplay支持仪表/HUD显示 宝马为全球超750000辆车发布OTA升级

【太平洋汽车网 新车频道】日前&#xff0c;宝马官方宣布&#xff0c;将从10月19日起为全球超过750000辆汽车提供iDrive 7.0最新版本的最重要的一次OTA升级。据悉&#xff0c;这项升级将有多项新功能加入&#xff0c;并重点支持Apple Carplay将导航等信息显示在HUD抬头显示和全…

php 如何调用redis,php如何调用redis

一、windows下php连接redis1、下载phpredishttps://github.com/nicolasff/phpredis/downloads2、根据你php版本&#xff0c;选择安装vc库&#xff0c;可以通过phpinfo();查看3、安装php_redis.dll模块将下载下来的php_redis模块放到php安装目录下的/ext/中&#xff0c;并在php.…

分析以太网帧结构_传统以太网中的——中继器及集线器

1.1 Repeater 中继器中继器工作在以太网的第一层即物理层&#xff0c; 两端口设备&#xff0c;主要功能是放大信号&#xff0c;从而延长信号在同一网络上传输的长度。中继器的存在主要是解决解决电信号长距离传播过程中的衰减问题&#xff0c;以增加信号强度和传播距离。Figure…

html表ge模板_精选甘特图模板,丰富又好用

你听说过甘特图吗&#xff1f;你可能不知道&#xff0c;也有可能是只是听说过但是并不了解。今天我们就来说一说甘特图吧&#xff01;甘特图其实就是是通过标示出活动顺序和时间间隔来表示某一特定项目的顺序与时间之间的关系的一种图表。与时间表或日程规划表不同的部分是甘特…

oracle中调试存储过程,详解Oracle调试存储过程

详解Oracle调试存储过程一 调试关键步骤1、在要调试的存储过程右键&#xff0c;选择编辑以进行调试&#xff0c;截图如下&#xff1a;2、点击小瓢虫&#xff0c;弹出调试窗口&#xff0c;截图如下&#xff1a;3、输入7839员工编号&#xff0c;点击确认&#xff0c;进行调试&…

imp oracle full,Oracle 10g imp 之 full database (转官档)

Using Export and Import to Move a DatabaseBetweenPlatforms10g官档:The Export and Import utilities are the only method that Oracle supports for moving an existing Oracle database from one hardware platform. to another. This includes moving between UNIX and …

linux的apache安装在哪个目录,在linux系统下apache的默认安装路径在哪

如果采用RPM包安装&#xff0c;安装路径应在 /etc/httpd目录下。(学习教程推荐&#xff1a;apache)apache配置文件&#xff1a;/etc/httpd/conf/httpd.conf 可以修改相关的访问路径及配置Apache模块路径&#xff1a;/usr/sbin/apachectl 启动模块web目录&#xff1a;/var/www/h…

车子Linux系统,Linux车载系统Automotive Grade Linux

【中关村在线软件资讯】7月8日消息&#xff1a;Linux在车载系统上&#xff0c;并不想落后于苹果、谷歌等竞争对手&#xff0c;这不&#xff0c;Linux最近也推出了可定制的车载系统平台——Automotive Grade Linux&#xff0c;旨在建立一个未来智能汽车系统的标准。Linux车载系统…