在开始编写复盘脚本之前,必须先配置好Python运行环境。本指南基于Python 3.8版本开发,兼容3.9及以上版本。请确保你的系统中已经安装了Python。如果没有安装,请前往Python官网下载对应操作系统的安装包并安装,安装时务必勾选"Add Python to PATH"。
打开终端(Windows下为CMD或PowerShell,Mac/Linux下为Terminal),执行以下命令安装本次复盘所需的四个核心库:
安装命令:
pip install pandas matplotlib openpyxl xlsxwriter
这些库的作用分别是:pandas用于数据处理,matplotlib用于绘制趋势图,openpyxl和xlsxwriter用于生成带有格式和图表的Excel报告。
为了让你能够立刻运行代码并看到效果,我们首先编写一个脚本来生成一份模拟的“粉丝运营数据.csv”。这份文件包含了日期、新增粉丝、取关粉丝、文章阅读量、点赞数和评论数等关键字段。请创建一个名为generate_data.py的文件,并将以下代码完整复制进去。
import pandas as pd
import random
from datetime import datetime, timedelta
生成过去30天的日期列表
start_date = datetime.now() - timedelta(days=30)
dates = [start_date + timedelta(days=x) for x in range(30)]
data_list = []
total_fans = 10000 初始粉丝基数
for date in dates:
模拟数据波动
new_fans = random.randint(50, 300)
unfollow_fans = random.randint(10, 80)
views = random.randint(1000, 5000)
likes = int(views random.uniform(0.05, 0.15))
comments = int(likes random.uniform(0.1, 0.3))
total_fans = total_fans + new_fans - unfollow_fans
data_list.append({
"日期": date.strftime("%Y-%m-%d"),
"新增粉丝": new_fans,
"取关粉丝": unfollow_fans,
"当前总粉丝": total_fans,
"文章阅读量": views,
"点赞数": likes,
"评论数": comments
})
df = pd.DataFrame(data_list)
df.to_csv("粉丝运营数据.csv", index=False, encoding='utf-8-sig')
print("模拟数据已生成:粉丝运营数据.csv")
运行该脚本:
python generate_data.py
执行成功后,当前目录下会生成粉丝运营数据.csv文件,这就是我们待复盘的原始数据。
接下来是核心的复盘脚本。我们需要计算净指标(净增粉丝)、效率指标(互动率)以及健康度指标(粉丝留存/流失风险)。创建analysis_report.py文件。我们将分步骤实现数据的读取、清洗、计算、可视化及导出。
首先读取CSV文件,并确保日期格式正确,同时按日期排序以防数据乱序。

