当前位置:首页>python>我用Python把数据周报从3小时压缩到10分钟

我用Python把数据周报从3小时压缩到10分钟

  • 2026-10-11 06:22:18
我用Python把数据周报从3小时压缩到10分钟

我用Python把数据周报从3小时压缩到10分钟

这是「数据运营」公众号重新启动后的第一篇文章。 之后我会定期分享实战可运行的数据分析方案。欢迎关注。


你是不是也这样?

每周五下午,准时开始做周报。

打开好几个系统,导出Excel,手动VLOOKUP,复制粘贴到模板,调格式,检查数据有没有错……一套下来,3个小时没了。

这3个小时里,你其实没有在做分析。你在做搬运工的活。

我做了10年数据分析,这套动作重复了无数次。直到有一天我算了一笔账:

每周3小时 × 一年50周 = 150小时 150小时,足够学完一门新技能,足够做一个完整的分析项目。

于是我用Python把这套流程自动化了。现在每周五,脚本跑10分钟,我去倒杯咖啡,回来数据已经好了。

今天把这套方案完整分享给你。


自动化的核心思路

周报自动化的本质,就是把这4步交给代码:

1. 自动从数据库/系统导出数据 2. 自动清洗、计算、汇总 3. 自动填入报表模板 4. 自动生成图表 

每一步都不难,拼起来就是一套完整的工作流。


第一步:自动取数

大部分公司的数据存在数据库里,或者每天会导出一份Excel。

如果是数据库:用 pymysql 或 sqlalchemy 直接连,SQL查询结果直接变成DataFrame。

import pandas as pd from sqlalchemy import create_engine  # 连接数据库 engine = create_engine('mysql+pymysql://user:pwd@host:3306/dbname')  # 跑SQL,结果直接变成DataFrame df = pd.read_sql("""     SELECT          DATE(create_time) as date,         COUNT(*) as order_cnt,         SUM(amount) as total_amount     FROM orders     WHERE create_time >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)     GROUP BY DATE(create_time) """, engine) 

如果是每天手动导出Excel:用 pandas 读取,路径写死或者用 glob 自动找最新文件。

import glob  # 自动找最新的Excel文件 files = glob.glob('/path/to/exports/*.xlsx') latest_file = max(files, key=os.path.getmtime) df = pd.read_excel(latest_file) 

第二步:自动计算

这一步是把你平时手动做的计算,写成代码。

以周报最常见的几个指标为例:

# 计算环比 df['order_cnt_prev'] = df['order_cnt'].shift(1) df['growth_rate'] = (df['order_cnt'] - df['order_cnt_prev']) / df['order_cnt_prev']  # 计算累计 df['cum_order_cnt'] = df['order_cnt'].cumsum()  # 计算达成率(假设目标是每周1000单) target = 1000 df['achieve_rate'] = df['order_cnt'] / target 

关键点:把业务逻辑写成函数,以后改指标只需改函数,不用改整体结构。

def calculate_kpi(df, target_col, date_col='date'):     """计算核心KPI:同比、环比、达成率"""     df = df.sort_values(date_col)     result = df.copy()     result['mom'] = df[target_col].pct_change()     result['yoy'] = df[target_col].pct_change(4)  # 假设按周,4周前     return result 

第三步:自动填入报表

周报一般有固定模板,比如公司规定的Excel格式,或者需要填入PPT。

填入Excel模板:用 openpyxl,定位到指定单元格写入。

from openpyxl import load_workbook  wb = load_workbook('周报模板.xlsx') ws = wb.active  # 直接写入指定单元格 ws['B2'] = df['order_cnt'].sum()          # 本周总订单 ws['B3'] = df['growth_rate'].iloc[-1]     # 最新环比 ws['B4'] = df['achieve_rate'].iloc[-1]   # 达成率  wb.save(f'周报_{pd.Today()}.xlsx') 

生成PPT:用 python-pptx,自动把图表和数字填进去。

from pptx import Presentation  prs = Presentation('周报模板.pptx') slide = prs.slides[0]  # 填入标题 slide.shapes.title.text = f"数据周报({pd.Today()})"  # 填入数字 for shape in slide.shapes:     if shape.name == "order_cnt":         shape.text = str(df['order_cnt'].sum())  prs.save(f'周报_{pd.Today()}.pptx') 

第四步:自动发邮件

周报做完,自动发给领导/团队。

import smtplib from email.mime.multipart import MIMEMultipart from email.mime.application import MIMEApplication  msg = MIMEMultipart() msg['Subject'] = f'数据周报({pd.Today()})' msg['From'] = 'your_email@company.com' msg['To'] = 'boss@company.com'  # 附件:刚生成的Excel with open(f'周报_{pd.Today()}.xlsx', 'rb') as f:     attachment = MIMEApplication(f.read())     attachment.add_header('Content-Disposition', 'attachment',                           filename=f'周报_{pd.Today()}.xlsx')     msg.attach(attachment)  # 发送 with smtplib.SMTP('smtp.company.com', 587) as server:     server.starttls()     server.login('your_email@company.com', 'password')     server.send_message(msg) 

完整工作流(整合版)

把上面几步串起来,就是完整的自动化脚本:

def weekly_report():     """每周自动生成数据周报"""      # 1. 取数     df = fetch_data()      # 2. 计算     df = calculate_kpi(df)      # 3. 填入报表     export_excel(df)     export_ppt(df)      # 4. 发送     send_email()      print(f"✅ 周报已生成,耗时 {time.time() - start:.1f} 秒")  # 设置定时任务(每周五17:00自动运行) # Windows:任务计划程序 # Mac/Linux:crontab -e → 0 17 * * 5 python weekly_report.py 

实际效果

环节
手动耗时
自动化后
导出数据
15分钟
30秒
清洗计算
60分钟
2分钟
填报表
45分钟
1分钟
做图表
30分钟
自动生成
发邮件
10分钟
自动发送
合计160分钟<10分钟

省下来的2.5小时,我用来做了两件事: 1. 真的做分析——找数据背后的问题,而不只是汇报数据 2. 学新东西——173小时/年,足够学完一门Python进阶课


你可以怎么开始

不需要一口气做完整个流程。按这个顺序来:

第一周:只做第一步,用Python读数据,手动做后面第二周:加入计算逻辑,手动填报表第三周:接入报表模板自动填入第四周:加入自动发邮件  

四周之后,你的周五下午就自由了。


最后

这是「数据运营」重启后的第一篇文章。之后我会围绕这几个方向持续更新:

  • Python数据分析实战(像今天这篇)
  • SQL技巧与性能优化
  • 数据运营方法论
  • 真实项目案例

如果你有想看的主题,欢迎在后台留言。 我优先写大家最需要的内容。


作者:和尚,18年数据从业经验,目前从事美容健康行业数据分析。微信公众号:数据运营

最新文章

随机文章