|
@@ -238,8 +238,49 @@ log(f"渠道数: {df['channel'].nunique()}")
|
|
|
log(f"品类数: {df['merge一级品类'].nunique()}")
|
|
log(f"品类数: {df['merge一级品类'].nunique()}")
|
|
|
log()
|
|
log()
|
|
|
|
|
|
|
|
-# 保存
|
|
|
|
|
|
|
+# 保存 TXT
|
|
|
result_file = output_dir / f"{latest_file.stem}_分析.txt"
|
|
result_file = output_dir / f"{latest_file.stem}_分析.txt"
|
|
|
with open(result_file, 'w', encoding='utf-8') as f:
|
|
with open(result_file, 'w', encoding='utf-8') as f:
|
|
|
f.write("\n".join(lines))
|
|
f.write("\n".join(lines))
|
|
|
log(f"结果已保存: {result_file}")
|
|
log(f"结果已保存: {result_file}")
|
|
|
|
|
+
|
|
|
|
|
+# ============================================================
|
|
|
|
|
+# 导出多个 CSV
|
|
|
|
|
+# ============================================================
|
|
|
|
|
+log()
|
|
|
|
|
+log("=" * 80)
|
|
|
|
|
+log("导出 CSV 文件")
|
|
|
|
|
+log("=" * 80)
|
|
|
|
|
+
|
|
|
|
|
+# 1. 渠道整体表现
|
|
|
|
|
+channel_csv = channel_stats[['channel', '点击uv', '进入推荐率', '再分享回流率', '原视频再分享回流率', '推荐再分享回流率']].copy()
|
|
|
|
|
+channel_csv.columns = ['渠道', '点击UV', '进入推荐率', '再分享回流率', '原视频回流率', '推荐回流率']
|
|
|
|
|
+channel_csv.to_csv(output_dir / f"{latest_file.stem}_渠道整体.csv", index=False, encoding='utf-8-sig')
|
|
|
|
|
+log(f" 渠道整体表现: {latest_file.stem}_渠道整体.csv")
|
|
|
|
|
+
|
|
|
|
|
+# 2. 渠道×一级品类矩阵
|
|
|
|
|
+pivot_ror_csv = pivot_ror.copy()
|
|
|
|
|
+pivot_ror_csv.index.name = '一级品类'
|
|
|
|
|
+pivot_ror_csv.to_csv(output_dir / f"{latest_file.stem}_渠道品类矩阵.csv", encoding='utf-8-sig')
|
|
|
|
|
+log(f" 渠道×品类矩阵: {latest_file.stem}_渠道品类矩阵.csv")
|
|
|
|
|
+
|
|
|
|
|
+# 3. 渠道×品类明细
|
|
|
|
|
+channel_category_csv = channel_category.copy()
|
|
|
|
|
+channel_category_csv.columns = ['渠道', '一级品类', '点击UV', '回流率']
|
|
|
|
|
+channel_category_csv = channel_category_csv.sort_values(['渠道', '点击UV'], ascending=[True, False])
|
|
|
|
|
+channel_category_csv.to_csv(output_dir / f"{latest_file.stem}_渠道品类明细.csv", index=False, encoding='utf-8-sig')
|
|
|
|
|
+log(f" 渠道×品类明细: {latest_file.stem}_渠道品类明细.csv")
|
|
|
|
|
+
|
|
|
|
|
+# 4. 渠道×二级品类 Top
|
|
|
|
|
+if 'merge二级品类' in df.columns:
|
|
|
|
|
+ cat2_csv = channel_cat2[channel_cat2['点击uv'] >= 100].copy()
|
|
|
|
|
+ cat2_csv.columns = ['渠道', '一级品类', '二级品类', '点击UV', '回流率']
|
|
|
|
|
+ cat2_csv = cat2_csv.sort_values('回流率', ascending=False)
|
|
|
|
|
+ cat2_csv.to_csv(output_dir / f"{latest_file.stem}_渠道二级品类.csv", index=False, encoding='utf-8-sig')
|
|
|
|
|
+ log(f" 渠道×二级品类: {latest_file.stem}_渠道二级品类.csv")
|
|
|
|
|
+
|
|
|
|
|
+# 5. 每日趋势
|
|
|
|
|
+daily_csv = daily_channel.copy()
|
|
|
|
|
+daily_csv.columns = ['日期', '渠道', '点击UV', '回流率']
|
|
|
|
|
+daily_csv.to_csv(output_dir / f"{latest_file.stem}_每日趋势.csv", index=False, encoding='utf-8-sig')
|
|
|
|
|
+log(f" 每日趋势: {latest_file.stem}_每日趋势.csv")
|