Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好

【Python数据分析五十个小案例】电影评分分析:使用Pandas分析电影评分数据,探索评分的分布、热门电影、用户偏好

原创
作者头像
小馒头学Python
发布于 2024-11-28 15:23:05
发布于 2024-11-28 15:23:05
42106
代码可运行
举报
文章被收录于专栏:小馒头学Python小馒头学Python
运行总次数:6
代码可运行

今日推荐

在文章开始之前,推荐一篇值得阅读的好文章!感兴趣的也可以去看一下,并关注作者!

今日推荐:Vue i18n插件:实现Web应用多语言切换的指南

文章链接:https://cloud.tencent.com/developer/article/2472065

通过这篇文章,你将能够深入了解并介绍了Web 服务器Nginx,高并发是衡量一个 Web 服务器处理能力的重要指标之一。为了应对高并发场景,许多公司选择了轻量、高性能的 Web 服务器——Nginx。

引言

电影评分数据通常包含大量的用户评分信息,反映了电影的受欢迎程度以及观众的评价。通过对这些数据的分析,电影公司、推荐系统以及研究者可以更好地了解用户需求并作出相应的调整。例如,分析评分分布可以帮助我们识别评分过低或过高的电影,探索评分高的电影类型,进而为推荐系统提供优化建议。

本文将通过Pandas库分析电影评分数据,帮助大家探索以下问题:

  • 电影评分的分布是怎样的?
  • 哪些电影是最受欢迎的?
  • 用户有哪些评分偏好?

数据获取与预处理

数据源介绍

我们使用的数据集包含了电影的评分信息,这些数据通常可以从IMDb、豆瓣或类似的公共平台获取。假设我们使用的CSV文件包含以下几列:

  • movie_id:电影ID
  • title:电影名称
  • genre:电影类型
  • rating:电影的平均评分
  • num_ratings:电影的评分次数
  • user_id:评分用户的ID
  • timestamp:评分时间

首先我们需要生成一个脚本进行生成模拟的数据

代码语言:python
代码运行次数:3
运行
AI代码解释
复制
import pandas as pd
import numpy as np

# 生成电影数据
movie_titles = ['The Shawshank Redemption', 'The Dark Knight', 'Inception', 'Fight Club', 'Pulp Fiction']
genres = ['Drama', 'Action', 'Sci-Fi', 'Drama', 'Crime']
ratings = [8.7, 9.0, 8.8, 8.8, 9.0]
num_ratings = [1200, 1500, 1100, 900, 1300]
user_ids = np.random.randint(1, 500, size=5000)
timestamps = np.random.randint(1000000000, 1600000000, size=5000)  # 模拟时间戳(UNIX时间戳)

# 创建DataFrame
data = {
    'movie_id': np.random.randint(1, 6, size=5000),
    'title': np.random.choice(movie_titles, size=5000),
    'genre': np.random.choice(genres, size=5000),
    'rating': np.random.uniform(5, 10, size=5000),
    'num_ratings': np.random.choice(num_ratings, size=5000),
    'user_id': user_ids,
    'timestamp': timestamps
}

df = pd.DataFrame(data)

# 保存为CSV文件
df.to_csv('movie_ratings.csv', index=False)

print(df.head())

运行结果如下

数据加载与清洗

首先,我们使用Pandas加载数据并进行基本的清洗工作。例如,去除缺失值和重复数据。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import pandas as pd

# 加载数据
df = pd.read_csv('movie_ratings.csv')

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

# 处理缺失值
df = df.dropna()  # 删除含有缺失值的行

# 处理重复数据
df = df.drop_duplicates()

# 确保数据类型正确
df['rating'] = df['rating'].astype(float)
df['num_ratings'] = df['num_ratings'].astype(int)

print(df.head())

评分数据查看

数据概览

加载并清洗数据后,我们先进行一些基本的统计分析,了解电影评分数据的整体情况。我们可以使用df.describe()来查看数据的摘要统计信息,如均值、标准差、最小值和最大值等。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 基本统计分析
print(df['rating'].describe())

