6月5日
import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from pathlib import Path import logging from datetime import datetime # 配置日志 logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) def load_data(file_path): """加载数据""" try: df = pd.read_csv(file_path) logger.info(f"成功加载数据,共 {len(df)} 行") return df except Exception as e: logger.error(f"加载数据失败: {e}") raise def generate_report(df): """生成分析报告""" try: # 创建报告目录 report_dir = Path('output/report') report_dir.mkdir(exist_ok=True) # 生成报告文件名(包含时间戳) timestamp = datetime.now().strftime('%Y%m%d_%H%M%S') report_file = report_dir / f'analysis_report_{timestamp}.md' # 计算基本统计信息 total_reviews = len(df) recommended_reviews = len(df[df['是否推荐'] == '推荐']) not_recommended_reviews = len(df[df['是否推荐'] == '不推荐']) recommendation_rate = (recommended_reviews / total_reviews) * 100 # 计算游戏时长统计 playtime_stats = df['大圣游戏时长'].describe() # 生成报告内容 report_content = f"""# 黑神话:悟空 游戏评价分析报告 ## 1. 基本统计信息 - 总评论数:{total_reviews:,} 条 - 推荐评论数:{recommended_reviews:,} 条 - 不推荐评论数:{not_recommended_reviews:,} 条 - 推荐率:{recommendation_rate:.1f}% ## 2. 游戏时长分析 - 平均游戏时长:{playtime_stats['mean']:.1f} 小时 - 最短游戏时长:{playtime_stats['min']:.1f} 小时 - 最长游戏时长:{playtime_stats['max']:.1f} 小时 - 中位数游戏时长:{playtime_stats['50%']:.1f} 小时 ## 3. 可视化分析 ### 3.1 每日评价趋势 从每日评价人数曲线图可以看出游戏评价的时间分布情况,帮助了解玩家评价的集中时间段。 ### 3.2 推荐/不推荐比例 饼图展示了玩家对游戏的总体评价倾向,反映了游戏的整体口碑。 ### 3.3 游戏时长与推荐关系 箱线图展示了游戏时长与推荐率之间的关系,帮助理解游戏时长对玩家评价的影响。 ### 3.4 词云分析 - 推荐评论词云:展示了玩家对游戏正面评价中的关键词 - 不推荐评论词云:展示了玩家对游戏负面评价中的关键词 ## 4. 主要发现 1. 游戏整体评价: - 推荐率超过 {recommendation_rate:.1f}%,表明游戏获得了较高的玩家认可 - 评价数量达到 {total_reviews:,} 条,说明游戏具有较高的关注度 2. 游戏时长分析: - 玩家平均游戏时长达到 {playtime_stats['mean']:.1f} 小时 - 游戏时长分布显示玩家投入度较高 3. 评价内容分析: - 通过词云图可以直观地看到玩家最关注和讨论的游戏特点 - 推荐和不推荐评论的关键词对比,反映了游戏的优缺点 ## 5. 建议 1. 游戏优化: - 根据不推荐评论中的关键词,针对性地改进游戏体验 - 关注玩家反馈集中的问题点 2. 运营策略: - 利用游戏的优势特点进行宣传 - 针对玩家关注的重点进行内容更新 ## 6. 结论 黑神话:悟空作为一款国产动作游戏,获得了较高的玩家认可度。游戏时长数据显示玩家投入度较高,评价内容反映了游戏的特色和需要改进的地方。建议继续优化游戏体验,保持与玩家的良好互动。 --- *报告生成时间:{datetime.now().strftime('%Y-%m-%d %H:%M:%S')}* """ # 保存报告 with open(report_file, 'w', encoding='utf-8') as f: f.write(report_content) logger.info(f"分析报告已生成:{report_file}") return report_file except Exception as e: logger.error(f"生成报告失败: {e}") raise def main(): try: # 加载数据 df = load_data('csv/wukong.csv') # 生成报告 report_file = generate_report(df) logger.info("报告生成完成") logger.info(f"报告文件位置:{report_file}") except Exception as e: logger.error(f"程序执行失败: {e}") raise if __name__ == '__main__': main()
报告

浙公网安备 33010602011771号