用python分析豆瓣短評(píng)(二)

上一篇用python分析豆瓣短評(píng)(一)講了通過編寫爬蟲代碼獲取豆瓣電影短評(píng)數(shù)據(jù)谢谦。本文則利用pandas、matplotlib庫對(duì)爬取的數(shù)據(jù)進(jìn)行簡(jiǎn)單分析愿阐。

完整代碼:
電影短評(píng)數(shù)據(jù)分析

一微服、從mongoDB中獲取數(shù)據(jù)并清洗

數(shù)據(jù)清洗主要是清除mongoDB自動(dòng)生成的_id字段,處理缺失值數(shù)據(jù)并轉(zhuǎn)換數(shù)據(jù)類型缨历,代碼為:

    def getData(self):
        '''
        從mongoDB中提取數(shù)據(jù)
        :return: 電影評(píng)論的DataFrame數(shù)據(jù)
        '''
        try:
            client = MongoClient()
            db = client[self.database]
            col = db[self.movie_name]
            df = DataFrame(list(col.find()))
            print('連接mongoDB成功以蕴!')
            return df
        except Exception:
            print('尚未啟動(dòng)mongoDB服務(wù)糙麦。請(qǐng)?zhí)崆伴_啟mongoDB服務(wù)!')

    def getCleanData(self):
        '''
        對(duì)從mongoDB中獲取的原始數(shù)據(jù)進(jìn)行清洗:剔除多余字段丛肮;轉(zhuǎn)換數(shù)據(jù)類型赡磅;添加評(píng)分分?jǐn)?shù)值列
        :return:
        '''
        df = self.getData()
        del df['_id']  # 刪除mongodb自動(dòng)生成對(duì)_id字段
        # 處理評(píng)分(rating)字段空字符串及缺失值
        df.rating = df.rating.str.split(',', expand=True).replace('', np.nan)
        grades = self.grades
        # 添加分?jǐn)?shù)值列
        df['score'] = df['rating'].apply(lambda x: grades[x] if x in grades else 0)
        # 轉(zhuǎn)換數(shù)據(jù)類型
        df['pub_time'] = pd.to_datetime(df['pub_time'])  # 將pub_time(評(píng)論發(fā)布日期)轉(zhuǎn)換為日期格式
        df['vote'] = pd.to_numeric(df['vote'])  # 將vote(有用數(shù))轉(zhuǎn)換為數(shù)據(jù)格式
        print('共獲取%d條評(píng)論信息.' % len(df))
        return df

二、電影評(píng)分情況

為了能夠正常顯示中文宝与,需要提前進(jìn)行字體設(shè)置

from pylon import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False

統(tǒng)計(jì)不同打分的數(shù)量焚廊,得到評(píng)分的分布情況:


《你的名字∠敖伲》熱門短評(píng)評(píng)分統(tǒng)計(jì)

這是豆瓣網(wǎng)頁上的評(píng)分分布結(jié)果:

《你的名字节值。》豆瓣全網(wǎng)評(píng)分統(tǒng)計(jì)

可以看到榜聂,500個(gè)樣本的打分分布與整體的分布基本一致搞疗,而且5星最多,大量4星须肆,分布形狀成F型匿乃,這是大好片的分布形狀。(關(guān)于豆瓣評(píng)分形狀介紹豌汇,可以看這里:從豆瓣評(píng)分的形狀辨別電影質(zhì)量幢炸。
不過比較以上兩組評(píng)分分布也會(huì)發(fā)現(xiàn),在采集的熱門短評(píng)數(shù)據(jù)中拒贱,評(píng)價(jià)為3星及以下的比例(32%)高于全網(wǎng)數(shù)據(jù)(18%)宛徊,導(dǎo)致按照樣本數(shù)據(jù)計(jì)算的電影得分更低。鑒于豆瓣是以評(píng)論獲得的“有用”數(shù)作為衡量熱門的指標(biāo)逻澳,說明還是有相當(dāng)數(shù)量的用戶不太認(rèn)可這部電影闸天。稍后我們可以再次對(duì)采集的數(shù)據(jù)進(jìn)行分組并繪制詞云,看看不同評(píng)分的用戶有著怎樣的評(píng)語斜做。

三苞氮、評(píng)分與時(shí)間的關(guān)系

利用評(píng)論發(fā)表時(shí)間與打分?jǐn)?shù)據(jù),計(jì)算出單位時(shí)間內(nèi)的平均分瓤逼,并得到分?jǐn)?shù)隨時(shí)間的變化圖笼吟。
由于《你的名字“云欤》從最早在日本上映到樣本數(shù)據(jù)截止日期已經(jīng)有超過一年半的時(shí)間贷帮,因此選擇以“月”作為時(shí)間單位計(jì)算平均分:

