R语言数据分析案例:电影评分数据的探索性分析

R语言数据分析案例:电影评分数据的探索性分析

在本案例中,我们将使用R语言对一份电影评分数据集进行探索性分析,主要包括数据清洗、可视化、描述性统计等环节,以了解数据的基本特征和趋势。假设我们使用的是一个电影评分数据集,包含以下字段:

  • `movieId`:电影ID

  • `title`:电影名称

  • `genre`:电影类型

  • `userId`:用户ID

  • `rating`:用户对电影的评分(1-5星)

  • `timestamp`:评分时间戳

我们将通过以下步骤进行数据分析:

  1. 导入数据并进行基本的清洗

  2. 描述性统计分析

  3. 评分分布可视化

  4. 不同类型电影的评分分析

  5. 高分电影的用户偏好分析

一、数据导入与清洗

首先,我们需要将数据导入到R环境中,并进行初步的清洗。假设我们已经有一个名为`movies.csv`的数据文件,存储在本地。

```R

加载必要的库

library(dplyr)

library(ggplot2)

导入数据

movies <- read.csv("movies.csv")

查看数据前几行

head(movies)

```

数据清洗

接下来,我们检查数据是否有缺失值,并删除不需要的字段。

```R

检查数据是否有缺失值

sum(is.na(movies))

删除不必要的列(例如时间戳)

movies_clean <- movies %>% select(-timestamp)

确认数据清洗结果

str(movies_clean)

```

二、描述性统计分析

1. 数据集概览

我们首先了解数据集的基本统计信息,如数据集的大小、评分的分布情况等。

```R

数据集大小

nrow(movies_clean)

ncol(movies_clean)

评分的基本统计信息

summary(movies_clean$rating)

```

2. 评分的总体分布

我们可以生成评分的分布图,来查看用户给电影的评分情况。常用的方法是绘制评分的频率分布图(直方图)。

```R

评分分布的直方图

ggplot(movies_clean, aes(x = rating)) +

geom_histogram(binwidth = 0.5, fill = "blue", color = "black", alpha = 0.7) +

labs(title = "电影评分分布", x = "评分", y = "频率") +

theme_minimal()

```

通过这个图,我们可以直观地看到大部分用户的评分分布,是否有倾向于中间分数或高分段。

三、按电影类型分析评分分布

不同类型的电影可能会有不同的评分分布。我们可以按`genre`对评分进行分组,并计算每个电影类型的平均评分。

```R

按电影类型计算平均评分

genre_rating <- movies_clean %>%

group_by(genre) %>%

summarise(avg_rating = mean(rating), count = n()) %>%

arrange(desc(avg_rating))

查看按类型的平均评分

head(genre_rating)

可视化不同电影类型的评分分布

ggplot(genre_rating, aes(x = reorder(genre, avg_rating), y = avg_rating)) +

geom_bar(stat = "identity", fill = "skyblue") +

coord_flip() +

labs(title = "按电影类型的平均评分", x = "电影类型", y = "平均评分") +

theme_minimal()

```

该图表清楚地展示了不同类型的电影的平均评分情况,可以帮助我们了解哪些类型的电影更受欢迎。

四、高评分电影的用户偏好分析

接下来,我们可以筛选出高评分的电影(比如评分大于4.5分的电影),并查看哪些电影是评分较高的热门电影。

```R

筛选评分大于4.5的电影

high_rating_movies <- movies_clean %>%

filter(rating > 4.5) %>%

group_by(title) %>%

summarise(avg_rating = mean(rating), rating_count = n()) %>%

arrange(desc(avg_rating))

查看前10名高评分电影

head(high_rating_movies, 10)

可视化高评分电影的分布

ggplot(high_rating_movies1:10, , aes(x = reorder(title, avg_rating), y = avg_rating)) +

geom_bar(stat = "identity", fill = "lightgreen") +

coord_flip() +

labs(title = "评分最高的前10部电影", x = "电影名称", y = "平均评分") +

theme_minimal()

```

五、用户评分行为分析

除了电影本身的评分分布外,我们还可以进一步分析用户的评分行为。例如,分析用户的评分活跃度,或者不同用户对同一类型电影的评分差异。

1. 用户评分活跃度

```R

计算每个用户的评分次数

user_activity <- movies_clean %>%

group_by(userId) %>%

summarise(rating_count = n()) %>%

arrange(desc(rating_count))

可视化用户评分活跃度

ggplot(user_activity, aes(x = rating_count)) +

geom_histogram(binwidth = 5, fill = "orange", color = "black", alpha = 0.7) +

labs(title = "用户评分活跃度分布", x = "评分次数", y = "用户数") +

theme_minimal()

```

2. 不同用户对同类电影的评分差异

我们可以进一步分析,不同用户在同类型电影中的评分是否存在较大的差异。这可以帮助我们识别用户的评分习惯或偏好。

```R

按用户和类型计算平均评分

user_genre_rating <- movies_clean %>%

group_by(userId, genre) %>%

summarise(avg_rating = mean(rating)) %>%

arrange(desc(avg_rating))

查看前几行数据

head(user_genre_rating)

```

六、总结

通过以上分析,我们使用R语言对电影评分数据进行了深入的探索性分析。从数据清洗、描述性统计到可视化分析,不仅揭示了电影评分的分布情况,还分析了不同电影类型的评分趋势以及用户的评分偏好。R语言强大的数据处理能力和丰富的可视化工具使得数据分析更加高效和直观。

通过此案例,您可以扩展到其他数据集的分析,例如电商数据、用户行为数据等,探索更多的商业价值与洞察。

相关推荐
拆房老料36 分钟前
【第四部分:Agentic 智能体设计模式】16. 一个 Prompt 搞不定复杂任务?试试 Prompt Chaining
java·前端·人工智能·设计模式·prompt
运维行者_1 小时前
应用性能监控怎么选?从调用链到用户体验的五个能力维度
运维·服务器·数据库·人工智能·mysql·性能优化·应用性能监控
张张123y1 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
国科安芯6 小时前
四重证据,一条逻辑链:商业航天级微控制器MCU抗辐射验证方法学综述——以国科安芯AS32S601为例
人工智能·单片机·嵌入式硬件·mcu·安全·抗辐射
dk_tjy6 小时前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏
布吉岛的石头6 小时前
Java 程序员第 50 阶段2:预训练的目标函数:自回归语言建模本质
java·开发语言·人工智能·深度学习·回归·transformer
2601_965454236 小时前
用AI把开源项目功能清单做成MG动画介绍视频
人工智能·开源·音视频
风雅GW6 小时前
局域网访问为何少一半配置页:DSH 的安全边界设计复盘
人工智能
衡石科技7 小时前
同一句业务问题,怎样持续问对数?衡石 ChatBI 的语义准备与回归验证
人工智能·数据挖掘·回归·chatbi
新新学长搞科研7 小时前
【会议征稿 | 杭州站】第七届机器学习与计算机应用国际学术会议 (ICMLCA 2026)
人工智能·机器学习·计算机