【数据分析】豆瓣电影Top250爬取的数据的可视化分析

豆瓣Top250网址 将之前爬取到的豆瓣电影进行简单的可视化: 数据列表保存为CSV格式,如图

在这里插入图片描述

导入数据 做好准备

#!-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
import re
from numpy import rank
from builtins import map
from datashape.coretypes import Map
#http://www.jianshu.com/p/0a76c94e9db7 参考了简书上的饼状图教程
#切换工作目录,IPython运行%pylab
Movie=pd.read_csv('./doubanmovietop.csv') #数据读取

检查数据头

Movie.head()
Unnamed: 0titleinforating_numcomment_numdaoyandateguojiajuqing
01肖申克的救赎希望让人自由。9.71682392导演: 弗兰克·德拉邦特 Frank Darabont主演: 蒂姆·罗宾斯 Tim Robb...1994美国犯罪 剧情
12霸王别姬风华绝代。9.61244650导演: 陈凯歌 Kaige Chen主演: 张国荣 Leslie Cheung / 张丰毅 ...1993中国大陆 中国香港剧情 爱情 同性
23阿甘正传一部美国近现代史。9.51301770导演: 罗伯特·泽米吉斯 Robert Zemeckis主演: 汤姆·汉克斯 Tom Han...1994美国剧情 爱情
34这个杀手不太冷怪蜀黍和小萝莉不得不说的故事。9.41495321导演: 吕克·贝松 Luc Besson主演: 让·雷诺 Jean Reno / 娜塔莉·波...1994法国剧情 动作 犯罪
45美丽人生最美的谎言。9.5760464导演: 罗伯托·贝尼尼 Roberto Benigni主演: 罗伯托·贝尼尼 Roberto...1997意大利剧情 喜剧 爱情 战争

豆瓣电影Top250在这里插入图片描述评分的分布饼图代码:

#Rating pie
Rating=Movie['rating_num']
bins=[8,8.5,9,9.5,10]  #分区(0,8],(8,8.5]....
rat_cut=pd.cut(Rating,bins=bins)
rat_class=rat_cut.value_counts()  #统计区间个数
rat_pct=rat_class/rat_class.sum()*100  #计算百分比
rat_arr_pct=np.array(rat_pct)#将series格式转成array,为了避免pie中出现name
f1=plt.figure(figsize=(9,9))
plt.title('DoubanMovieTop250\nRatingDistributin(0~10)')
plt.pie(rat_arr_pct,labels=rat_pct.index,colors=['r','g','b','c'],autopct='%.2f%%',startangle=75,explode=[0.05]*4)  #autopct属性显示百分比的值
plt.savefig('MovieTop250.RatingDistributin(0~10).png')
f1.show()
#explode:将某部分爆炸出来, 使用括号,将第一块分割出来,数值的大小是分割出来的与其他两块的间隙
#labeldistance,文本的位置离远点有多远,1.1指1.1倍半径的位置
#autopct,圆里面的文本格式,%3.1f%%表示小数有三位,整数有一位的浮点数
#shadow,饼是否有阴影
#startangle,起始角度,0,表示从0开始逆时针转,为第一块。一般选择从90度开始比较好看
#pctdistance,百分比的text离圆心的距离
#patches, l_texts, p_texts,为了得到饼图的返回值,p_texts饼图内部文本的,l_texts饼图外label的文本

电影出品年的分布饼图:在这里插入图片描述

#year pie
year=Movie['date']
for i in year.index:if len(year[i])>4:year.drop(i,inplace=True)  #  year.drop(i,inplace=True)  去除多个年代的特例,inplace重要,修改改变原值
year=year.astype(int)
bins=np.linspace(min(year)-1,max(year)+1,10).astype(int)  #产生区间,bins一般为(,]的,所以+1
year_cut=pd.cut(year,bins=bins)
year_class=year_cut.value_counts()
year_pct=year_class/year_class.sum()*100
year_arr_pct=np.array(year_pct)
color=['b', 'g', 'r', 'c', 'm', 'y', (0.2,0.5,0.7), (0.6,0.5,0.7),(0.2,0.7,0.1)]  #RGB 0-1之间的tuple
f2=plt.figure(figsize=(9,9))
patches,out_text,in_text=plt.pie(year_arr_pct,labels=year_pct.index,colors=color,autopct='%.2f%%',explode=[0.05]*9,startangle=30)
plt.title('MovieTop250\nYears Distribution')
f2.show()
# plt.savefig('MovieTop250_YearsDistribution.png')

豆瓣电影Top250,电影排名&评价人数&电影评分的散点图:

在这里插入图片描述

#评价人数 
rank=np.array(Movie.index,dtype=int)+1 #index start from 0 
Movie['0']=rank
f3=plt.figure(3,figsize=(12,10))
plt.scatter(x=Movie['0'],y=Movie['comment_num'],c=Movie['rating_num'],s=80)
plt.title('Douban Movie\nRank and Rating People by Rating',fontsize=20)
plt.xlabel('Rank',fontsize=15)
plt.ylabel('Rating People',fontsize=15)
plt.axis([-5,255,0,750000])  #x轴坐标范围
plt.colorbar()  #显示colorbar
plt.savefig('DoubanMovie_Rank_and_RatingPeople_by_Rating.png')
plt.show()

