【數據分析】豆瓣電影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.pswp.cn/news/455651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/455651.shtml
英文地址,請注明出處:http://en.pswp.cn/news/455651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

sqlmap的二次開發

1、sqlmapapi的幫助信息。 -s 啟動sqlmap作為服務器 -h 指定sqlmap作為服務器的IP地址,默認127.0.0.1 -p 指定sqlmap服務器的端口,默認端口為8775 2、啟動服務 瀏覽器訪問: 3、api介紹:sqlmap項目下的api.py文件含有所有的api adm…

Django創建第一個應用

Django創建第一個應用 1,創建應用 Django自帶一個實用程序,可以自動生成應用程序的基本目錄結構,因此您可以專注于編寫代碼而不是創建目錄。 要創建您的應用程序,請確保您與目錄位于同一目錄,manage.py 并鍵入以下命令&#xff1…

docker nginx配置_docker隨手筆記第十二節 jenkins+docker+nginx+純靜態頁面配置

docker隨手筆記第一節 docker概念及安裝docker隨手筆記第二節 docker常用命令解析docker隨手筆記第三節 docker構建java鏡像docker隨手筆記第四節 docker安裝mysql5.7docker隨手筆記第五節 docker安裝redis4.0docker隨手筆記第六節 docker安裝jenkinsdocker隨手筆記第七節 jenk…

【機器學習】邏輯斯蒂回歸原理

