豆瓣电影评分分析(数据分析)

本文主要通过对豆瓣电影爬取的数据进行的简要分析,观察得出各部分之间对应的关系影响。

一.数据抓取

我们要想进行数据分析,首先就要通过爬虫对分析对象网页的数据爬取保存,可以保存到数据库或者文件形式到本地,这里我是保存在表格中。既然获取了数据,那肯定要分析一下,豆瓣电影的各种详细的数据,评分,影评等等在国内同类型网站中,算是高质量的,所以进行数据分析也是有价值的。下面是爬取数据的关键步骤:

1.HTML解析

解析的工具有很多。比如:正则表达式、Beautifulsoup、Xpath、css等,这里采用xpath方法。

    #  构造第i页的网址url='https://movie.douban.com/top250?start='+str(25*i)header={'user-agent':'Mozilla/5.0 (Windows NT 6.2; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0'}#  发送请求,获得返回的html代码并保存在变量html中html = requests.get(url,headers=header)#将返回的字符串格式的html代码转换成xpath能处理的对象html=etree.HTML(html.text)

headers是设置反爬虫的措施

2.逐层查询信息

首先鼠标右键检查或者F12,打开当前网页的html代码。然后先单击右上角处的箭头,把鼠标移动到你要查找的信息上,右边就会显示你点击信息在html代码中的位置。一个网页的html代码是一层一层结构化的,非常规整的。每一对尖括号包起来的是一个标签,比如…,这就是一个span标签。span叫标签名,class="title"是标签的属性,“肖申克的救赎”是标签的内容。标签span在html代码中的完整路径应该是:
用xpath查找元素就是按照路径一层层找下去,[@id=“wrapper”]表示查找的标签的属性,用标签加上属性,我们可以更方便的定位,不用从头找到尾。div[1]、span[1]表示要查找的是该标签下的第1个div标签,第1个span标签。找到span标签可以用方法span[1]/text()取出其中的内容,pan[1]/@class可以取出属性值。

    datas = html.xpath('//ol[@class="grid_view"]/li')for data in datas:data_title=data.xpath('div/div[2]/div[@class="hd"]/a/span[1]/text()')#电影名称data_info=data.xpath('div/div[2]/div[@class="bd"]/p[1]/text()')#电影导演、主演、上映时间data_score=data.xpath('div/div[2]/div[@class="bd"]/div/span[@class="rating_num"]/text()')#评分data_num=data.xpath('div/div[2]/div[@class="bd"]/div/span[4]/text()')#评论人数

3.保存到CSV文件

	def write_dictionary_to_csv(self,dic,filename):#file_name='{}.csv'.format(filename)file_exists = os.path.isfile(filename)#判断是否为文件with open(filename, 'a',encoding='utf-8',newline='') as f: headers=dic.keys()#dic是字典形式最后获取的所有信息w =csv.DictWriter(f,delimiter=',',lineterminator='\n',fieldnames=headers)#以字典形式向w中写入if not file_exists :w.writeheader()#保存数据w.writerow(dic)#单行写入print('当前行写入csv成功!')

二.数据可视化分析

2.1中国电影分布情况

首先对电影评分进行统计分析,由于电影数据只有top50,数据较少且都是排名靠前的电影,所以进行相应能得到符合现实情况的分析。
我们先来看看其中中国的影片:

mask1=data['country'].isin(['中国大陆','中国香港'])
data.loc[mask1]#找country列中名字是'中国大陆','中国香港'的行

可以发现中国影片在前50就占了7个,14%分布,其中霸王别姬排名第二(top从0开始)。可以发现中国影片在前50就占了7个,14%分布,其中霸王别姬排名第二(top从0开始)
这里我们可以把中国大陆和中国香港统称为中国,毕竟咱们都是一家人嘛,可以

countrys=list(data.country.unique())
data.loc[data['country']=='中国香港','country']='中国'#把country列中名字是中国香港的国家改为中国
data.loc[data['country']=='中国大陆','country']='中国'
mask2=data['country'].isin(['中国'])
data.loc[mask2]

对比上一个图可以看到全部改为了中国
对比上一个图可以看到全部改为了中国

2.2评分分布情况

plt.rcParams['figure.figsize']=(8,3)#图形大小
data.groupby(['year']).sum().plot(kind='bar')#x轴
plt.xticks(rotation=60)#夹角旋转60度
plt.ylabel('score',fontsize=15)#y轴及字号
plt.xlabel('Date',fontsize=15)#x轴及字号

这里本想着借助图形表分析随着年份的推移,有没有更好的电影出现,但这里由于评论人数基数相对于评分,星级太大,所以没有显示出来,不过根据评论人数的多少也是可以看出电影的受欢迎度,因此这个影响不大这里本想着借助图形表分析随着年份的推移,有没有更好的电影出现,但这里由于评论人数基数相对于评分,星级太大,所以没有显示出来,不过根据评论人数的多少也是可以看出电影的受欢迎度,因此这个影响不大