按电影国家分类柱状图在这里插入图片描述

#!-*- coding:utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pylab as plt
from matplotlib.font_manager import FontProperties  #fontproperties的模块,pyde自动添加的,好评Movie=pd.read_csv('./doubanmovietop.csv',encoding='utf-8')
country_iter=(set(x.split(' ')) for x in Movie['guojia']) #generator生成器,分解字符串
countries=sorted(set.union(*country_iter)) #Return the union of sets as a new set.
#*country_iter:This works for any iterable of iterables.
df=pd.DataFrame(np.zeros((len(Movie),len(countries))),columns=countries)#创建一个0DataFrame,np.zeros()内为要tuple
for i,gen in enumerate(Movie['guojia']): df.ix[i,gen.split(' ')]=1  #第i条数据的country置为1
num_of_country=df.sum() 
# print(num_of_country)
num_of_country[4]=num_of_country[1]+num_of_country[2]+num_of_country[4]  #(1964中国大陆中国大陆重映)和中国大陆合并
# num_of_country.pop('中国')
# print(num_of_country)
num_of_country.sort_values(inplace=True,ascending=False)
f1=plt.figure()
for i,gen in enumerate(num_of_country[:10]):plt.bar(i,gen)   #i为bar的起始横坐标,gen为纵坐标,宽度默认
names=list(num_of_country.index)
plt.xticks(np.arange(10),names,fontproperties='SimHei',rotation =60)  #在图中显示中文字符要加上fontproperties='SimHei'
plt.ylabel('Movie Number')
plt.title('Douban Movie\nMovie Distribution by Countries')
# plt.savefig('Movie_Distribution_by_Countries.png')
f1.show()#因为有些影片为多国合作的,也算各自国家的吧。
#过滤了很多只有一两部的国家,果然还是美帝有金坷垃,亩产一万八

影片类型分布柱状图:在这里插入图片描述

genre_iter=(set(x.split(' ')) for x in Movie['juqing'])
genre=sorted(set.union(*genre_iter))
frame=pd.DataFrame(np.zeros((len(Movie),len(genre))),columns=genre)
for i,gen in enumerate(Movie['juqing']):frame.ix[i,gen.split(' ')]=1
genre_sum=frame.sum()
genre_sum.sort_values(inplace=True,ascending=False)
f2=plt.figure(2)
'''for i,gen in enumerate(genre_sum[:8]):plt.bar(i,gen)
names=list(genre_sum.index)
plt.xticks(np.arange(8)+0.4,names,fontproperties='SimHei')
plt.show()'''
#改进的方法
p2=plt.bar(np.arange(8),genre_sum.values[:8],align='center') #p2包含8个元素,每个对应一个bar
names=list(genre_sum.index)
plt.xticks(np.arange(8),names,fontproperties='SimHei')
plt.legend((p2[0],),('MovieNumber',)) #只有一个元素的tuple应写成(ele,)
plt.ylabel('Movie Number')
plt.title('Douban Movie\nDistribution by Genre')
#plt.savefig('Movie_Distribution_by_Genre.png')
plt.show()

在这里插入图片描述
如需数据 请关注公众号 后台回复 :豆瓣电影
即可获取~

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

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

相关文章

1984-1999:中国电影的黄金十五年

https://www.toutiao.com/a6711956018126914059/ 2019-07-10 18:11:26 1984年6月,在黄土高原的群山之间,电影《黄土地》剧组的工作人员大声呼喊着一个人的名字。 他们在寻找这部电影的摄影师张艺谋。 这是张艺谋第二次担任电影摄影师,不久前…

ELK 可视化分析热血电影《长津湖》15万+影评

1、《长津湖》观后 2018 年有了孩子后,近 3 年没有再看过电影。 念于《长津湖》的确大热,我对战争片心念神往、对中国近现代史非常好奇,加上老婆的男神段奕宏参演。一拍即合,我俩在国庆假期的最后一天看了这部鸿篇巨制、热血催泪电…

python爬取百部电影数据,我分析出了一个残酷的真相

2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线…

214 情人节来袭,电视剧 《点燃我温暖你》李峋同款 Python爱心表白代码,赶紧拿去用吧

大家好,我是徐公,六年大厂程序员经验,今天为大家带来的是动态心形代码,电视剧 《点燃我温暖你》同款的,大家赶紧看看,拿去向你心仪的对象表白吧,下面说一下灵感来源。 灵感来源 今天&#xff…

ChatGPT提示词分享1/100 写作助手

