用python分析豆瓣短评(二)

上一篇用python分析豆瓣短评(一)讲了通过编写爬虫代码获取豆瓣电影短评数据。本文则利用pandas、matplotlib库对爬取的数据进行简单分析。

完整代码:
电影短评数据分析

一、从mongoDB中获取数据并清洗

数据清洗主要是清除mongoDB自动生成的_id字段,处理缺失值数据并转换数据类型,代码为:

    def getData(self):
        '''
        从mongoDB中提取数据
        :return: 电影评论的DataFrame数据
        '''
        try:
            client = MongoClient()
            db = client[self.database]
            col = db[self.movie_name]
            df = DataFrame(list(col.find()))
            print('连接mongoDB成功!')
            return df
        except Exception:
            print('尚未启动mongoDB服务。请提前开启mongoDB服务!')

    def getCleanData(self):
        '''
        对从mongoDB中获取的原始数据进行清洗:剔除多余字段;转换数据类型;添加评分分数值列
        :return:
        '''
        df = self.getData()
        del df['_id']  # 删除mongodb自动生成对_id字段
        # 处理评分(rating)字段空字符串及缺失值
        df.rating = df.rating.str.split(',', expand=True).replace('', np.nan)
        grades = self.grades
        # 添加分数值列
        df['score'] = df['rating'].apply(lambda x: grades[x] if x in grades else 0)
        # 转换数据类型
        df['pub_time'] = pd.to_datetime(df['pub_time'])  # 将pub_time(评论发布日期)转换为日期格式
        df['vote'] = pd.to_numeric(df['vote'])  # 将vote(有用数)转换为数据格式
        print('共获取%d条评论信息.' % len(df))
        return df

二、电影评分情况

为了能够正常显示中文,需要提前进行字体设置

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

统计不同打分的数量,得到评分的分布情况:


《你的名字。》热门短评评分统计

这是豆瓣网页上的评分分布结果:

《你的名字。》豆瓣全网评分统计

可以看到,500个样本的打分分布与整体的分布基本一致,而且5星最多,大量4星,分布形状成F型,这是大好片的分布形状。(关于豆瓣评分形状介绍,可以看这里:从豆瓣评分的形状辨别电影质量
不过比较以上两组评分分布也会发现,在采集的热门短评数据中,评价为3星及以下的比例(32%)高于全网数据(18%),导致按照样本数据计算的电影得分更低。鉴于豆瓣是以评论获得的“有用”数作为衡量热门的指标,说明还是有相当数量的用户不太认可这部电影。稍后我们可以再次对采集的数据进行分组并绘制词云,看看不同评分的用户有着怎样的评语。

三、评分与时间的关系

利用评论发表时间与打分数据,计算出单位时间内的平均分,并得到分数随时间的变化图。
由于《你的名字。》从最早在日本上映到样本数据截止日期已经有超过一年半的时间,因此选择以“月”作为时间单位计算平均分:

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 #原始数据是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)

得到分数变化图:


电影评分时间变化图

四、评论里都说了什么
之前提到,在样本数据中3星及以下的评论也占有近1/3的比例,因此以3星为界,将评论文本分为两组,分别绘制词云图。

先分组

goodRating=data[data['score']>3]  #评分大于3星的为好评
poorRating=data[data['score']<=3] #评分小于等于3星的为差评
goodComments=goodRating['comment_lines']
poorComments=poorRating['comment_lines']

分别统计词频。好评组里前20高频词组为:


好评词频

差评组的情况:


差评词频.png

从统计结果来看,两组的高频词几乎一样,都是很频繁提到导演的名字、电影的画面,以及电影的主题,包括爱情和时空穿越。这些词语都是有实际的指向,表明热门的短评基本上都包含了实质的内容,而非水军灌水。

再看一下词云。


好评词云.png

好评的词云里面几乎都是肯定的词汇,偶尔还提到新海诚的另一部《秒速五厘米》用来作比较。《触不到的恋人》也被提及,毕竟很难否认这部电影没有受到全智贤经典作品的启发。


差评词云.png

差评的词云里面明显多了一些负面的词汇,比如觉得剧情“尴尬”、“受不了”,或者认为故事“空洞”、逻辑存在bug。即便如此,依然有很多评论提及电影的画面。的确,在电影院看过的人应该都会被壁纸一般的画质震撼到吧。

OK,最后上一张全部评论的词云。


みやみず みつは
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,793评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,567评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,342评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,825评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,814评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,680评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,033评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,687评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,175评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,668评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,775评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,419评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,020评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,206评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,092评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,510评论 2 343

推荐阅读更多精彩内容