【数据分析】豆瓣电影Top250爬取的数据的可视化分析
【数据分析】⾖瓣电影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
pes import Map
#www.jianshu/p/0a76c94e9db7 参考了简书上的饼状图教程
#切换⼯作⽬录,IPython运⾏%pylab
ad_csv('./doubanmovietop.csv')#数据读取
检查数据头
Movie.head()
Unnamed:
title info rating_num comment_num daoyan date guojia juqing
01肖申克
的救赎
希望让⼈⾃由。9.71682392
导演: 弗兰克·德拉邦特 Frank
Darabont主演: 蒂姆·罗宾斯 Tim
<
1994美国
犯罪 剧
12霸王别
姬风华绝代。9.61244650
导演: 陈凯歌 Kaige Chen主演: 张
国荣 Leslie Cheung / 张丰毅 (1993)
中国⼤
陆 中国
⾹港
剧情 爱
情 同性
23阿⽢正
⼀部美国近现代
史。
9.51301770
导演: 罗伯特·泽⽶吉斯 Robert
Zemeckis主演: 汤姆·汉克斯
1994美国
剧情 爱
34这个杀
⼿不太
怪蜀⿉和⼩萝莉不
得不说的故事。
9.41495321
导演: 吕克·贝松 Luc Besson主
演: 让·雷诺 Jean Reno / 娜塔莉
·波...
1994法国
剧情 动
作 犯罪
45美丽⼈
最美的谎⾔。9.5760464
导演: 罗伯托·贝尼尼 Roberto
Benigni主演: 罗伯托·贝尼尼
<
1997意⼤利
剧情 喜
剧 爱情
战争
Unnamed:
title info rating_num comment_num daoyan date guojia juqing
⾖瓣电影
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.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⾃动添加的,好评
ad_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.s((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.title('Douban Movie\nMovie Distribution by Countries')
# plt.savefig('Movie_Distribution_by_Countries.png')
f1.show()
#因为有些影⽚为多国合作的,也算各⾃国家的吧。
#过滤了很多只有⼀两部的国家,果然还是美帝有⾦坷垃,亩产⼀万⼋
影⽚类型分布柱状图:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。