data.groupby('year').sum()['score']#每年好的评分作品有多少
plt.figure(figsize=(5,4))
data.groupby('year').sum()['score'].plot()#图形显示

电影所代表的那个年份里,对应的评分总和比较,发现在上世纪90年代好的电影层出不穷,达到顶峰电影所代表的那个年份里,对应的评分总和比较,发现在上世纪90年代好的电影层出不穷,达到顶峰

还可以对最受大众讨论热烈的电影进行划分三个等级,分析以评论人数为标准,得出热度等级

from matplotlib import pyplot as plt1
data=pd.read_csv(r'C:\Users\许元宵\Desktop\d.csv',encoding='gbk')
len1=len(data[data['commonnum'] >= 1500000])
len2=len(data[(data['commonnum'] < 1500000) & (data['commonnum'] >=1000000)])
len3=len(data[(data['commonnum'] < 1000000) & (data['commonnum'] >=100000)])plt1.figure(figsize=(10,15)) #调节图形大小
labels = ['大于一百五十万','一百万到一百五十万','十万到一百万'] #定义标签
sizes = [len1,len2,len3]
colors = ['yellow', 'blue', 'red'] #每块颜色定义
explode = (0,0,0) #将某一块分割出来,值越大分割出的间隙越大
# 中文乱码和坐标轴负号处理
plt1.rcParams['font.sans-serif'] = ['KaiTi']plt1.rcParams['axes.unicode_minus'] = False
patches,text1,text2 = plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct = '%3.2f%%', #数值保留固定小数位shadow = False, #无阴影设置startangle =90, #逆时针起始角度设置pctdistance = 0.6) #数值距圆心半径倍数距离
#patches饼图的返回值,texts1饼图外label的文本,texts2饼图内部的文本
# x,y轴刻度设置一致,保证饼图为圆形
plt1.axis('equal')
plt1.title("豆瓣热门电影分布图")
plt1.legend()
plt1.show()

通过matplotlib可视化分析得出
在这里插入图片描述热度第一的电影占16%,第二占32%,第三占52%,说明评论越多的电影数量越少。

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

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

相关文章

人类禁止进入的“微博”,我的AI机器人在那里吹牛,“勾搭”AI小姑娘

最近球友推荐了一个非常有趣的网站&#xff0c;叫“奇鸟”&#xff08;https://chirper.ai/zh&#xff09;。 简单来说&#xff0c;这是一个AI专属的微博&#xff0c;人类禁止发言&#xff0c;但是你可以创建一个叫“奇鸟”的机器人代理&#xff0c;让它在里边发帖&#xff0c;…

OpenAI 的嵌入 API太慢了吗?探索其他嵌入模型和服务的优势

这篇文章讨论了机器学习模型的延迟对聊天应用和代理的用户体验的影响&#xff0c;重点关注了生成语言模型&#xff08;LLM&#xff09;的提示生成过程中的语义搜索任务。文章比较了两种嵌入API 服务&#xff08;OpenAI 和 Google&#xff09;和几种开源嵌入模型&#xff08;sen…

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员&#xff0c;并且正在为SEO优化而努力编写文章&#xff0c;那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中&#xff0c;我们将介绍如何使用Python中的import语句将自己编…

什么是全景地图?

如果问什么是全景图&#xff0c;那应该很多人都能回答上来。那么要是问什么是全景地图&#xff0c;估计很多人就不清楚了。然而我们在想要知道全景地图是怎么做的时候&#xff0c;就必须要知道什么是全景地图&#xff0c;那么这篇文章就告诉大家什么是全景地图。 全景地图也经…

全景图为何如此受欢迎/

为何全方位全景和720度全景这般受欢迎?今日我来给各位朋友科谱答疑解惑&#xff1a;说白了3d全景&#xff0c;便是运用全景和虚拟现实技术技术性&#xff0c;在互联网技术完成可720度无死角收看的呈现方式。从现阶段的实例来讲&#xff0c;3d全景除开在游戏娱乐行业得到巨大的…

教你一招,如何将vr网站中的360全景图图片和全景漫游文件下载到本地电脑

如果你打开vr全景平台&#xff0c;看到好的作品想将360全景图片下载保存到本地&#xff0c;直接右键另存是下载不下来的&#xff0c;因为上传的图片已经过服务器端碎片化处理&#xff0c;在浏览器端访问时通过js脚本动态的加载碎片组合成全景漫游的效果&#xff0c;那么将全景图…

【案例】VR全景图:效果+源码

