1描滔、背景
《西虹市首富》電影如火如茶的熱映中,評價褒貶不一露氮。評論有水軍祖灰,有苛刻的專業(yè)評論。那整體對于電影的評價和分布到底是怎樣的呢畔规?接下來將爬去和分析貓眼電影用戶的評論局扶。
2、數(shù)據(jù)準備
(1)API獲取評論
通過貓眼電影提供的API,獲取電影的評論三妈。由于API的限制畜埋,總共可以獲得999頁的評論,每頁大概有25條評論畴蒲。但實際評論的數(shù)量肯定不止這么多由捎,所有在初識爬去評論后,還需要再搞個crontab每10分鐘再爬去一下最新的評論饿凛。注意事項如下:
a.記錄的存儲
由于是一個持續(xù)更新的過程,這里采用mysql存儲歷史采集的數(shù)據(jù)软驰。主要關(guān)心的字段如下:city(評論人城市)涧窒、content(評論內(nèi)容)、cid(評論的ID锭亏、排重用)纠吴、score(評分)、gender(性別)慧瘤、starttime(評論時間)戴已。
b.記錄的排重
在數(shù)據(jù)抓去時,數(shù)據(jù)本身還在更新锅减,很有可能會重復(fù)抓貼糖儡;另外,有很多水貼怔匣,這些都是需要過濾的握联。通過用cid來判斷是否該貼已經(jīng)被采集。
(2)數(shù)據(jù)清洗
a.數(shù)據(jù)加載
df1 = pd.read_sql(sql, conn)
pandas讀取mysql有如上方式每瞒,其中參數(shù)為1金闽、sql,讀取的sql語句剿骨,讀取全部可寫select *代芜;2、conn為連接數(shù)據(jù)庫的connection浓利。加載完數(shù)據(jù)大致如下:
b.數(shù)據(jù)轉(zhuǎn)換
b1挤庇、將city對應(yīng)至各省
單存城市的分析無太大意義,但按省分析或許能找到很多特征荞膘。通過分析罚随,city字段可能是該評論人所在市、縣的名稱羽资。因此需要有映射表實現(xiàn)市淘菩、縣-->省。github有個項目:https://github.com/wecatch/china_regions,有次對應(yīng)關(guān)系潮改。選取合適的類型下載狭郑,如選擇sql形式下載,并放在數(shù)據(jù)庫當中汇在。
加載對應(yīng)關(guān)系至pandas:通過select n.a_name a_name,n.c_name c_name,p.name p_name from (select a.name a_name, c.name c_name, c.province_id from city c left join area a on a.city_id = c.city_id) n left join province p on n.province_id = p.province_id翰萨,并讀取至pandas,可得如下數(shù)據(jù):
由于貓眼的城市名稱都是簡寫糕殉,而以上的映射關(guān)系是全城(如:新疆維吾爾自治區(qū))亩鬼,因此如果完全對應(yīng)存在困難,一種方式是在簡寫名稱上添加“市”阿蝶、“縣”雳锋,然后與映射表匹配;另一種是兩邊名稱都只選前兩個字來模糊映射羡洁,這種雖然有誤差玷过,但如果誤差很小的話,作為簡便方法筑煮,還是可使用的辛蚊。下面來介紹如何通過截斷匹配。
首先將映射表形成一個字典真仲,key為市袋马、縣,value為省袒餐。此時飞蛹,key只選擇前兩個字key[:2]。取名為p_dict
其次灸眼,將貓眼評論的城市節(jié)選前兩個字:
cut_func =lambda x: x[0:2] #構(gòu)造lambda函數(shù)卧檐,其中l(wèi)ambda為單行可具備多參數(shù)的函數(shù)
df1['city'] = df1['city'].map(cut_func) #利用map來截斷數(shù)據(jù),其中map可利用函數(shù)或字典來實現(xiàn)字段對應(yīng)
最后焰宣,再將簡寫城市對應(yīng)至映射表當中:
df1['city']=df1['city'].map(p_dict)
最終的效果如下:
b2霉囚、時間的截取
同理,時間的化我們可能會按天來觀察數(shù)據(jù)匕积,因此只截取日期即可:df1['starttime']=df1['starttime'].map(lambda x: x[:10])
(3)數(shù)據(jù)展示與觀察
a.按省來看評論數(shù)
count = df1.groupby('city').count()盈罐;count = count.sort_values(by='score');c_city = count.index闪唆;c_score = count['score']盅粪;show(c_city,c_score)
可見貓眼評論最多的是江蘇省,