数据分布

通过直方图和箱型图,我们可以直观地查看评分的分布情况,识别出评分的集中趋势以及异常值。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
import matplotlib.pyplot as plt
import seaborn as sns

# 绘制评分分布的直方图
plt.figure(figsize=(8, 6))
sns.histplot(df['rating'], bins=20, kde=True, color='blue')
plt.title('电影评分分布')
plt.xlabel('评分')
plt.ylabel('频次')
plt.show()

# 绘制箱型图查看评分的分布情况
plt.figure(figsize=(8, 6))
sns.boxplot(x=df['rating'], color='green')
plt.title('电影评分箱型图')
plt.xlabel('评分')
plt.show()

通过这些图表,我们可以看到大部分电影的评分集中在较高的区间(例如7到9分之间),同时也能看到少量评分极低和极高的电影。

电影评分分布分析

各评分区间的电影数量分析

我们可以根据评分区间对电影进行分类,统计各个区间的电影数量。例如,评分为1-3、4-6、7-9和10分的电影各有多少部。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 定义评分区间
bins = [0, 3, 6, 9, 10]
labels = ['1-3', '4-6', '7-9', '10']
df['rating_category'] = pd.cut(df['rating'], bins=bins, labels=labels, right=False)

# 统计各评分区间的电影数量
rating_distribution = df['rating_category'].value_counts()
print(rating_distribution)

高评分与低评分电影比例

我们可以进一步探讨评分偏好的问题,找出高评分和低评分电影的比例。比如,评分在9分以上的电影占总电影数的比例。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 计算评分大于等于9的电影占比
high_rated_movies = df[df['rating'] >= 9]
print(f"高评分电影占比: {len(high_rated_movies) / len(df) * 100:.2f}%")

热门电影分析

根据评分数筛选热门电影

热门电影通常有大量的评分,我们可以通过num_ratings(评分数)来筛选这些电影。找出评分次数最多的前10部电影。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 按照评分数排序,找到评分数最多的前10部电影
top_rated_by_count = df.sort_values(by='num_ratings', ascending=False).head(10)
print(top_rated_by_count[['title', 'num_ratings', 'rating']])

根据平均评分找出评分最高的电影

除了考虑评分次数,电影的平均评分也很重要。我们可以根据rating对电影进行排序,找出评分最高的前10部电影。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 按照评分排序,找到评分最高的前10部电影
top_rated_by_avg = df.sort_values(by='rating', ascending=False).head(10)
print(top_rated_by_avg[['title', 'rating', 'num_ratings']])

用户偏好分析

用户评分偏好分析

我们可以通过电影类型(genre)来分析用户的评分偏好。首先,统计每种电影类型的平均评分,并进行可视化。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 计算每种类型的平均评分
genre_avg_rating = df.groupby('genre')['rating'].mean().sort_values(ascending=False)
print(genre_avg_rating)

# 绘制电影类型的平均评分
plt.figure(figsize=(10, 6))
genre_avg_rating.plot(kind='bar', color='purple')
plt.title('不同电影类型的平均评分')
plt.xlabel('电影类型')
plt.ylabel('平均评分')
plt.show()

评分时间趋势

用户的评分行为可能随时间变化而有所不同,尤其是在电影的上映周期内。我们可以通过timestamp列来分析评分的时间趋势。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
# 转换时间戳为日期
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')

# 按照年份统计平均评分
df['year'] = df['timestamp'].dt.year
yearly_avg_rating = df.groupby('year')['rating'].mean()

# 绘制年度平均评分趋势
plt.figure(figsize=(10, 6))
yearly_avg_rating.plot(kind='line', color='orange')
plt.title('电影评分的年度趋势')
plt.xlabel('年份')
plt.ylabel('平均评分')
plt.show()

完整源码

代码语言:python
代码运行次数:3
运行
AI代码解释
复制
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# 1. 数据加载与预处理
df = pd.read_csv('movie_ratings.csv')