邏輯斯蒂函數 引入: 在線性感知器算法中,我們使用了一個f(x)x函數,作為激勵函數,而在邏輯斯蒂回歸中,我們將會采用sigmoid函數作為激勵函數,所以它被稱為sigmoid回歸也叫對數幾率回歸(logistic …

。。。。。etc 時域錯誤隱藏個人理解

三個文件名以 erc 開頭的文件就是 EC 相關的文件。EC 的入口在 exit_picture 函數中,從 ercStartSegment 開始到 ercConcealInterFrame 結束。你自己做一個丟包之后的碼流,把程序跑起來跟蹤一下 EC 過程,慢慢分析代碼。 錯誤隱藏過程在整個幀…

手機影音第十一天,顯示視頻緩沖,顯示卡頓時的網速,播放系統視頻時調用播放器的選擇...

代碼已經托管到碼云,有興趣的小伙伴可以下載看看https://git.oschina.net/joy_yuan/MobilePlayer一、設置視頻緩沖進度顯示視頻播放進度的效果圖如下:灰色的是緩沖的進度。原理:只有播放網絡視頻時,才有緩沖這個說法,所…

Django之創建應用以及配置路由

Django之創建應用以及配置路由 配置所有IP都可以訪問你的項目 1.進入manage.py同級的my_web里面的settings.py的文件 2.在文件的第28行把ALLOWED_HOSTS []改成ALLOWED_HOSTS [*] 注意:*代表的是所有IP都可以訪問 創建一個app應用 在終端中,結束項目…

python中opencv是什么_python-opencv的用法

#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import cv2 # 接收兩個參數,一個是文件名,一個值,如果值為1,接收的是彩色圖片,如果值為零,接受的是灰度圖片。會有一個返回值&#xff0c…

openjudge 14:求10000以內n的階乘

14:求10000以內n的階乘 總時間限制:5000ms內存限制:655360kB描述求10000以內n的階乘。 輸入只有一行輸入&#xff0c;整數n&#xff08;0<n<10000&#xff09;。輸出一行&#xff0c;即n!的值。樣例輸入100 樣例輸出933262154439441526816992388562667004907159682643816…

【Tensorflow】卷積神經網絡實現藝術風格化通過Vgg16實現

卷積神經網絡實現藝術風格化 基于卷積神經網絡實現圖片風格的遷移&#xff0c;可以用于大學生畢業設計基于python&#xff0c;深度學習&#xff0c;tensorflow卷積神經網絡&#xff0c; 通過Vgg16實現&#xff0c;一幅圖片內容特征的基礎上添加另一幅圖片的風格特征從而生成一幅…

抗誤碼技術

抗誤碼技術&#xff1a; 視頻傳輸過程中的錯誤是不可避免的&#xff0c;抗誤碼技術歷來都足視頻領域一個研究的熱點。H264標準繼承r以前視頻編碼標準中某些優秀的錯誤恢復工具&#xff0c;同時也改進和創新了多種錯誤恢復丁具。這些錯誤恢復的工具主要有&#xff1a;參數集、數…

Linux統計文件行數、字數、字節數

2019獨角獸企業重金招聘Python工程師標準>>> 語法&#xff1a;wc [選項] 文件 說明&#xff1a;該命令統計給定文件中的字節數、字數、行數。如果沒有給出文件名&#xff0c;則從標準輸入讀取。wc同時也給出所有指定文件的總統計數。字是由空格字符區分開的最大字符…

tkinter中鼠標與鍵盤事件

tkinter中鼠標與鍵盤事件&#xff08;十五&#xff09; 本文轉自Tynam Yang的博客園 import tkinterwuya tkinter.Tk() wuya.title("wuya") wuya.geometry("300x2001020")bt tkinter.Button(wuya,text鼠標進入打印) bt.pack()def func(event):print(鼠…

html解析のBeautifulSoup

引子&#xff1a; 使用python爬蟲對爬取網頁進行解析的時候&#xff0c;如果使用正則表達式&#xff0c;有很多局限&#xff0c;比如標簽中出現換行&#xff0c;或者標簽的格式不規范&#xff0c;都有可能出現取不到數據&#xff0c;BeautifulSoup作為一個專門處理html格式的py…

【Tensorflow】人臉128個關鍵點識別基于卷積神經網絡實現

引言&#xff1a; 卷積神經網絡 卷積神經網絡最早是為了解決圖像識別的問題,現在也用在時間序列數據和文本數據處理當中,卷積神經網絡對于數據特征的提取不用額外進行,在對網絡的訓練的過程當中,網絡會自動提取主要的特征.卷積神經網絡直接用原始圖像的全部像素作為輸入,但是內…

python 爬蟲 包_python爬蟲學習之路-抓包分析

利用瀏覽器抓包&#xff0c;是爬蟲中的很實用的技能。在爬蟲編程之前&#xff0c;我們要對抓取的目標頁面有所了解&#xff0c;比如瀏覽器的這個請求這個頁面中間都經歷了什么&#xff0c;數據是怎么發送和返回的。 抓包的作用 我把抓包分析的作用簡單列一下&#xff1a; 分析請…

幀間EC原理和過程

出錯的宏塊&#xff08;圖中灰色表示&#xff09;根據上、下、左、右四個方向相鄰宏塊的不同分割情況及預測類型進行插值。將最后的結果中進行比較&#xff0c;選取邊界像素差值之和最小者為最優的EC方案。其步驟為&#xff1a; 1、判斷相鄰宏塊左上角8*8塊的預測模式是否大于R…

Maven依賴的是本地工程還是倉庫jar包?

相信大家都碰見過maven配置的依賴或者是jar包或者是工程&#xff0c;在開發的過程當中&#xff0c;我們當然需要引入的是工程&#xff0c;這樣查看maven依賴的文件的時候&#xff0c;就能直接查看到源碼。 一、本地工程依賴 舉個例子&#xff0c;其架構如下所示&#xff08;以下…

關于django新版本無法使用MySQL數據庫的問題

關于django新版本無法使用MySQL數據庫的問題 參考這里 稍微記錄下Django2.2使用MariaDB和MySQL遇到的坑 現在演示一下整個流程吧 1.創建項目和應用 PS&#xff1a;你也可以使用PyCharm直接創建項目 2.注冊應用 先把剛剛創建的應用添加進去 3.配置MySQL或者MariaDB 4.PyMySQL替…

[轉]Spring事務tx:annotation-driven/

在使用SpringMVC的時候&#xff0c;配置文件中我們經常看到 annotation-driven 這樣的注解&#xff0c;其含義就是支持注解&#xff0c;一般根據前綴 tx、mvc 等也能很直白的理解出來分別的作用。<tx:annotation-driven/> 就是支持事務注解的&#xff08;Transactional&a…