new_col = 'month'
data[new_col] = data['pub_time'].apply(lambda x: datetime.strftime(x, '%Y-%m'))
rating_by_time = data['score'].groupby(by=data[new_col]).mean()*2 #原始數(shù)據(jù)是5分制,這里改成10分制

使用matplotlib庫繪制折線圖:

fig, ax = plt.subplots()
ax.plot(rating_by_time,linestyle='--',marker='o')
ax.axes.set_xticklabels(rating_by_time.index.values,rotation=45)
ax.set_title(title)

得到分?jǐn)?shù)變化圖:


電影評(píng)分時(shí)間變化圖

四诱告、評(píng)論里都說了什么
之前提到撵枢,在樣本數(shù)據(jù)中3星及以下的評(píng)論也占有近1/3的比例,因此以3星為界,將評(píng)論文本分為兩組诲侮,分別繪制詞云圖镀虐。

先分組

goodRating=data[data['score']>3]  #評(píng)分大于3星的為好評(píng)
poorRating=data[data['score']<=3] #評(píng)分小于等于3星的為差評(píng)
goodComments=goodRating['comment_lines']
poorComments=poorRating['comment_lines']

分別統(tǒng)計(jì)詞頻。好評(píng)組里前20高頻詞組為:


好評(píng)詞頻

差評(píng)組的情況:


差評(píng)詞頻.png

從統(tǒng)計(jì)結(jié)果來看沟绪,兩組的高頻詞幾乎一樣刮便,都是很頻繁提到導(dǎo)演的名字、電影的畫面绽慈,以及電影的主題恨旱,包括愛情和時(shí)空穿越。這些詞語都是有實(shí)際的指向坝疼,表明熱門的短評(píng)基本上都包含了實(shí)質(zhì)的內(nèi)容搜贤,而非水軍灌水。

再看一下詞云钝凶。


好評(píng)詞云.png

好評(píng)的詞云里面幾乎都是肯定的詞匯仪芒,偶爾還提到新海誠的另一部《秒速五厘米》用來作比較「荩《觸不到的戀人》也被提及掂名,畢竟很難否認(rèn)這部電影沒有受到全智賢經(jīng)典作品的啟發(fā)。


差評(píng)詞云.png

差評(píng)的詞云里面明顯多了一些負(fù)面的詞匯哟沫,比如覺得劇情“尷尬”饺蔑、“受不了”,或者認(rèn)為故事“空洞”嗜诀、邏輯存在bug猾警。即便如此,依然有很多評(píng)論提及電影的畫面隆敢。的確发皿,在電影院看過的人應(yīng)該都會(huì)被壁紙一般的畫質(zhì)震撼到吧。

OK筑公,最后上一張全部評(píng)論的詞云雳窟。


みやみず みつは
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匣屡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拇涤,老刑警劉巖捣作,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異鹅士,居然都是意外死亡券躁,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來也拜,“玉大人以舒,你說我怎么就攤上這事÷” “怎么了蔓钟?”我有些...
    開封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卵贱。 經(jīng)常有香客問我滥沫,道長,這世上最難降的妖魔是什么键俱? 我笑而不...
    開封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任兰绣,我火速辦了婚禮,結(jié)果婚禮上编振,老公的妹妹穿的比我還像新娘缀辩。我一直安慰自己,他們只是感情好踪央,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開白布雌澄。 她就那樣靜靜地躺著,像睡著了一般杯瞻。 火紅的嫁衣襯著肌膚如雪镐牺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天魁莉,我揣著相機(jī)與錄音睬涧,去河邊找鬼。 笑死旗唁,一個(gè)胖子當(dāng)著我的面吹牛畦浓,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播检疫,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開眼讶请,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了屎媳?” 一聲冷哼從身側(cè)響起夺溢,我...
    開封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烛谊,沒想到半個(gè)月后风响,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡丹禀,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年状勤,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鞋怀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡持搜,死狀恐怖密似,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情葫盼,我是刑警寧澤残腌,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站剪返,受9級(jí)特大地震影響废累,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜脱盲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一邑滨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钱反,春花似錦掖看、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至尚卫,卻和暖如春归榕,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背吱涉。 一陣腳步聲響...
    開封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來泰國打工刹泄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怎爵。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓特石,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鳖链。 傳聞我的和親對(duì)象是個(gè)殘疾皇子姆蘸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容