# 查看数据基本信息
print("数据的基本信息:")
print(df.info())

# 查看前几行数据
print("\n数据预览:")
print(df.head())

# 处理缺失值
df = df.dropna()  # 删除含有缺失值的行

# 处理重复数据
df = df.drop_duplicates()

# 确保数据类型正确
df['rating'] = df['rating'].astype(float)
df['num_ratings'] = df['num_ratings'].astype(int)

# 2. 评分数据探索
# 描述性统计
print("\n评分的描述性统计:")
print(df['rating'].describe())

# 3. 绘制评分分布
plt.figure(figsize=(10, 6))
sns.histplot(df['rating'], bins=20, kde=True, color='blue')
plt.title('电影评分分布')
plt.xlabel('评分')
plt.ylabel('频次')
plt.show()

# 评分的箱型图
plt.figure(figsize=(8, 6))
sns.boxplot(x=df['rating'], color='green')
plt.title('电影评分箱型图')
plt.xlabel('评分')
plt.show()

# 4. 评分区间分析
bins = [0, 3, 6, 9, 10]
labels = ['1-3', '4-6', '7-9', '10']
df['rating_category'] = pd.cut(df['rating'], bins=bins, labels=labels, right=False)

# 各评分区间的电影数量
rating_distribution = df['rating_category'].value_counts()
print("\n各评分区间的电影数量:")
print(rating_distribution)

# 5. 高评分与低评分电影比例
high_rated_movies = df[df['rating'] >= 9]
print(f"\n高评分电影占比: {len(high_rated_movies) / len(df) * 100:.2f}%")

# 6. 热门电影分析
# 按评分数排序,找到评分数最多的前10部电影
top_rated_by_count = df.sort_values(by='num_ratings', ascending=False).head(10)
print("\n评分次数最多的前10部电影:")
print(top_rated_by_count[['title', 'num_ratings', 'rating']])

# 按照评分排序,找到评分最高的前10部电影
top_rated_by_avg = df.sort_values(by='rating', ascending=False).head(10)
print("\n评分最高的前10部电影:")
print(top_rated_by_avg[['title', 'rating', 'num_ratings']])

# 7. 用户评分偏好分析
# 计算每种类型的平均评分
genre_avg_rating = df.groupby('genre')['rating'].mean().sort_values(ascending=False)
print("\n每种类型的平均评分:")
print(genre_avg_rating)

# 绘制电影类型的平均评分
plt.figure(figsize=(10, 6))
genre_avg_rating.plot(kind='bar', color='purple')
plt.title('不同电影类型的平均评分')
plt.xlabel('电影类型')
plt.ylabel('平均评分')
plt.show()

# 8. 评分时间趋势
# 转换时间戳为日期
df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s')

# 按照年份统计平均评分
df['year'] = df['timestamp'].dt.year
yearly_avg_rating = df.groupby('year')['rating'].mean()

# 绘制年度平均评分趋势
plt.figure(figsize=(10, 6))
yearly_avg_rating.plot(kind='line', color='orange')
plt.title('电影评分的年度趋势')
plt.xlabel('年份')
plt.ylabel('平均评分')
plt.show()

# 9. 结论
print("\n数据分析完成!")
print("1. 评分分布:电影评分大多集中在7-9分之间。")
print("2. 热门电影:高评分和大量评分数的电影通常会更受欢迎。")
print("3. 用户偏好:不同电影类型的评分存在显著差异,某些类型的电影得到更高的评分。")

运行部分截图

最后的简单的数据分析,也是最重要的

  1. 评分分布:电影评分大多集中在7-9分之间。
  2. 热门电影:高评分和大量评分数的电影通常会更受欢迎。
  3. 用户偏好:不同电影类型的评分存在显著差异,某些类型的电影得到更高的评分。

结论

通过对电影评分数据的分析,我们发现:

  • 大多数电影的评分集中在7-9分之间,少部分电影评分过高或过低。
  • 热门电影不仅需要大量的评分数,还要有较高的评分。
  • 用户的评分偏好与电影类型密切相关,不同类型的电影有不同的评分分布。

