一、分析大纲
-
用户行为分析
- 活跃用户分析
- 统计各用户的评论频次,识别最活跃的评论者
- 评分分布分析
- 分析用户给出的评分分布,了解电影的整体评价倾向
- 正负面评论分类
- 利用情感分析等自然语言处理技术,对评论进行正负面分类,计算正负面评论占比
- 活跃用户分析
-
地域性偏好分析
- 城市评分对比
- 分析不同城市用户的平均评分,探索地域性偏好差异
- 热门城市评论热点
- 分析评论量最多的城市,挖掘用户在这些城市的关注点或喜好
- 城市评分对比
-
时间序列分析
- 评论趋势分析
- 根据"评论时间",绘制时间序列图,观察电影发布后的评论增长趋势及波动
- 评分变化分析
- 分析电影发布后不同时间段的平均评分变化,识别评分波动的关键时间点
- 评论趋势分析
-
文本挖掘与主题分析
- 关键词提取
- 从所有评论中提取高频关键词和短语,理解用户讨论的核心话题
- 主题建模
- 利用LDA等主题模型,发现评论中的隐藏主题,深入了解用户对电影的各种看法。
- 关键词提取
二、代码
import jieba
import jieba.posseg as pseg
import gensim
from gensim import corpora
from gensim.corpora import Dictionary
import stylecloud
import pandas as pd
from collections import Counter
from collections import defaultdict
from PIL import Image
from collections import Counter
from pyecharts.charts import Geo
from pyecharts.charts import Scatter
from pyecharts.charts import Line
from pyecharts import options as opts
from pyecharts.commons.utils import JsCode
from pyecharts.globals import ChartType
from scipy.stats import f_oneway
import math
import seaborn as sns
import geopandas as gpd
from wordcloud import WordCloud
import matplotlib
import matplotlib.pyplot as plt
from matplotlib.patches import Wedge, Polygon
from matplotlib.offsetbox import TextArea, AnnotationBbox
plt.rcParams['font.sans-serif']=['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False
df = pd.read_excel("独行月球.xlsx")
df.info()
df['城市'].value_counts().reset_index()
df['评分'].value_counts().reset_index()
def analyze_active_users(df, top_n=30):
"""
分析活跃用户,统计各用户的评论频次,并找出最活跃的评论者。
参数:
df (dataframe): 包含用户评论数据的DataFrame。
top_n (int): 输出的最活跃用户数量,默认为30。
返回:
most_active_users: 列表,包含最活跃的top_n个评论者的用户名。
"""
# 计算每个用户的评论次数
user_counts = Counter(df['用户名'])
# 找出评论最频繁的用户
top_users = user_counts.most_common(top_n)
print("\n活跃用户分析:")
print(f"最活跃的评论者: {
top_users[0][0]}")
print("各用户评论频次:")
for user, count in top_users:
print(f"{
user}: {
count}条评论")
return [user for user, _ in top_users]
analyze_active_users(df, top_n=30)
def analyze_movie_ratings(df):
"""
分析电影评分分布,包括统计指标计算和评分分布直方图绘制。
参数:
df (dataframe): 包含电影评分数据的CSV文件路径。
目的:
1. 加载数据,查看数据前几行确保正确加载。
2. 计算评分的平均值、中位数、最小值、最大值及众数,以获取评分概况。
3. 绘制评分分布直方图,直观展示不同评分的频率分布,帮助理解评价倾向。
"""
# 计算评分的统计指标
rating_stats = df['评分'].describe()
print("\n评分统计指标:\n", rating_stats)
# 计算众数评分
mode_rating = df['评分'].mode()[0]
print(f"\n众数评分:{
mode_rating}")
# 绘制评分分布直方图
plt.figure(figsize=(10, 6))
sns.histplot(data=df, x='评分', bins=10, kde=False)
plt.title('电影评分分布'