Pandas 1.5 数据分析实战:电影评分数据集 6 项统计指标计算与可视化

发布时间:2026/7/7 12:25:09
Pandas 1.5 数据分析实战:电影评分数据集 6 项统计指标计算与可视化 Pandas 1.5 电影评分数据分析实战从基础统计到可视化洞察电影评分数据是推荐系统、用户行为分析和市场研究的重要基础。本文将带您使用Pandas 1.5完成一个完整的电影评分数据分析项目涵盖数据加载、6项核心统计指标计算以及3种关键可视化图表制作。通过这个实战案例您不仅能掌握Pandas的最新特性还能学会如何将原始数据转化为有价值的业务洞察。1. 环境准备与数据加载在开始分析之前我们需要搭建合适的工作环境并加载数据。推荐使用Jupyter Notebook作为开发环境它能够直观地展示数据分析过程和结果。首先安装必要的Python库pip install pandas1.5.0 matplotlib seaborn jupyter典型的电影评分数据集通常包含以下字段user_id: 用户唯一标识movie_id: 电影唯一标识rating: 评分值(如1-5星)timestamp: 评分时间戳假设我们有一个名为movie_ratings.csv的数据文件使用Pandas加载数据import pandas as pd # 加载数据集 df pd.read_csv(movie_ratings.csv, names[user, movie, rating, timestamp], header0) # 查看前5行数据 print(df.head())数据加载后我们可以进行初步检查# 检查数据类型和缺失值 print(df.info()) # 描述性统计 print(df.describe())提示在实际项目中建议使用pd.to_datetime()将timestamp列转换为datetime类型便于时间序列分析。2. 基础统计分析了解数据集的基本特征是任何分析工作的第一步。我们将计算6个核心统计指标用户数电影数评分数目平均评分最高评分最低评分使用Pandas 1.5的新特性进行计算def basic_statistics(data): stats { 用户数: data[user].nunique(), 电影数: data[movie].nunique(), 评分数目: len(data), 平均评分: data[rating].mean(), 最高评分: data[rating].max(), 最低评分: data[rating].min() } return pd.Series(stats) basic_stats basic_statistics(df) print(basic_stats)Pandas 1.5在性能上的改进使得这些聚合计算更加高效特别是对于大型数据集。我们可以进一步分析评分的分布# 评分分布统计 rating_dist df[rating].value_counts().sort_index() print(rating_dist)3. 深入数据分析基础统计只能提供数据的概览深入分析能揭示更有价值的模式。我们将从用户和电影两个维度进行深入分析。3.1 用户评分分析计算每个用户的平均评分user_avg_rating df.groupby(user)[rating].mean().reset_index(nameavg_rating) user_avg_rating user_avg_rating.sort_values(avg_rating, ascendingFalse) print(user_avg_rating.head(10))3.2 电影评分分析同样地我们可以分析电影的评分情况movie_avg_rating df.groupby(movie)[rating].mean().reset_index(nameavg_rating) movie_avg_rating movie_avg_rating.sort_values(avg_rating, ascendingFalse) print(movie_avg_rating.head(10))3.3 评分时间分析将时间戳转换为日期后我们可以分析评分的时间模式df[date] pd.to_datetime(df[timestamp], units).dt.date daily_ratings df.groupby(date).size() print(daily_ratings.head())4. 数据可视化可视化是理解数据的关键步骤。我们将创建3种核心图表来展示分析结果。4.1 评分分布直方图使用Matplotlib绘制评分分布import matplotlib.pyplot as plt import seaborn as sns plt.figure(figsize(10, 6)) sns.histplot(datadf, xrating, bins5, kdeTrue) plt.title(电影评分分布) plt.xlabel(评分) plt.ylabel(数量) plt.show()4.2 用户/电影平均评分Top10条形图展示评分最高的用户和电影# 用户平均评分Top10 plt.figure(figsize(12, 6)) sns.barplot(datauser_avg_rating.head(10), xuser, yavg_rating) plt.title(平均评分最高的10位用户) plt.ylim(0, 5) plt.show() # 电影平均评分Top10 plt.figure(figsize(12, 6)) sns.barplot(datamovie_avg_rating.head(10), xmovie, yavg_rating) plt.title(平均评分最高的10部电影) plt.ylim(0, 5) plt.show()4.3 评分时间趋势图分析评分数量随时间的变化plt.figure(figsize(12, 6)) daily_ratings.plot() plt.title(每日评分数量变化) plt.xlabel(日期) plt.ylabel(评分数量) plt.grid(True) plt.show()5. 高级分析与技巧除了基础分析外Pandas 1.5还提供了一些高级功能可以帮助我们更深入地理解数据。5.1 评分偏差分析计算每部电影的评分标准差了解评分的离散程度movie_rating_std df.groupby(movie)[rating].std().reset_index(namerating_std) movie_stats movie_avg_rating.merge(movie_rating_std, onmovie) print(movie_stats.sort_values(rating_std, ascendingFalse).head())5.2 用户活跃度分析识别最活跃的用户user_activity df[user].value_counts().reset_index() user_activity.columns [user, rating_count] print(user_activity.sort_values(rating_count, ascendingFalse).head(10))5.3 电影流行度与评分关系探索电影受欢迎程度与其评分的关系movie_popularity df[movie].value_counts().reset_index() movie_popularity.columns [movie, popularity] movie_stats movie_stats.merge(movie_popularity, onmovie) plt.figure(figsize(10, 6)) sns.scatterplot(datamovie_stats, xpopularity, yavg_rating, alpha0.6) plt.title(电影流行度与平均评分关系) plt.show()6. 实际应用与扩展掌握了这些分析技术后我们可以将其应用于实际业务场景推荐系统优化基于用户评分模式改进推荐算法异常检测识别评分异常的电影或用户市场分析了解不同类型电影的表现差异用户分群根据评分行为对用户进行分群Pandas 1.5在性能上的改进特别适合处理大规模评分数据。例如它的内存使用更高效对于包含数百万评分的数据库也能流畅处理。# 示例使用Pandas 1.5的eval()进行高效计算 result pd.eval(df[rating] 3) print(result.mean()) # 评分高于3的比例电影评分数据分析是一个持续的过程。随着新评分的不断加入定期更新分析结果可以帮助我们捕捉最新的趋势和模式。