豆瓣Top250熱門電影數據分析

2021-01-11 劉旺學長

豆瓣Top250熱門電影分析

業餘打發時間看電影是個不錯的選擇,但是如果看了一部無聊糟心的電影就得不償失了,所以一些電影方面的榜單就出現了,可以為這些選擇困難患者提供一個不錯的指南,那些是經典是值得看的,而那些電影不值得你浪費一兩個小時的時間。在電影榜單方面,國外最出名的自然是IMDB Top250,這個榜單收集了全球觀眾評選出的最好看的250部電影,國內最知名的榜單應該是豆瓣電影Top250, 主要反映了國內觀眾的觀影品味(雖然有人可能會說豆瓣的觀影品味可能偏文藝一些)。對於這兩個榜單,雖然對部分電影的排名多少有些爭議,但是總體來說大家覺得對著這個榜單看電影,碰到爛片的概率還是較小的。

所以今天我們來對豆瓣Top250熱門電影進行分析

將之前爬取到的豆瓣電影進行簡單的可視化:數據列表保存為CSV格式,如圖

導入數據 做好準備

#!-*- coding:utf-8 -*-import pandas as pdimport numpy as npimport matplotlib.pylab as pltimport refrom numpy import rankfrom builtins import mapfrom datashape.coretypes import Map#http://www.jianshu.com/p/0a76c94e9db7 參考了簡書上的餅狀圖教程#切換工作目錄,IPython運行%pylabMovie=pd.read_csv('./doubanmovietop.csv') #數據讀取檢查數據頭

Movie.head()

豆瓣電影Top250 評分餅狀圖

評分的分布餅圖代碼:

#Rating pieRating=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中出現namef1=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 pieyear=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一般為(,]的,所以+1year_cut=pd.cut(year,bins=bins)year_class=year_cut.value_counts()year_pct=year_class/year_class.sum()*100year_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之間的tuplef2=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']=rankf3=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() #顯示colorbarplt.savefig('DoubanMovie_Rank_and_RatingPeople_by_Rating.png')plt.show()按電影國家分類柱狀圖

#!-*- coding:utf-8 -*-import pandas as pdimport numpy as npimport matplotlib.pylab as pltfrom 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()內為要tuplefor i,gen in enumerate(Movie['guojia']): df.ix[i,gen.split(' ')]=1#第i條數據的country置為1num_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()#因為有些影片為多國合作的,也算各自國家的吧。#過濾了很多只有一兩部的國家,果然還是美帝有金坷垃,畝產一萬八影片類型分布柱狀圖:

影片類型分布代碼:

