豆瓣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: 0 title info rating_num comment_num daoyan date guojia juqing
0 1 肖申克的救赎 希望让人自由。 9.7 1682392 导演: 弗兰克·德拉邦特 Frank Darabont主演: 蒂姆·罗宾斯 Tim Robb... 1994 美国 犯罪 剧情
1 2 霸王别姬 风华绝代。 9.6 1244650 导演: 陈凯歌 Kaige Chen主演: 张国荣 Leslie Cheung / 张丰毅 ... 1993 中国大陆 中国香港 剧情 爱情 同性
2 3 阿甘正传 一部美国近现代史。 9.5 1301770 导演: 罗伯特·泽米吉斯 Robert Zemeckis主演: 汤姆·汉克斯 Tom Han... 1994 美国 剧情 爱情
3 4 这个杀手不太冷 怪蜀黍和小萝莉不得不说的故事。 9.4 1495321 导演: 吕克·贝松 Luc Besson主演: 让·雷诺 Jean Reno / 娜塔莉·波... 1994 法国 剧情 动作 犯罪
4 5 美丽人生 最美的谎言。 9.5 760464 导演: 罗伯托·贝尼尼 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()


如需数据 请关注公众号 后台回复 :豆瓣电影
即可获取~

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

  1. Colly实现豆瓣电影Top250爬取

    使用 Colly 实现 豆瓣电影Top250爬取 package mainimport ("encoding/csv""github.com/PuerkitoBio/go ...

  2. Python爬取天气数据及可视化分析!

    来源丨Python之王 Python爬取天气数据及可视化分析 说在前面 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本 ...

  3. Python爬取天气数据及可视化分析

    Python爬取天气数据及可视化分析 文章目录 Python爬取天气数据及可视化分析 说在前面 1.数据获取 请求网站链接 提取有用信息 保存csv文件 2.可视化分析 当天温度变化曲线图 当天相对湿 ...

  4. easyui datalist 不显示数据_爬虫练习——豆瓣电影信息爬取及数据可视化

    最近自学了简单的爬虫项目,简单记录下自己的小白学习路径. 本次爬取的是豆瓣电影TOP250数据,主要用到beautifulsoup.re.urllib库.SQLite包,数据可视化方面主要用到flas ...

  5. Python爬取天气数据及可视化分析(附源码)

    大家好,我是辰哥(文末送书) 天气预报我们每天都会关注,我们可以根据未来的天气增减衣物.安排出行,每天的气温.风速风向.相对湿度.空气质量等成为关注的焦点.本次使用python中requests和Be ...

  6. 豆瓣电影TOP250爬取,并获得相关类型的推荐

    import requests import random from bs4 import BeautifulSoup import lxml ''' https://movie.douban.com ...

  7. 豆瓣电影TOP250爬取

    import requests from pyquery import PyQuery as pq url = 'https://movie.douban.com/top250?start=' def ...

  8. python爬取豆瓣电影top250_利用python爬取豆瓣电影Top250,并把数据放入MySQL数据库...

    在学习了python基础后,一心想着快速入门爬虫,因为我就是为爬虫而学的python,所以就找了这个豆瓣电影来爬取.好了,废话不多说,进入正题 1.找到网页并分析网页结构 首先进入豆瓣电影Top250 ...

  9. 爬虫入门——电影top250爬取

    爬虫入门(自用) 第一篇 Python 爬虫入门之 电影top250爬取 文章目录 爬虫入门(自用) 前言 一.前置知识 requests库 正则表达式(re库) 二.使用步骤 1.引入库 2.小试牛 ...

  10. JAVA爬虫(一):豆瓣电影排行榜爬取

    JAVA爬虫(一):豆瓣电影排行榜爬取 前言 流程图 步骤 一.爬取豆瓣电影榜单网页源代码 二.网页源码解析 三.爬取单个电影网页源码 四.源代码解析及关键信息获取 前言 最近和大创队友一起给大创做的 ...

最新文章

  1. python中的运算符举例_举例讲解Python中的算数运算符的用法
  2. 用好这 12 款 Chrome 扩展,让你的「新标签页」变得好看又实用
  3. 计算机5G英语文献,无线通信英文参考文献精选
  4. Trilogy公司的笔试题:根据指定规则用最少的步骤将数转为1
  5. wxWidgets:wxRibbonGallery类用法
  6. hp服务器如何ghost系统,惠普(HP)电脑安装不了GHOST系统的解决办法
  7. Office 365 机器人(Bot)开发入门
  8. 三星 安装程序无法将 配置为此计算机,三星手机怎么安装软件 三星手机无法安装软件解决办法...
  9. 计算机英语词汇输入,常用计算机英语词汇:BIOS
  10. Maven 使用本地Tomcat9 一键启动和热部署
  11. win10 -- 增加新建 TXT 文档快捷键
  12. PIL中的paste方法拼接透明背景照片
  13. 前端程序员应该理解的reduce方法,对你的js能力很有帮助
  14. php unlink 无法删除,php unlink 删除问题
  15. DNS劫持是什么意思?DNS被劫持怎么办?dns被劫持了怎么处理
  16. c程序设计语言第五单元,一年级语文下册第五单元教案
  17. 中兴光猫不拆机获取超级密码
  18. Yuga Labs大举扩张,“猿”宇宙已经不远了?
  19. 4.SVG 矩形(rect)
  20. [SpringBoot的@Async注解和关键字synchronized的使用]

热门文章

  1. atomic 内存序_C++11的原子量与内存序浅析
  2. 如何加声调口诀_拼音声调怎么标口诀
  3. 浅谈数据挖掘与机器学习
  4. 音频合并软件有哪些?推荐3个软件教你如何合并音频
  5. Esp8266对接阿里云物联网远程实时温度监控{探讨帖}
  6. 安全电子签章密码技术规范_最新|8项网络安全国家标准详情公布!10月1日正式实施(附8项标准全文)...
  7. 在校大学生如何申请免费教育版 Intellij IDEA
  8. 自助取号机应用-排队叫号机优势介绍
  9. excel中的联系方式导入手机电话簿
  10. [2007-03下](Lgz独家秘笈)利用ACDSee5编辑,归档多部DC拍摄的图片