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

文章目录

  • 《消失的她》豆瓣短评数据分析
    • 一、前言
    • 二、数据加载和预处理
    • 三、探索性数据分析
      • 1、查看评论的评价分布
      • 2、查看评论点赞数的分布
      • 3、查看评论的地理分布
    • 四、情感分析

一、前言

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

在本篇博客中,我们将对电影《消失的她》的豆瓣短评数据进行分析,我们的目标是通过对评论数据的探索性数据分析(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,这说明观众对电影的评价普遍偏向于"还行"和"推荐"。从评价的分布图中,我们可以看到大部分的评价都集中在"还行"和"推荐"这两个级别,这进一步证实了观众对电影的评价普遍较好。

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

《消失的她》豆瓣短评数据分析相关推荐

  1. scrapy 豆瓣短评 数据分析 + 中文情感分析 + 可视化 (一)

    scrapy 豆瓣短评 数据分析 + 中文情感分析 + 可视化 (一) 一.scrapy 爬取 豆瓣短评 本次爬取的是哪吒之魔童降世 短评 .本次爬取的是静态网页还是蛮简单的. 1.开始地址 http ...

  2. 三十而已 豆瓣短评分析

    三十而已 豆瓣短评分析 数据读入 In [1]: 导入所需包 import numpy as np import pandas as pd import re import jieba ​ from ...

  3. 数据分析小项目01 __《少年的你》豆瓣短评__V1.0

    本文以<少年的你>为例, 简单实现了爬取数据–保存数据–分析数据–图表展示的全流程. 此为第一个版本, 有很多需要地方将在后续版本中改进. 具体代码见github: https://git ...

  4. python爬取豆瓣影评生成词云的课程设计报告_简单爬取《小丑》电影豆瓣短评生成词云...

    导语 在前段时间看了杰昆菲尼克斯的小丑电影,心里很好奇大部分观众看完这部电影之后对此有什么评价,然后看了看豆瓣短评之后,觉得通过python把短评中出现最多的单词提取出来,做成一张词云,看看这部电影给 ...

  5. 从3万条豆瓣短评看《雷神3》

    哈喽大家好,为了北方神的荣耀,我是雷神托尔!! 没错,这次的雷神3又轰轰烈烈地回来啦,开开心心地奉上一张真诚的车票. 回归正题,新片上映大家的反响还是非常热烈的,这里就单从广大的豆瓣盆友的数据反馈进行 ...

  6. 爬取《哪吒》豆瓣短评,我得到了什么?

    点击上方"蓝字",感谢关注! 这段时间,<哪吒>爆火. 于是,就想看看,关于<哪吒>的评价. 为什么选择豆瓣? 质量和口碑还不错吧. 可是,折腾一波之后,发 ...

  7. 12行Python暴力爬《黑豹》豆瓣短评

    作者:黄嘉锋 来源:https://www.jianshu.com/p/ea0b56e3bd86 草长莺飞,转眼间又到了三月"爬虫月". 这时往往不少童鞋写论文苦于数据获取艰难,辗 ...

  8. Python爬取唐人街探案3豆瓣短评并生成词云

    爬取唐人街探案3短评过程 要爬取的URL: https://movie.douban.com/subject/27619748/comments?start=20&limit=20&s ...

  9. 用Python分析《阿凡达·水之道》的豆瓣短评

    <阿凡达·水之道>于2022年12月16日上映.第一部的口碑.评分等都非常高,第二部是否能延续呢,本文获取了该电影的豆瓣短评,进行了初步的分析,看下观众都是如何评价的. 数据获取 打开豆瓣 ...

最新文章

  1. Centos6.5 安装配置docker
  2. VIM自动补全插件:deoplete
  3. 关于rc.local启动程序
  4. A除以B (20) (模拟除法)
  5. xSocket 通讯框架 demo
  6. mysql mac版本_mysql的安装、启动和基础配置 —— mac版本
  7. netmon中解析非1433端口的TDS协议
  8. 基于C++11实现线程池的工作原理
  9. 计算机毕业设计asp.net学院网站系统VS开发sqlserver数据库web结构c#编程计算机网页源码项目
  10. 前端vue导出excel
  11. 企业为什么要做ISO14001环境管理体系认证?
  12. 【数据结构Python描述】自底向上构建二叉堆实现及其O(n)时间复杂度分析
  13. 千万别说你会Python!如果不知道这10个Python包!
  14. 装修,一场没有硝烟的战争
  15. 2对应字母权限Linux,linux中文件权限的字母含义
  16. Flatpak 不是未来
  17. 如何过滤掉xml字符串中的gt,lt,quot,amp,apos
  18. mysql实现年龄大于17小于30_mysql基础
  19. Unity C# 游戏客户端面试复习
  20. 特征选择算法之卡方检验

热门文章

  1. 关于大型网站技术演进的思考(十六)--网站静态化处理—前后端分离—下(8)
  2. 培养孩子意志力的五种方法
  3. 《软件测试的艺术》第六章 更高级别的测试
  4. 外包程序员入职蚂蚁金服被质疑,网友评论人生污点,真就不拿外包当人了呗?
  5. 图像学习之如何理解方向梯度直方图(Histogram Of Gradient)
  6. 智源AI日报(2022-08-26):当下最强的 AI art 生成模型 Stable Diffusion 最全面介绍
  7. js笛卡尔乘积算法实现sku
  8. Hadoop的FileInputFormat解析
  9. DES加密算法|密码学|网络空间安全
  10. iMobile中三维数据的性能优化