作为一名中文写作改进助理,你的任务是改进所提供文本的拼写、语法、清晰、简洁和整体可读性,同时分解长句,减少重复,并提供改进建议。请只提供文本的更正版本,避免包括解释。请从编辑以下文本开始:[文章内容…

家庭教育的重要性,家庭教育是一切教育的基石

在孩子整个教育的过程中,学校教育是处于主导地位的,而家庭教育起着关键的作用。 家庭教育,是国民教育体系的重要组成部分,是社会、学校教育的基础、补充和延伸。家庭教育伴随人的一生,影响人的一生,对一个…

关注家庭教育-父母对子女的期望

关注家庭教育 - 孩子有自己的追求 文章目录 关注家庭教育 - 孩子有自己的追求简要正文期望家庭教育公众号 简要 人对自己的子女都免不了有一些期望。我们对子女实际上只能存品德方面的期望,因为品德它是放之四海而皆准的。你可以希望你的小孩以后长大待人很热忱&am…

如何才能做好家庭教育?家庭教育的五个主要方面

家庭教育的重要性家庭教育自古以来就受到人们的关注,但近年来在中国被作为一门学科来研究。这是时代发展、人才需求、人民整体素质提高必须涉及的问题。在这里,我们和家长一起探讨家庭教育的重要性,让家庭、社会、教育部门共同承担起教育下一…

家庭教育中如何使用批评教育?

孩子做错了事,作为父母,你知道应该怎么批评孩子吗?在家庭教育中,如果批评用得不好,就会比较麻烦,会严重限制孩子的发展。 在一次线下活动中,我看到一个妈妈带着孩子,准备进行乐器表演&#xff…

使用tushare大数据平台对几种股票因子进行计算

写在前面 去年七月,笔者开始接触买入股票,近一年下来,投入的的钱亏了一半,股票市场不是基金市场,其中的残酷给我这个初来乍到的年轻人上了一课。当时,我就在想,买卖股票是否能够赚钱&#xff0c…

利用tushare获取股票数据-V2 +股票数据分析

一、利用tushare获取股票数据 上次利用tushare的API获取了一部分的数据,感觉不够齐全,所以现在更新程序 import tushare as ts import pandas as pdpro ts.pro_api() data pro.query(stock_basic, exchange, list_statusL, fieldsts_code) #实例化一个…

免费获取股票历史交易数据方法与代码获取股票实时数据方法集合

现在网上有越来越多开源的股票数据的获取方法,言简意赅,小编在这里提供2种方法去获取股票数据,第一种呢还是针对于所有的用户,通过使用第三方平台提供的方法来获取到所需要的股票数据。 方法一:使用免费的网站进行 详…

获取股票交易数据的Tushare的使用方法

博客:https://www.cnblogs.com/DreamRJF/p/8660630.html 以前不知道怎么从网上直接获取数据,都是从交易软件上下载数据,也只有个别的软件才能下载,例如通达信可以导出数据,现在学到了一种新的方法,利用tush…

四万字歌词分析:那些年,我们一起追的五月天到底在唱什么?

大数据文摘出品 作者:蒋宝尚、曹培信 你见过自带荧光棒、中途大合唱、放完不离场的电影观众么? 如果你去电影院看了《五月天人生无限公司》,那么,你一定明白文摘菌在说什么。 如果你还没有看过,文摘菌这里弱剧透一下&a…

歌词生成(一)-SongNet简述

歌词生成相较于普通文本生成,需要配合特定的乐曲,并演唱。因而要求,每句歌词演唱的长度正好合拍,即不同曲子,每句歌词的字符个数是要受限制于乐曲。 本文暂不考虑曲配词问题,只是将问题抽象为,…

Android 开源歌词控件 LyricViewX

Android 开源歌词控件 LyricViewX 开源地址 Github https://github.com/Moriafly/LyricViewX LyricViewX 是一个美观的安卓歌词控件。 基于 LrcView 设计。 效果展示 Dso Music Github https://github.com/Moriafly/DsoMusic 双语 拖动 单语 比较与 LrcView 100% Kotlin…

如何获取LRC歌词

在日常的剪辑或者是其他情况下,需要使用LRC歌词,不需要下载新的杂门软件就能获取lrc歌词,真的很心动了,这里以网易云音乐为例: 1、打开网易云音乐网页版,找到需要的歌词 2、按F12键,选择 Netwo…

从ChatGPT等大模型的兴起,看未来计算芯片的发展趋势

欢迎关注软硬件融合公众号: 编者按 ChatGPT的火爆,直接引爆了大模型的繁荣,也使得NVIDIA GPU供不应求。 从发展的角度看,GPU并不是大模型最高效的计算平台。 GPT等大模型为什么没有突破万亿参数?核心原因在于在现在的G…

GPU和CPU芯片区别:为何要用GPU挖矿?

CPU和GPU之所以大不相同,是由于其设计目标的不同,它们分别针对了两种不同的应用场景。CPU需要很强的通用性来处理各种不同的数据类型,同时又要逻辑判断又会引入大量的分支跳转和中断的处理。这些都使得CPU的内部结构异常复杂。而GPU面对的则是…

2023全云在线联合微软AIGC专场沙龙:人工智能与企业创新,促进创造力的数字化转型

6月29日,由全云在线平台和微软联合主办的人工智能与企业创新:促进创造力的数字化转型——2023AIGC微软专场沙龙在广州天河区正佳万豪酒店举行。 关于2023AIGC微软专场沙龙 GPT翻开了AGI新的一页,也翻开了各行各业的新篇章。 2022年11月30日…