import pandas as pd
import matplotlib.pyplot as plt
设置中文字体,防止图表乱码(Windows通常为SimHei,Mac为Arial Unicode MS)
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
读取数据
df = pd.read_csv("粉丝运营数据.csv", encoding='utf-8-sig')
转换日期格式并排序
df['日期'] = pd.to_datetime(df['日期'])
df = df.sort_values('日期')
基础字段计算:净增粉丝
df['净增粉丝'] = df['新增粉丝'] - df['取关粉丝']
单纯看绝对值是不够的,我们需要计算“互动率”来衡量内容质量,以及“取关率”来衡量粉丝粘性。
计算互动率:(点赞+评论) / 阅读量
df['互动率'] = (df['点赞数'] + df['评论数']) / df['文章阅读量']
df['互动率'] = df['互动率'].apply(lambda x: round(x, 4))
计算取关率:取关粉丝 / (上一天总粉丝 + 新增粉丝)
这里简化计算:取关粉丝 / 当天结束总粉丝
df['取关率'] = df['取关粉丝'] / df['当前总粉丝']
df['取关率'] = df['取关率'].apply(lambda x: round(x, 4))
标记异常数据:如果取关率超过2%,标记为高风险
df['风险预警'] = df['取关率'].apply(lambda x: '是' if x > 0.02 else '否')
我们将生成两张图:一张展示粉丝增减趋势,一张展示互动率变化。这些图片将直接插入到最终的Excel报告中。
创建画布
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(10, 8))
图表1:粉丝趋势图
ax1.plot(df['日期'], df['新增粉丝'], label='新增粉丝', color='green', marker='o')
ax1.plot(df['日期'], df['取关粉丝'], label='取关粉丝', color='red', marker='x')
ax1.plot(df['日期'], df['净增粉丝'], label='净增粉丝', color='blue', linestyle='--')
ax1.set_title('每日粉丝增减趋势')
ax1.legend()
ax1.grid(True, linestyle='--', alpha=0.7)
图表2:互动率趋势图
ax2.plot(df['日期'], df['互动率'], label='互动率', color='purple', marker='s')
ax2.set_title('每日内容互动率趋势')
ax2.legend()
ax2.grid(True, linestyle='--', alpha=0.7)
plt.tight_layout()
plt.savefig('fans_trend.png') 保存图片
plt.close()
这是最后一步,将处理好的数据和生成的图表整合成专业的Excel报告。我们将使用pandas的ExcelWriter,并结合xlsxwriter引擎来实现高级格式设置(如条件格式、插入图片)。
output_file = "粉丝沉淀复盘报告.xlsx"
创建Excel Writer对象
writer = pd.ExcelWriter(output_file, engine='xlsxwriter')
将数据写入Sheet1,命名为“详细数据”
df.to_excel(writer, sheet_name='详细数据', index=False)
获取Workbook和Worksheet对象以进行格式设置
workbook = writer.book
worksheet = writer.sheets['详细数据']
定义格式
header_fmt = workbook.add_format({'bold': True, 'bg_color': '4F81BD', 'font_color': 'white', 'border': 1})
number_fmt = workbook.add_format({'num_format': '0.00'})
percent_fmt = workbook.add_format({'num_format': '0.00%'})
alert_fmt = workbook.add_format({'bg_color': 'FFC7CE', 'font_color': '9C0006'}) 红色警告样式
设置表头样式
for col_num, value in enumerate(df.columns.values):
worksheet.write(0, col_num, value, header_fmt)
设置列宽
worksheet.set_column('A:A', 15) 日期列宽
worksheet.set_column('B:H', 12) 数据列宽
应用条件格式:如果“风险预警”列是“是”,则整行标红(这里简化为标红该单元格)
注意:xlsxwriter条件格式较复杂,这里演示直接对特定单元格应用样式
for row_num in range(1, len(df)):
if df.iloc[row_num]['风险预警'] == '是':
worksheet.write(row_num, df.columns.get_loc('风险预警'), '是', alert_fmt)
同时将取关率标红
worksheet.write(row_num, df.columns.get_loc('取关率'), df.iloc[row_num]['取关率'], alert_fmt)
插入图表到新的Sheet
worksheet_img = workbook.add_worksheet('趋势分析')
worksheet_img.insert_image('A1', 'fans_trend.png', {'x_scale': 0.8, 'y_scale': 0.8})
添加汇总Sheet
summary_data = {
'指标': ['复盘周期总天数', '期初粉丝数', '期末粉丝数', '总净增粉丝', '平均互动率', '高风险天数'],
'数值': [
len(df),
df.iloc[0]['当前总粉丝'] - df.iloc[0]['净增粉丝'],
df.iloc[-1]['当前总粉丝'],
df['净增粉丝'].sum(),
df['互动率'].mean(),
len(df[df['风险预警'] == '是'])
]
}
df_summary = pd.DataFrame(summary_data)
df_summary.to_excel(writer, sheet_name='核心汇总', index=False)
保存并关闭
writer.close()
print(f"复盘报告已生成:{output_file}")
确保粉丝运营数据.csv、analysis_report.py在同一目录下。在终端执行以下命令启动复盘程序:
python analysis_report.py运行完毕后,目录下会生成
粉丝沉淀复盘报告.xlsx。打开该Excel文件,你将看到三个Sheet页:
在上述代码落地过程中,可能会遇到以下具体问题,请按方案解决:
1. 中文乱码问题:如果在执行绘图脚本时报错或图表中中文显示为方框,说明系统缺少中文字体。Windows系统通常默认支持SimHei(黑体)。如果是Linux服务器环境,需要下载中文字体文件(如SimHei.ttf)放到指定目录,并在代码中指定字体路径,或者直接使用英文Label以规避问题。
2. 模块未找到错误:如果提示ModuleNotFoundError: No module named 'openpyxl',说明安装步骤未成功。请检查Python环境变量,确保pip命令对应的是正在使用的Python解释器。建议使用虚拟环境(python -m venv venv)来隔离项目依赖。
3. 图片插入失败:代码中使用了insert_image,必须确保当前目录下确实存在fans_trend.png。如果绘图步骤报错中断,图片文件可能损坏或未生成,请先修复绘图部分的代码逻辑。
这套系统完全基于本地运行,无需配置服务器,数据安全可控。你可以根据实际业务,替换generate_data.py中的数据生成逻辑,改为直接连接数据库或读取API导出的真实CSV文件,即可实现真正的自动化运营复盘。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图