小白數據分析之「IMDB電影」
項目背景
學習數據分析快三個月了,檢驗下自己的學習成果,試著串聯用學到的知識技能來分析一些實際項目。本次項目針對全球互聯網電影信息,進行探索性分析。
內容簡介
互聯網電影資料庫(Internet Movie Database,簡稱IMDb)是一個關於電影演員、電影、電視節目、電視明星和電影製作的在線資料庫。IMDb的資料中包括了影片的眾多信息、演員、片長、內容介紹、分級、評論等。對於電影的評分目前使用最多的就是IMDb評分。
數據來源
本次數據來源於數據競賽平台kaggle。具體地址如下:https://www.kaggle.com/deepmatrix/imdb-5000-movie-dataset Kaggle是一個數據分析的競賽平台,網址:https://www.kaggle.com/ 企業或者研究者可以將數據、問題描述、期望的指標發布到Kaggle上,以競賽的形式向廣大的數據科學家徵集解決方案,類似於阿里巴巴的天池計劃。Kaggle上的參賽者將數據下載下來,分析數據,然後運用機器學習、數據挖掘等知識,建立演算法模型,解決問題得出結果,最後將結果提交,如果提交的結果符合指標要求並且在參賽者中排名第一,將獲得比賽豐厚的獎金。
關於數據源,如果有現成數據那是極好的,除此之外,還可以自己編寫爬蟲爬取網上數據,或者採用一些爬蟲採集器軟體採集網上數據。
數據集
這次數據的欄位描述如下:color 色彩 、director_name 導演 、num_critic_for_reviews 評論數 、duration 片長、director_facebook_likes 導演facebook粉絲數 、actor_3_facebook_likes 主演3Facebook粉絲數 、actor_2_name 主演2姓名 、actor_1_facebook_likes 主演1Facebook粉絲數 、gross 總收入 、genres 類型等等。
提出問題
主要是希望通過IMDB數據來了解全球電影近些年的一些現狀。具體來說,主要針對以下幾個問題:
1.全球電影的地域性分布如何;
2.高質量電影的地域性分布如何;近年來評分前10電影情況;
3.演員熱度情況;
4.中國電影在IMDB情況;
5.通過已有數據對XX年進行預測,然後比對現實情況,是否符合預測;
技術和工具
數據分析部分主要以 Python 編程語言為基礎,使用 pandas 作為數據整理和統計分析的工具,matplotlib 用於製作圖形,再加上Tableau的數據可視化分析。
數據整理
數據載入
數據清洗-去重
不知道數據有沒有重複,數據太多使用duplicated()函數看不出來是否重複,保險起見,使用drop_duplicates()直接就地去除重複項。
比對結果來看,是有重複項的。
數據清洗-處理缺失值
從上述處理來看,總共有4998部電影,很多欄位都有缺失值,但細細想來,很多缺失值是可以理解的,比如actor,如果是動畫片的話,確實沒有主演之說,再比如budget,很多電影方確實不願透露,片長duration:我選擇用平均數來填充缺失值
數據分析
這部分內容我主要通過描述性統計、探索性分析、推論統計:假設檢驗來完成。其實上部分數據整理也算是數據分析的內容,為了思路貫穿,我單摘出來了。
描述性統計
描述性統計對整體統計量進行一個客觀描述。
探索性分析
全球電影的地域性分布
至2016年來,電影產出數量排名前10的國家。
下圖為地圖熱度圖。
綜上可見,美國以壓倒式3773的優勢穩奪第一,英國443位居第二,法國154位居第三,中國28位居第9,話說這麼多年來,中國就28部電影?數據待考證。
高質量電影的分布
何為高質量需要我們去定義,我們依據什麼定義高質量呢?這個其實是一個仁者見仁智者見智的問題,有人覺得85%以上是優秀電影,有人覺得90%是。在這裡,根據imdb_score的四分位數統計情況,我選擇8分這個閾值,因為最高值也才9.5分,觀眾的標準還是很苛刻的。
我先用pie圖直觀展示下高質量電影的分布佔比情況,因為國家數量太多,名稱重疊,不太美觀,在正式報告時不可取,正式報告時可以節選前n項。
然後用tableau做出高質量電影的區域分布圖,展示各國家的具體分布情況,以下是高質量電影的區域分布圖。我們發現美國仍然以壓倒式的優勢排列第一。還能發現,雖然日本電影不在高產前十,但卻出現在高質量前10排名里,事實證明日本人的創作力值得學習。
然後我篩選出高質量電影的前10國家和具體數量。
然後輸出imdb_score分數最高的10部電影,先mark了可以一部部閱。
1.The Dark Knight 《蝙蝠俠:黑暗騎士》
2.The Shawshank Redemption 《肖申克的救贖》
3.Towering Inferno《火燒摩天樓》
4.Dekalog《十誡》
5.The Godfather: Part II 《教父2》
6.Pulp Fiction《低俗小說》
7.The Godfather 《教父》
8. Fargo《冰血暴》
9.Kickboxer: Vengeance 《搏擊之王:復仇》
10.The Good, the Bad and the Ugly 《黃金三鏢客》
演員熱度情況
時下Facebook熱度演員
以下圖是主演在Facebook的熱度詞雲,主要是通過主演的粉絲數來衡量的。
主演1的詞雲,我篩選出粉絲數25000以上的演員在facebook上關注度。
主演2的詞雲,我篩選出粉絲數15000以上的演員在facebook上關注度。
主演3的詞雲,我篩選出粉絲數10000以上的演員在facebook上關注度。
詞雲這部分主要是通過tableau實現的,愈發覺得tableau是數據可視化很棒的工具,本來我是打算用Python+word cloud實現詞雲的,但在做地圖熱度圖的時候,腦子裡閃現一個想法,「能不能用tableau來做詞雲」呢?然後就用tableau來試了下,發現結果不錯,加上圖表的篩選功能,詞雲的效果還不錯呢。
中國電影在IMDB情況。
可以看出中國電影的數據是不全的,從2005到2016年才28部電影,這數據很有問題。我想可能有以下幾點原因:
1.本土產品競爭; 國人有豆瓣、時光網、貓眼,不用費勁上imdb。
2.中國大陸對外網的限制; 大陸網民的網路活動受限制,很多人可能不知道imdb。
3.中國電影在imdb上活躍度低; imdb中國電影數據少,imdb中國註冊用戶也少,一般就算有中國電影,外國人也不會太過於主動關注。
推論統計:假設檢驗
我想試著用假設檢驗來預測下下一年的電影數量,理論上我們應該根據歷史數據做出擬合曲線,預測出未知數據的置信區間。這裡又展示出tableau的強大之處「預測」,tableau的預測演算法採用「指數平滑演算法」。
這次數據截止到2016年,可以看出2016年這個數據跟曲線趨勢相差較大,我將此「異常點」忽略,採用2014年之前的數據來預測2015年的數據(其實2015年是有實際數據的,且較為符合規律變化,選擇2015年就是想用實際值去驗證下假設檢驗),2015年的實際數據是222部電影,以下是通過tableau得出的預測結果。
tableau給出置信水平為95%的置信區間是:[224-25,224+25],預測的2015年數據是223。而實際數據222準確的落在了95%置信區間里,展示出了一定的準確度。當然tableau忽略了「假設H0、H1,計算均數、標準差,計算Z分數,根據置信水平判斷是否具有顯著性,計算置信區間,接受或拒絕H0」計算過程。
分析結論
根據提出的問題和分析過程,得出一些簡單的結論,如下:
1.全球電影的地域性分布,主要集中在北美洲的美國、加拿大,歐洲的英法德意,亞洲的中印,大洋洲的澳大利亞等。
2,高質量電影的地域性分布,主要集中在高產量國家,除此之外,日本像是一匹黑馬也躋身高質量前十。
3.近年來評分前10電影,主要有《蝙蝠俠:黑暗騎士》、《肖申克的救贖》、《火燒摩天樓》等。
4.演員熱度情況,粉絲關注的知名演員有約翰尼德普、羅賓威廉姆斯、勞勃狄尼洛等等;
5.中國電影在IMDB情況,由於數據原因,沒有分析價值;
6.通過已有數據對2015年電影數量進行假設預測,然後比對現實情況,較為符合預測結果;
思考與總結
總算是有個較為完整的分析思路,來實踐一個小項目,其中有很多不嚴謹的地方需要完善,實際數據清洗部分會佔很大比重,此項目數據較完整具有代表性,所以我在數據清洗部分偷了很多懶。機器學習的一些初級演算法還沒學,所以整個分析過程還顯得輕浮。不過對我來說,算是邁出了一步。昨天看了tableau2017年峰會大神們的作品,感覺自己菜的一米,進步空間還是很大的。嗯,勉為其難的鼓勵自己「Done is better than perfect」。
推薦閱讀:
※哈佛大學數據科學專業解析
※雖然是BSO但是還算是我的DS提高路程
※從微積分和線性代數角度看線性最小二乘原理
※數據科學導論:前言
※是什麼驅動了Python近些年強力的增長?來自Stack Overflow的分析