《消失的她》豆瓣短评数据分析

《消失的她》豆瓣短评数据分析

一、前言

最近爆火的电影《消失的她》你们有没有去看过呢?网上的人对这部电影众说纷纭,《消失的她》到底值不值得去看,相信本篇博客会给你答案。
在这里插入图片描述

在本篇博客中,我们将对电影《消失的她》的豆瓣短评数据进行分析,我们的目标是通过对评论数据的探索性数据分析(EDA),情感分析和影评分析,来了解观众对这部电影的评价,以及这部电影是否值得观看。

我们将使用的数据包括:

  • 《消失的她》豆瓣短评数据.csv:这是我们的主要数据,包含了豆瓣用户对电影《消失的她》的短评。
  • 停用词库.txt:这是我们用来进行文本预处理的停用词库,包含了一些在分析中需要被忽略的常见词汇。

让我们开始吧!

二、数据加载和预处理

import pandas as pd
import numpy as np

# 读取数据
df = pd.read_csv('《消失的她》豆瓣短评数据.csv')

# 查看数据的基本信息
df.info()
df.head()

在这里插入图片描述

从上面的输出中,我们可以看到数据集包含232条记录,每条记录包含6个字段:

  • 评论者网名:评论者的用户名
  • 评价:评论者对电影的评价,例如’推荐’,'还行’等
  • 评论:评论者对电影的具体评论
  • 评论时间:评论发布的时间
  • 评论地点:评论者的地理位置
  • 评论点赞数:该评论获得的点赞数

我们还可以看到有些字段存在缺失值,例如’评论者网名’,‘评价’,‘评论’,‘评论时间’,‘评论地点’和’评论点赞数’。在进行进一步的分析之前,我们需要处理这些缺失值。

# 处理缺失值
df = df.dropna()

# 再次查看数据的基本信息
df.info()
df.head()

在这里插入图片描述

通过删除包含缺失值的行,我们现在有217条完整的记录。下一步我们将对我们的数据集进行探索性数据分析。

三、探索性数据分析

在这一部分,我们将对数据进行初步的探索,包括:

  • 查看评论的评价分布
  • 查看评论点赞数的分布
  • 查看评论的地理分布

这将帮助我们了解观众对电影的整体评价,以及评论的一些基本特征。

1、查看评论的评价分布

df['评价'].value_counts()
还行    63
推荐    54
较差    47
很差    38
力荐    15
Name: 评价, dtype: int64
import matplotlib.pyplot as plt
import seaborn as sns
from pyecharts.charts import Pie
from pyecharts import options as opts

# 设置风格
sns.set_style('whitegrid')

# 示例数据
cate = [str(i) for i in df['评价'].value_counts().index]
data = [int(i) for i in df['评价'].value_counts().values]

pie = (Pie()
       .add('', [list(z) for z in zip(cate, data)],
            radius=["30%", "75%"],
            rosetype="radius"
            )
       .set_global_opts(title_opts=opts.TitleOpts(title="《消失的她》评价", subtitle="总体分布"))
       .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))
      )

pie.render_notebook()

在这里插入图片描述

从上图中,我们可以看到大部分的评论都是’还行’,其次是’推荐’,这说明大部分观众对这部电影的评价还是比较积极的。

2、查看评论点赞数的分布

接下来,我们来看一下评论点赞数的分布。

#隐藏警告
import warnings
warnings.filterwarnings("ignore")               #忽略警告信息
plt.rcParams['font.sans-serif']  = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False      # 用来正常显示负号
plt.rcParams['figure.dpi']  = 100        #分辨率
# 查看评论点赞数的分布
df['评论点赞数'].describe()

# 绘制评论点赞数的分布图
sns.distplot(df['评论点赞数'], bins=20, kde=False)

在这里插入图片描述

从上图中,我们可以看到评论点赞数的分布是右偏的,大部分的评论点赞数都在10000以下,只有少数的评论点赞数超过10000。这说明虽然有些评论得到了很多的点赞,但大部分的评论只得到了较少的点赞。

3、查看评论的地理分布

接下来,我们来看一下评论的地理分布。

# 查看评论的地理分布
plt.figure(figsize=(10, 8))
sns.countplot(y='评论地点', data=df, order=df['评论地点'].value_counts().index)
plt.title('评论的地理分布')
plt.xlabel('数量')
plt.ylabel('地点')
plt.show()

在这里插入图片描述

