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

news2024/11/25 3:00:37

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

文章目录

  • 《消失的她》豆瓣短评数据分析
    • 一、前言
    • 二、数据加载和预处理
    • 三、探索性数据分析
      • 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,这说明观众对电影的评价普遍偏向于"还行"和"推荐"。从评价的分布图中,我们可以看到大部分的评价都集中在"还行"和"推荐"这两个级别,这进一步证实了观众对电影的评价普遍较好。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/721324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源站点(jpress)部署

第三阶段基础 时 间:2023年7月5日 参加人:全班人员 内 容: 开源站点部署(jpress) 服务器设置;单台服务器,安装tomcat和mariadb 环境配置: 1、关闭防火墙 systemctl stop fir…

【大数据之Hive】二十、Hive之调优相关配置及Explain查看执行计划

1 Yarn资源配置 需要调整Yarn的参数与CPU、内存等资源有关 (1)yarn.nodemanager.resource.memory-mb   设置一个NodeManager节点分配给容器Container使用的内存,取决于NodeManager所在节点的总内存容量和该节点运行的其他服务的数量&#x…

搭建高性能数据库集群之二:MySQL读写分离(基于mycat2-1.22)

一、概述 读写分离是常见的一种数据库架构,一般是由 1 主多从构成,特殊场景下也会存在多主多从的架构。 无论哪一种架构,对于应用程序来说都是多个数据源,增加了代码的复杂性。如果配合 mycat,则可以实现屏蔽数据库复…

【C++】深入剖析vector

好久不见~让大家久等啦~ 本期让我们来揭开vector的面纱,看看它底层是怎么实现的~ 目录 一、STL定义vector的源码分析: 二、vector的模拟实现 2.1 vector框架的搭建(一些简单功能函数的实现) 2.2 迭代器失效问题 2.2.1 实现i…

【Spring】SpringCloud Ribbon中的7种负载均衡策略!

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员,2024届电子信息研究生 负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务…

个人总结:测试用例万能公式+常见例子(公式的运用)

前言 测试工程师面试的时候,有时候会当场考测试用例,毕竟这是测试工程师的基本功。 对于我来说,让我写测试用例会比让我直接说测试用例更好点。 直接嘴里说出来,容易逻辑混乱,给人一种想到啥说啥的感觉。 其实个人感…

MySQL学习基础篇(九)---子查询

MySQL学习基础篇(九)—子查询 子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。SQL 中子查询的使用大大增强了 SELECT查询的能力,因为很多时候查询需要从结果集中获取数据,或者需要从同一个表中先计算得出…

MySQL安装与部署

第一种方法:在线安装 配置一个安装yum源 Adding the MySQL Yum Repository 可以手动配置yum源,baseurl指向国内镜像源地址,比如清华、中科大。 Installing MySQL Starting the MySQL Server: 查询临时登录密码 修改数据库密码…

CTFHub XSS DOM反射 WriteUp

前言:本文需要注册一个xss平台,以接收xss反弹回来的数据,请自己在互联网上寻找合适的xss平台 1. 构造闭合语句 根据题目提示,判断网站存在DOM xss漏洞 查看页面源代码,发现关键位置,其中CTFHub is very n…

【揭秘Vue核心】深入解析Object.defineProperty和Proxy的区别,让你秒懂!

问题:Object.difineProperty 和 proxy 有什么区别? Object.defineProperty 和 Proxy 是用于实现响应式数据的两种不同方式。 Object.defineProperty Object.defineProperty 通过直接修改对象的属性描述符来实现数据的劫持。Vue 2.x 中就是通过 Objec…

vscode 之 工作区的应用(解决vue2插件vetur、vue3插件volar禁用启用问题)

目录 前言创建工作区添加文件夹到工作区为当前打开的工作区指定特定环境工作区删除文件夹如何切换工作区 前言 工作区???为什么要工作区??? 首先工作区简单理解就是vscode工作时的区域、范围; 延…

如何正确的安装MySQL

1. 使用rpm包在线安装 1.1 确认自己电脑版本(linux) [rootlocalhost ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core)ps:本次安装采用的系统为Centos 7.9 所使用的mysql为5.7 1.2 下载rpm包 下载地址 https://dev.mysql.com/downloads/mysql/ ps: 自己…

初识树莓派:强大功能与创造力的结合

目录 树莓派4B简介: 树莓派系统镜像下载: 树莓派4B简介: 树莓派4B是一款功能强大且受欢迎的单板计算机,由树莓派基金会开发。作为树莓派系列的最新版本,4B提供了许多令人兴奋的特性和改进,使其成为教育、创…

SSM简单项目遇到的几个问题(最后一个问题,虽然能运行,但是我找不出问题出在哪里)

这几个问题,干扰了我很长时间。 主要因为书本的例子,是通过controller层返回到jsp层。但是,最后一个SSM项目,它用的是controller返回信息给Service层,再由Service层返回Jsp层。 实训:编写一个模糊查询姓名…

【Java基础教程】(三)程序概念篇 · 上:探索Java编程基础,注释、标识符、关键字、数据类型~

Java基础教程之程序概念 上 本节学习目标1️⃣ Java中的注释2️⃣ 标识符3️⃣ 关键字4️⃣ 数据类型4.1 整型🔍 什么是变量?什么是常量?🔍关于数据类型转换的规则? 4.2 浮点数🔍关于Java的计算的缺陷 4.3…

chatGPT写综述

文献是任何学术研究的基础,但搜集和整合众多的信息,写成一篇健全的文献综述却是一项艰巨的任务。随着人工智能技术的发展,大型预训练语言模型(LM),如OpenAI的ChatGPT变得越来越流行。本文将探讨如何使用Cha…

K8S的概念和基本应用

学习视频:Kubernetes基本概念和应用_哔哩哔哩_bilibili 零 . 架构概览 master节点:管理调度集群资源,一般为多节点构成,可以是物理机,也可以是虚拟机。worker节点:资源的提供者,一般为多节点构…

沟通的层次模型

沟通的层次模型 根据沟通的倾向性将沟通划分为五个层次,分别是情绪、感受、想法、态度和事实。 模型介绍 沟通的层次 第5层:沟通情绪-带着强烈情绪表达,尤其经常使用这些字眼:“总是”、“每次都”第4层:沟通感受-不…

【APP开发】uni-data-select真机下拉框不显示问题

官网示例:uni-data-select 因为外层container有样式: width: 100%; height: 100%; overflow: hidden; display: flex; flex-direction: column; 去掉最外层 class"container"之后就可以了,但具体原因不清楚 我是对比了Hello uni-…

python中多态的作用是什么?

在强类型语言(例如Java或C#)中,多态是指允许使用一个父类类型的变量或常量来引用一个子类类型的对象,根据被引用子类对象特征的不同,得到不同的运行结果。即使用父类的类型来调用子类的方法。 在Python中,多态指在不考虑对象类型…