大数据项目开发案例_大数据分析技术——项目案例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,一经查实,立即删除!

相关文章

php utf8格式显示中文,php截取中文字符(utf-8格式)的函数

/**UTF-8中文字符截断程序http://www.jquerycn.cn*/$str "321这是测试字符串";$str1 "()()";echo subUTF8str($str,0,3)."";echo subUTF8str($str,0,4)."";echo subUTF8str($str1,0,4)."";echo subUTF8str($str1,0,10).&q…

python计算一年有多少天_Python 案例 004 (计算当前时间是一年中的第几天)

# -*- coding:utf-8 -*-"""计算当前时间是一年中的第几天"""bissextile [31,60,91,121,152,182,213,244,274,305,335,366] #leap yearcommonYear [31,59,90,120,151,181,212,243,273,304,334,365]enterYear int(raw_input("enter the Yea…

php截取字符串函数 左右,php截取中文字符串函数的技巧

这篇文章主要介绍了php截取中文字符串函数,实例分析了php针对中文字符串操作的技巧,注意utf-8与gb2312编码的转换问题,具有一定参考借鉴价值,需要的朋友可以参考下本文实例讲述了php截取中文字符串函数。具体实现方法如下&#xff1a;代码如下:<?php //中文字符串截取funct…

python从list中取出连续的数_python list 中找连续的数字(由网友处学习)

# -*- coding: utf-8 -*-# python:2.x__author__ ‘Administrator‘#学习这个要求的&#xff1a;http://wsky.org/archives/162.htmlimport sysfrom itertools import *from operator import *def parse(f):d{}for line in open(f,‘r‘):_lineline.split()d.setdefault(_line…

php中rectangle函数怎么用,rectangle函数参数 请教VB中使用API函数rectangle的问题

C#中两个参数为RectangleF的函数A矩形相对于B矩形的位置。 A矩形的X坐标减去B矩形的X坐标&#xff0c;A矩形的Y坐标减去Y矩形的X坐标。 public PointF RelativePosition(RectangleF recA, RectangleF recB) { PointF point new Point(); point.X recA.X - recB.X; point.Y r…

navicat 只对比一张表的数据_Excel VBA批量新建工作表(对比数据透视表的使用)...

在之前的一篇文章中&#xff0c;分享过用数据透视表的方法批量新建工作表。https://zhuanlan.zhihu.com/p/115191339​zhuanlan.zhihu.com本次将用VBA的方式快速新建多张工作表并命名&#xff0c;基于上篇文章中对插入工作表和计算工作表数的分析。https://zhuanlan.zhihu.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代码cwfac,主成分分析的matlab实现完整程序

主成分分析1.概述Matlab 语言是当今国际上科学界 (尤其是自动控制领域) 最具影响力、也是最有活力的软件。它起源于矩阵运算&#xff0c;并已经发展成一种高度集成的计算机语言。它提供了强大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、与其他程序和语言的…

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

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

python写mapreduce_用python写MapReduce函数——以WordCount为例

使用python写MapReduce的“诀窍”是利用Hadoop流的API&#xff0c;通过STDIN(标准输入)、STDOUT(标准输出)在Map函数和Reduce函数之间传递数据。我们唯一需要做的是利用Python的sys.stdin读取输入数据&#xff0c;并把我们的输出传送给sys.stdout。Hadoop流将会帮助我们处理别的…

遗传算法在交通路线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…

python如何判断是否有弹出框_Selenium2+python自动化47-判断弹出框存在(alert_is_present)【转载】...

前言系统弹窗这个是很常见的场景&#xff0c;有时候它不弹出来去操作的话&#xff0c;会抛异常。那么又不知道它啥时候会出来&#xff0c;那么久需要去判断弹窗是否弹出了。一、判断alert源码分析class alert_is_present(object):""" Expect an alert to be pre…

matlab 图像旋转补色,旋转互补色光学错觉

HTML导入代码模板&#xff1a;Choose a colorRedGreenBlueCyanMagentaYellowOrangeYellow greenCyan greenCyan blueVioletRoseOr use system color pickerComplementary color illusionInstructions Stare at the black cross in the middle of the colored circles without m…

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

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

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

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