从上图中,我们可以看到评论主要来自于北京、上海、广东和江苏等地,这些地方的观众活跃度较高。

通过以上的探索性数据分析,我们对数据有了一定的了解。接下来我们将进行情感分析,以了解观众对电影的情感倾向。

四、情感分析

在这一部分,我们将对评论文本进行情感分析,以了解观众对电影的情感倾向。我们将使用jieba库进行中文分词,然后使用SnowNLP库进行情感分析。

首先,我们需要加载停用词库,并定义一个函数来进行文本预处理。

import jieba
from snownlp import SnowNLP

# 加载停用词库
with open('停用词库.txt', 'r', encoding='utf-8') as f:
    stop_words = [line.strip() for line in f.readlines()]

# 定义文本预处理函数
def preprocess_text(text):
    # 使用jieba进行分词
    words = jieba.cut(text)
    # 去除停用词
    words = [word for word in words if word not in stop_words]
    return ' '.join(words)

# 对评论文本进行预处理
df['评论'] = df['评论'].apply(preprocess_text)
# 查看处理后的评论
df['评论'].head()
0          一个   谋杀   老婆   男人   无意   谋杀   孩子   流泪   讽刺 
1                           倪妮   角色   T   铁   T   复仇记 
2    男主   b   超   照片   崩溃   孩子   杀   老婆   眼都   眨   ...
3    建议   情人节   档   安排   适合   情侣   宝宝   好   电影   ❤ ...
4    故事   20   分钟   猜   表演   倪妮   好似   没什么   信念   感...
Name: 评论, dtype: object

我们已经成功地对评论进行了预处理,接下来我们将进行情感分析。我们将使用SnowNLP库来进行情感分析。SnowNLP的情感分析是基于情感倾向分类,它会返回一个0到1之间的浮点数,数值越接近1,表示情感越积极,越接近0,表示情感越消极。

from snownlp import SnowNLP

# 定义情感分析函数
def sentiment_analysis(text):
    return SnowNLP(text).sentiments

# 对评论进行情感分析
df['情感分析'] = df['评论'].apply(sentiment_analysis)
# 查看情感分析结果
df['情感分析'].head()
0    0.999920
1    0.998887
2    0.054732
3    0.905509
4    0.923089
Name: 情感分析, dtype: float64
# 绘制情感分析结果的直方图
plt.hist(df['情感分析'], bins=20, alpha=0.5, color='steelblue', edgecolor='black')
plt.title('情感分析结果')
plt.xlabel('情感倾向')
plt.ylabel('评论数量')
plt.show()

在这里插入图片描述

从直方图中我们可以看出,大部分的评论都倾向于积极的情感,这说明观众对这部电影的评价普遍较好。

接下来,我们将进行评论的词云分析,以便更好地理解观众对电影的评论主题。

from wordcloud import WordCloud

# 合并所有评论
text = ' '.join(df['评论'])

# 生成词云
wordcloud = WordCloud(font_path='simhei.ttf', background_color='white').generate(text)

# 显示词云
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.show()

在这里插入图片描述

从词云中,我们可以看到评论中出现频率较高的词,这些词可以帮助我们理解观众对电影的主要评论主题。

接下来,我们将对电影的评分进行分析,我们将计算电影的平均评分,并查看评分的分布情况。

# 将'评价'这一列的数据转换为数值
df['评价'] = df['评价'].map({
    
    '很差': 1, '较差': 2, '还行': 3, '推荐': 4, '力荐': 5})

# 计算电影的平均评价
average_rating = df['评价'].mean()
print(f'电影的平均评价是:{
      
      average_rating:.2f}')

# 绘制评价的直方图
plt.hist(df['评价'], bins=5, alpha=0.5, color='steelblue', edgecolor='black')
plt.title('评价分布')
plt.xlabel('评价')
plt.ylabel('评论数量')
plt.show()
电影的平均评价是:2.82

在这里插入图片描述

电影的平均评价是2.82,这说明观众对电影的评价普遍偏向于"还行"和"推荐"。从评价的分布图中,我们可以看到大部分的评价都集中在"还行"和"推荐"这两个级别,这进一步证实了观众对电影的评价普遍较好。

综上所述,从情感分析的结果、评论的词云和电影的评价来看,观众对这部电影的评价普遍较好,因此,这部电影值得我们去看。

猜你喜欢

转载自blog.csdn.net/qq_52417436/article/details/131565367
今日推荐