相關焦點

  • python爬蟲—豆瓣電影top250及數據可視化!
    豆瓣電影top250榜單想必大家都不陌生,上榜的電影都是經過時間的沉澱留下來比較經典。本次教程就是利用requests庫實現對於top250榜單電影數據爬取,並對爬取的數據繪製圖表進行可視化,做簡單的數據分析。文章將分為兩個部分:top250數據爬蟲和數據可視化。
  • 一次性看完【豆瓣電影Top250】
    一部電影或電視劇好不好看,豆瓣評分是個重要的指標。而一部豆瓣評分8分以上的電影,就一定不會太差。
  • Python3爬蟲之豆瓣電影TOP250(requests、Xpath、正則表達式、CSV、二進位數據儲存)
    【1x00】循環爬取網頁模塊觀察豆瓣電影 Top 250,請求地址為:https://movie.douban.com/top250每頁展示25條電影信息,照例翻頁觀察 url 的變化:第一頁:https://movie.douban.com/top250第二頁:https://movie.douban.com/top250
  • 豆瓣電影TOP250在線觀看
    豆瓣電影評分是目前國內參與最多也最有影響力的評分,因此豆瓣的高分電影必定不會令大家失望,今天整理了豆瓣的TOP250電影榜單,點擊可直接觀看
  • 用python分析春節檔熱門電影豆瓣數據——唐探3、刺殺小說家、你好李煥英
    今年春節檔有3部全網討論度比較高的電影——《唐人街探案3》、《你好,李煥英》和《刺殺小說家》,從貓眼實時票房來看,前兩部的票房均已突破30億大關。我從豆瓣上獲取到這三部電影的熱門評論,試著分析下廣大觀眾對這些電影的看法。
  • Python爬蟲經典案例詳解:爬取豆瓣電影top250寫入Excel表格
    soup = BeautifulSoup(html.text, 'html.parser')這句代碼就是說用html解析器(parser)來分析我們requests得到的html文字內容,soup就是我們解析出來的結果。For循環豆瓣頁面上有25部電影,而我們需要抓取每部電影的標題、導演、年份等等信息。就是說我們要循環25次,操作每一部電影。
  • 上映26年後,周星馳的《九品芝麻官》終於進入「豆瓣電影top250」
    《九品芝麻官》登上豆瓣top250,經歷了整整26年而今天要跟大家說的這部電影,也是周星馳眾多作品裡最被低估的存在。可是經過26年之後,終於在今年強勢殺入豆瓣top250榜單,它就是《九品芝麻官》。這部影片的內容,其實不用小編過多的介紹,喜歡周星馳電影的小夥伴們一定是看過這部電影的。
  • Power BI數據可視化|春節檔電影豆瓣影評數據分析
    在上一節中,作者創建了一個包含春節檔電影豆瓣影評的數據表,並使用
  • 豆瓣電影top250幕後的故事-top11《海上鋼琴師》
    這是一部我看了4次,還是沒有看完全部的電影,大概是和我沒有緣分吧。不過這部電影在豆瓣上200多萬人給出了9.3的高分,就一定有它直擊他人內心的地方。 從我看的部分來說,船上的世界對於1900來說,就是一個烏託邦的世界,他的世界裡只剩下了鋼琴和音樂。
  • 豆瓣電影top250幕後的故事--top11《海上鋼琴師》
    這是一部我看了4次,還是沒有看完全部的電影,大概是和我沒有緣分吧。不過這部電影在豆瓣上200多萬人給出了9.3的高分,就一定有它直擊他人內心的地方。從我看的部分來說,船上的世界對於1900來說,就是一個烏託邦的世界,他的世界裡只剩下了鋼琴和音樂。
  • Python爬蟲獲取豆瓣電影並寫入excel
    這篇文章主要介紹了Python爬蟲獲取豆瓣電影並寫入excel ,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值
  • 這5部電影雖然沒在豆瓣top250,但卻是每個優秀年輕人應該看的
    這5部電影雖然沒在豆瓣top250,但卻是每個優秀年輕人應該看的提到電影,想必很多人基本上把豆瓣榜單上的電影快刷個遍,已經看到沒東西看了,今天小編就為大家推薦5部豆瓣top250榜單上,但卻是現在每個優秀的年輕人應該看的電影。值得收藏!1.
  • 豆瓣電影top250幕後的故事--top1《肖申克的救贖》
    1994年,對於影視來說是傳奇的一年,也是世界電影史上最最輝煌的一年。在美國,這一年誕生了《肖申克的救贖》,《阿甘正傳》,《低俗小說》,《獅子王》,《這個殺手不太冷》等等經典電影。這一年,華語影壇也不甘示弱,《大話西遊》,《活著》,《陽光燦爛的日子》,《國產凌凌漆》,《九品芝麻官》等等經典。今天來說說這其中評分第一的《肖申克的救贖》幕後的故事。
  • 不會 Python 沒關係,手把手教你用 web scraper 抓取豆瓣電影 top 250 和 b 站排行榜
    如果要抓取數據,一般使用Python是很方便的,不過如果你還不會推薦使用Chrome擴展 web scraper,下面就分別用Python和 web scraper 抓取豆瓣電影top 250 和b站排行榜的數據。
  • 豆瓣的電影評分靠譜嗎?這個數據分析我服
    文 / 子珂微信公眾號 / 數據冰山不知道有沒有同學看過白日夢想家這部電影?之前看了這部片子,但覺得並不好看,8.3應該是有些偏高了。數據概況對Movieinsider 2008-2014國外上映的電影的榜單(北美為主)做了抓取,拿到豆瓣和IMDB的評分, 總共2000+部
  • 《姜子牙》豆瓣影評的數據分析
    2019年《哪吒之魔童降世》橫空出世,取得了50.7億的票房,總票房達到國產電影第二位,創造了中國動畫電影的一系列紀錄。在哪吒片尾的彩蛋部分,透露了關於《姜子牙》的故事,讓人們對《姜子牙》的上映有所期待。有一句話叫做期待越大,失望越大。如果《姜子牙》沒有滿足人們期待值,反而會產生負面影響。
  • 五年以來,只有這19部電影殺進了豆瓣電影Top250
    豆瓣用戶每天都在對「看過」的電影進行「很差」到「力薦」的評價,豆瓣根據每部影片看過的人數以及該影片所得的評價等綜合數據,通過算法分析產生了一個榜單
  • 豆瓣電影top250榜單_1(手機在線播放)
    豆瓣用戶每天都在對「看過」的電影進行
  • 豆瓣已玩爛,這次我們爬取了IMDB電影Top250後發現...(附原始碼)
    選此題目,一來豆瓣作為爬蟲入門,各種大牛的深入分析已趨於完美;另一方面隨著中國電影工業的發展,我們需要將視角轉向國際市場,通過數據分析,了解一下外國人比較感興趣的電影。・IMDB top250主頁 ,並將其進行存儲用於後續的分析:
  • 豆瓣電影Top250
    如果你是真正的電影迷,你不可能不知道「豆瓣電影TOP250」,這是豆瓣評分最高而且評價人數最多的250部電影,換句話說,也就是大多數人認為最好看的