这些发现为电影推荐系统、电影营销和电影产业的未来发展提供了有价值的见解。

参考文献

数据来源:IMDb、豆瓣

Pandas官方文档:https://pandas.pydata.org/pandas-docs/stable/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
EDA和数据挖掘实战:漫威与 DC电影收视率和票房分析
Marvel Cinematic vs DC Universe哪个更好,这是一场永无止境的辩论,对吧?当你反对这些电影的任何一个时,粉丝会变得疯狂。在本篇文章中,我们将根据一些数据来对比Marvel 与 DC , 数据总能说出真相。
deephub
2021/11/16
4820
TMDB电影数据分析报告
本次报告的主要任务是:根据历史电影数据,分析哪种电影收益能力更好,未来电影的流行趋势,以及为电影拍摄提供建议。细化为以下几个小问题:
润森
2022/09/22
1.1K0
TMDB电影数据分析报告
Spark综合练习——电影评分数据分析
全部数据: 链接:https://pan.baidu.com/s/1qiO9aRb7yQeuHDtH1cWklw 提取码:nwxj
Maynor
2022/05/08
1.7K0
Spark综合练习——电影评分数据分析
【Python数据分析五十个小案例】分析某电商平台的用户购买行为
数据分析为我们提供了对市场动态的深刻洞察,能够帮助企业优化运营策略、提升用户体验和增加收入。在本案例中,我们将通过Python进行电商平台用户购买行为数据的分析,揭示不同用户群体的消费模式以及热门产品的销售趋势。通过数据分析,我们希望为平台提供更精确的市场决策依据。
小馒头学Python
2024/12/22
7450
【Python数据分析五十个小案例】分析某电商平台的用户购买行为
python数据可视化 豆瓣电影top250数据分析
文章目录 一、上映高分电影数量最多的年份Top10 import collections import pandas as pd from matplotlib import pyplot as plt # 读取数据 df = pd.read_excel("movie.xlsx") # print(type(df)) # <class 'pandas.core.frame.DataFrame'> show_time = list(df["上映时间"]) # 有上映时间数据是1961(中国大陆)这
叶庭云
2020/09/17
3.9K0
python数据可视化 豆瓣电影top250数据分析
利用 Python 分析 MovieLens 1M 数据集
MovieLens数据集是一个关于电影评分的数据集,里面包含了从IMDB, The Movie DataBase上面得到的用户对电影的评分信息,详细请看下面的介绍。
JavaEdge
2022/11/30
1.7K0
利用 Python 分析 MovieLens 1M 数据集
豆瓣图书评分数据的可视化分析
豆瓣是一个提供图书、电影、音乐等文化产品的社区平台,用户可以在上面发表自己的评价和评论,形成一个丰富的文化数据库。本文将介绍如何使用爬虫技术获取豆瓣图书的评分数据,并进行可视化分析,探索不同类型、不同年代、不同地区的图书的评分特征和规律。
jackcode
2023/09/12
6270
豆瓣图书评分数据的可视化分析
利用 Python 分析 MovieLens 1M 数据集
MovieLens数据集是一个关于电影评分的数据集,里面包含了从IMDB, The Movie DataBase上面得到的用户对电影的评分信息,详细请看下面的介绍。
JavaEdge
2019/07/27
4.8K1
Python可视化库Matplotlib的使用
一。导入数据 import pandas as pd unrate = pd.read_csv('unrate.csv') unrate['DATE'] = pd.to_datetime(unrate['DATE']) print(unrate.head(12)) 结果如下: DATE VALUE 0 1948-01-01 3.4 1 1948-02-01 3.8 2 1948-03-01 4.0 3 1948-04-01 3.9 4 1948-05-0
LhWorld哥陪你聊算法
2018/09/13
8650
Python可视化库Matplotlib的使用
Top250电影爬取并进行数据分析
利用Python对豆瓣电影Top250电影进行爬取,收集相关的信息,并且利用Python进行数据分析,获取'排名','电影名称','导演','上映年份','制作国家','类型','评分','评价分数','短评'等字段,探索相关的数据。
北山啦
2022/11/04
8870
Python数据科学入门:基础知识、工具与实战应用
文章链接:https://cloud.tencent.com/developer/article/2465509
一键难忘
2024/11/27
2520
Python爬取豆瓣电影Top250并进行数据分析
利用Python爬取豆瓣电影TOP250并进行数据分析,爬取’排名’,‘电影名称’,‘导演’,‘上映年份’,‘制作国家’,‘类型’,‘评分’,‘评价分数’,'短评’等字段。
润森
2022/08/18
4.6K0
Python爬取豆瓣电影Top250并进行数据分析
Python数据分析及可视化-小测验
本文中测验需要的文件夹下载链接: https://pan.baidu.com/s/1OqFM2TNY75iOST6fBlm6jw 密码: rmbt 下载压缩包后解压如下图所示:
潇洒坤
2018/09/10
2.3K0
Python数据分析及可视化-小测验
Python对电影Top250并进行数据分析
由于CSDN审核机制,导致原文章无法发出,故修改了相关词汇,并改为两篇问章发布。 数据分析 获取数据后,就可以对自己感兴趣的内容进行分析了 数据预处理 df = pd.read_excel("Top250.xlsx",index_col=False) df.head() 上映年份格式不统一 year = [] for i in df["上映年份"]: i = i[0:4] year.append(i) df["上映年份"] = year df["上映年份"].value_counts()
北山啦
2022/11/27
5090
Python对电影Top250并进行数据分析
记一次美妙的数据分析之旅~
本项目基于Kaggle电影影评数据集,通过这个系列,你将学到如何进行数据探索性分析(EDA),学会使用数据分析利器pandas,会用绘图包pyecharts,以及EDA时可能遇到的各种实际问题及一些处理技巧。
double
2020/02/21
9730
Python数据分析实战(2)使用Pandas进行数据分析
Pandas的使用很灵活,最重要的两个数据类型是DataFrame和Series。
cutercorley
2020/08/26
4.2K0
【python】使用代理IP爬取猫眼电影专业评分数据
在编写爬虫程序的过程中,IP封锁无疑是一个常见且棘手的问题。尽管网络上存在大量的免费IP代理网站,但其质量往往参差不齐,令人堪忧。许多代理IP的延迟过高,严重影响了爬虫的工作效率;更糟糕的是,其中不乏大量已经失效的代理IP,使用这些IP不仅无法绕过封锁,反而可能使爬虫陷入更深的困境。
小白学大数据
2024/06/08
2010
Python爬取猫眼电影专业评分数据中的应用案例
在数据分析和可视化展示中,获取准确的电影专业评分数据至关重要。猫眼电影作为中国领先的电影信息与票务平台,其专业评分对于电影行业和影迷的数据来说具有重要意义。通过Python爬虫技术,我们可以实现从猫眼电影网站上自动获取这些数据目标。通过编写爬虫程序,我们可以模拟浏览器行为,访问猫眼电影网站并提取所需的专业评分数据,为后续的数据分析和可视化提供支持。
小白学大数据
2024/01/25
2990
Python爬取豆瓣电影Top250并进行数据分析
利用Python爬取豆瓣电影TOP250并进行数据分析,爬取’排名’,‘电影名称’,‘导演’,‘上映年份’,‘制作国家’,‘类型’,‘评分’,‘评价分数’,’短评’等字段。
全栈程序员站长
2022/09/05
2.2K0
【数据分析可视化】用python分析了5000部票房,发现赚钱的电影都有这些特征~
通过上面的数据集信息可以知道:整个数据集缺失的数据比较少 其中release_date(首次上映日期)缺失1个数据,runtime(电影时长)缺失2个数据,可以通过网上查询补齐这个数据。
瑞新
2020/07/07
1.5K0
推荐阅读
相关推荐
EDA和数据挖掘实战:漫威与 DC电影收视率和票房分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档