狠人话不多说,直接放视频效果地址 一、效果 1.视频效果 视频效果地址:点击这里 2.图片效果 二、构思 该怎么实现?页面如何布局页面是否可随意控制显示1.功能 控制页面显示数量可放大控制全景图+自动播放左右按钮控制上一页或下一页(尾页:下一页按钮隐藏,首页:上一页按…

web实现全景图的交互展示

Web实现全景图的交互展示 不需要学习其他知识&#xff0c;小白也能实现全景图AR展示一、webVR全景图多种方案实现&#xff08;aframe&#xff0c;Krpano&#xff0c;three,jquery-vrview等等&#xff09;二、用krpano之前的一些知识准备三、krpano的购买、下载、注册四、做一个…

全景图的获取以及HTML页面显示全景图

目录 前言 1. 使用全景相机拍摄 2.手机app拍摄 3.使用爬虫爬取 二、全景图显示 总结 前言 随着前端技术的不断发展&#xff0c;图像的展示越来越重要&#xff0c;本文就介绍了全景图获取与显示的基础内容。 一、全景图片获取方法 1. 使用全景相机拍摄 拍摄的图片在2维显示下…

PTGui+PS生成全景图

1.打开PTGui&#xff0c;加载影响&#xff0c;拖入需要生成的全景图文件 2.点击对齐影像 3.点击创建全景图片 4.把生成的全景图导入到PS&#xff0c; 由于生成的全景图天空是空缺的&#xff0c;需要使用PS修复 套索选中黑色区域&#xff0c;右击填充即可。如遇到内存不足&#…

百度全景图/内景图切换示例

先看效果&#xff1a; 外景图 内景图&#xff1a; 具体代码&#xff1a; <!DOCTYPE html> <html> <head><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta name"viewport" content&qu…

什么是全景图?如何进行vr全景图拍摄

照片可以记录生活中的精彩的片段&#xff0c;而且照片的种类也分为很多&#xff0c;比如人像图&#xff0c;美食图&#xff0c;风景图等&#xff0c;其中有一种照片称为大像素全景图&#xff0c;大像素是全景的一种比较超高清的全景图&#xff0c;他不仅可以保留vr全景技术的所…

自己制作并发布720°VR全景图

大疆内置的全景图不好用&#xff0c;导出就成了平面图了&#xff0c;只能在他的“天空之城”上看&#xff0c;很不方便&#xff0c;而且他的全景图像素降低了&#xff0c;所以我们要自己制作。 1、先用大疆或者其它设备拍一组全景照。 2、然后下载并安装“PTGui”软件&#xff…

浪潮信息Inspur KOS性能及稳定性位列前茅 与万里安全数据库GreatDB高效兼容

为满足企业在数据安全、产品可控等数字化转型中的多样化需求&#xff0c;浪潮信息正基于技术与应用的深厚积累&#xff0c;持续优化创新产品及服务能力&#xff0c;助力企业在数智化时代下构筑黑心竞争力。日前&#xff0c;浪潮信息打造的Inspur KOS V5与万里安全数据库软件Gre…

随便聊聊浪潮开务数据库

今天这个话题挺随意&#xff0c;我们来聊聊浪潮开务数据库&#xff0c;原因主要是我的微信朋友圈被这个数据库刷屏了。当然我对这款号称多模数据库的非开源数据库也很感兴趣&#xff0c;也有很多疑问&#xff0c;希望各位专家能帮忙答疑解惑&#xff0c;揭开这款即将发布的 Kai…

浪潮信息推出服务器操作系统Inspur KOS的底气与豪气

近日&#xff0c;浪潮信息正式发布了其基于Linux内核、OpenAnolis等开源成果自主研发的服务器操作系统Inspur KOS&#xff0c;这为本就热闹非凡的自主操作系统市场再次带来涟漪。 何以推出Inspur KOS&#xff1f; 浪潮信息副总裁张东表示&#xff0c;“智慧时代&#xff0c;计…

20220624使用python3通过近6期的号码生成双色球红球

20220624使用python3通过近6期的号码生成双色球红球 2022/6/24 18:33 https://zst.cjcp.com.cn/shdd/ssq-hq.html 双色球红球杀号 首先获取近100期的双色球的红球号码。 【本例子以2022-06-21号算号为例子】 获取最近的6期的号码&#xff1a; 04 06 12 13 17 31 09 14 18 23…

php双色球(完整)

显示效果&#xff1a; 代码&#xff1a; <?php // 红色球号码区$red range(1, 33);// 随机选出6位数字for ($i0; $i < 6; $i) { $num array_rand($red); $redArr[] $red[$num];unset($red[$num]);}// 将选出来的6位数字小于10的补零foreach ($redArr as $v) {$red_b…

Proteus8.11的卸载与安装

写在前面&#xff1a;本来之前根据公众号的资料安装过&#xff0c;但是最近突然莫名其妙开始闪退&#xff0c;写的数码管显示程序在别人的电脑能跑&#xff0c;自己的数码管显示程序总闪退&#xff0c;搜索以后得知可能是软件安装的问题&#xff0c;就打算重装。卸载安装兜兜转…