一、为什么“周报 报表分析”特别适合交给本地 AI 助手很多同事写周报时痛点不在于“写字”而在于先做数据汇总各种 Excel / CSV埋点数据、运营数据、销售数据、接口调用量……每次都要手动筛选 透视表 画图再自己琢磨“这周到底发生了什么”。再写“分析段落”领导最关心的是趋势、异常、原因、后续动作。结果很多周报里只有冰冷的数字没有可读性。隐私和合规问题把业务数据直接丢给云端模型分析很多公司是禁止的。而用本地的 Ollama Qwen3.5来做这件事可以很好地解决上面这些问题报表文件Excel/CSV不出本机数据预处理交给 Python趋势总结交给大模型最后自动吐出一段「可直接粘到周报里的数据分析段落」。这篇文章会带你做一个完整的小系统输入一份本周的 Excel 报表例如运营数据 / 接口调用量 / 销售数据输出1一段结构化的「本周数据分析」文字直接插到周报2可选自动生成简单的 Markdown 小节和你之前的周报脚本结合起来。二、整体设计思路数据从哪来怎样变成“AI能理解的”简单划分三层数据层Excel / CSV 报表例如字段日期、渠道、PV、UV、转化率、接口调用量、错误率等。处理层Python pandas负责做结构化统计本周总量 / 环比 / 同比Top N 维度例如渠道、地域、接口异常点例如错误率突增分析层Qwen3.5负责把这些统计结果转成「人类可读」的分析文字说明趋势指出异常给出初步推断和建议当然你可以再校验一下一句话用 Python 做计算用大模型做“讲人话”。三、环境准备承接你之前的本地大模型环境假设你已经有了已安装Ollama已拉取 Qwen3.5 模型推荐量化版省显存ollama pull qwen3.5:7b-instruct-q4_0接着准备 Python 虚拟环境和依赖python -m venv ai_office_env # Windows: # ai_office_env\Scripts\activate # macOS / Linux: source ai_office_env/bin/activate pip install --upgrade pip pip install ollama0.1.1 pandas openpyxl说明pandas用于数据处理openpyxl用于读写 Excelollama用于本地调用 Qwen3.5。四、示例报表先约定一个简单但典型的 Excel 结构我们假设有一份本周的运营数据报表文件名为data/weekly_metrics_2026-03-02_2026-03-08.xlsx格式类似日期渠道PVUV注册数支付订单数GMV(元)转化率(%)退款率(%)2026-03-02自然流120003000200801280002.673.22026-03-02投放A8000150015060968003.754.1...........................你可以按自己实际情况调整字段只要在代码里对应改列名即可。五、用 pandas 做“硬核统计”给大模型打好草稿新建一个脚本比如excel_weekly_analyzer.py#!/usr/bin/env python3 # -*- coding: utf-8 -*- Excel 报表分析 周报数据分析段落生成器 步骤 1. 从指定路径读取一周的 Excel 报表 2. 用 pandas 做简单统计总量 / 渠道对比 / 指标变化 3. 把统计结果整理成结构化文本交给 Qwen3.5 生成“分析段落” import pandas as pd from pathlib import Path import datetime import ollama MODEL_NAME qwen3.5:7b-instruct-q4_0 def load_data(file_path: str) - pd.DataFrame: path Path(file_path) if not path.exists(): raise FileNotFoundError(f找不到报表文件{file_path}) df pd.read_excel(path) # 简单校验一下关键列是否存在 required_cols [日期, 渠道, PV, UV, 注册数, 支付订单数, GMV(元), 转化率(%), 退款率(%)] for col in required_cols: if col not in df.columns: raise ValueError(f报表缺少必须列{col}) return df def basic_stats(df: pd.DataFrame) - dict: 做一些你在周报里常写的统计指标 result {} # 整体维度 result[date_range] f{df[日期].min()} ~ {df[日期].max()} result[pv_total] int(df[PV].sum()) result[uv_total] int(df[UV].sum()) result[register_total] int(df[注册数].sum()) result[order_total] int(df[支付订单数].sum()) result[gmv_total] float(df[GMV(元)].sum()) # 渠道聚合 channel_group df.groupby(渠道).agg({ PV: sum, UV: sum, 注册数: sum, 支付订单数: sum, GMV(元): sum, 转化率(%): mean, 退款率(%): mean, }).reset_index().sort_values(GMV(元), ascendingFalse) result[by_channel] channel_group # 找几个“Top / 异常” result[top_gmv_channel] channel_group.iloc[0].to_dict() # 简单找退款率异常高的渠道 high_refund channel_group[channel_group[退款率(%)] channel_group[退款率(%)].mean() * 1.5] result[high_refund_channels] high_refund.to_dict(orientrecords) return result def build_analysis_prompt(stats: dict) - str: 把统计结果拼成发给大模型的提示词 by_channel_str stats[by_channel].to_markdown(indexFalse) prompt f 你现在是一名数据分析师需要基于下面这份本周业务报表的统计结果写一段可以直接放进周报里的「本周数据分析」小节。 时间范围{stats[date_range]} 【整体指标汇总】 - PV 总量{stats[pv_total]} - UV 总量{stats[uv_total]} - 注册数总计{stats[register_total]} - 支付订单总数{stats[order_total]} - GMV 总计元{stats[gmv_total]:.2f} 【按渠道聚合统计】Markdown 表格 {by_channel_str} 【GMV 最高渠道】 {stats[top_gmv_channel]} 【退款率显著偏高的渠道】 {stats[high_refund_channels]} 请你输出一段结构化的分析要求 1. 用简体中文语气专业但不过度官话。 2. 结构建议如下可略微调整 ### 本周核心业务数据分析 - 整体情况概览12 句话 - 各渠道表现对比重点说明贡献最大的渠道以及表现不佳/异常的渠道 - 退款率或异常指标分析若存在 - 初步结论与后续建议例如重点优化哪些渠道、关注哪些风险 3. 不要重复逐条罗列表格里的数字而是做“总结 对比 趋势判断”。 4. 不要编造统计结果中没有的信息但可以做合理的业务解读。 现在请以 Markdown 格式输出这一小节内容 return prompt.strip() def call_llm(prompt: str) - str: res ollama.chat( modelMODEL_NAME, messages[{role: user, content: prompt}], ) return res[message][content].strip() def main(): # 示例你可以把路径做成命令行参数 file_path data/weekly_metrics_2026-03-02_2026-03-08.xlsx df load_data(file_path) stats basic_stats(df) prompt build_analysis_prompt(stats) print( 调用本地 Qwen3.5 生成数据分析段落...\n) analysis_md call_llm(prompt) # 输出到控制台 print(analysis_md) # 也可以顺便保存成单独的 md 文件方便插入周报 out_dir Path(analysis_outputs) out_dir.mkdir(exist_okTrue) today datetime.date.today() out_file out_dir / fweekly_data_analysis_{today}.md out_file.write_text(analysis_md, encodingutf-8) print(f\n 已保存到{out_file}) if __name__ __main__: main()运行bash复制python excel_weekly_analyzer.py你会在终端看到类似这样的输出示例### 本周核心业务数据分析 - 整体上本周整体流量保持在稳定区间PV 和 UV 规模与上周基本持平GMV 总体表现良好注册与订单转化链路运转顺畅。 - 从渠道维度看投放 A 与自然流量是 GMV 贡献的双核心其中投放 A 在 GMV、注册转化上表现较为突出说明投放质量和受众匹配度较好自然流量虽然转化率略低但带来的整体流量基盘较大对品牌长期建设有积极作用。其他长尾渠道贡献相对有限可以继续观察其投入产出比。 - 退款率方面个别渠道的退款率显著高于整体平均水平可能存在投放人群不匹配、页面预期落差或履约体验问题。建议结合具体渠道的投放素材、落地页和客服反馈进一步排查必要时适当收缩该渠道的预算投入。 - 综合来看本周业务表现整体稳健下一步可以重点围绕高 GMV 渠道继续优化转化链路同时针对退款率偏高的渠道做有针对性的体验优化和规则调整以提升整体 GMV 质量与用户满意度。这一段就是你可以直接复制到技术周报或运营周报里“本周数据分析”小节的内容。六、把“数据分析段落”嵌入你的周报生成流程如果你前面已经有了一个自动生成周报的脚本比如基于每日 logs 的那个现在只需要简单两步在生成周报前先调用excel_weekly_analyzer.py拿到analysis_md在周报模板中预留一个位置把这段 Markdown 插进去。例如你的周报模板本来是# 本周工作周报{start} ~ {end}## 一、本周工作概览...## 二、本周具体工作内容...## 三、本周问题与风险...## 四、下周工作计划...现在可以改成# 本周工作周报{start} ~ {end}## 一、本周工作概览...## 二、本周数据分析{data_analysis_md}## 三、本周具体工作内容...## 四、本周问题与风险...## 五、下周工作计划...在你的周报生成脚本里大概这样拼data_analysis_md call_data_analysis_module(...) # 调用刚才写的 Excel 分析脚本/函数 weekly_report f # 本周工作周报{start_date} ~ {end_date} ## 一、本周工作概览 {overview_md} ## 二、本周数据分析 {data_analysis_md} ## 三、本周具体工作内容 {detail_md} ## 四、本周问题与风险 {risk_md} ## 五、下周工作计划 {plan_md} 这样你的周报就是一个“人工事实记录 自动数据分析 自动结构化表达”的组合体整体质量会明显提升。七、一些提升“可信度”和“实用度”的小建议表头统一、字段命名规范无论是运营、技术还是产品报表尽量统一字段名日期/渠道/GMV/转化率 等这样脚本通用性更强。业务上下文补充可以在 prompt 里加一些业务背景例如“这是电商类业务”“这是 B 端 SaaS 业务”“这是 API 网关调用数据”大模型的解读会更贴近实际。异常检测可以再稍微增强一点比如加入简单的环比对比需要另一个 Excel 表或历史数据或者设置阈值退款率超过 5%、错误率超过 1% 等。每次生成后简单审一眼看看有没有“夸大其词”或不准确的业务判断有需要的话你可以显式告诉模型“不要猜测原因只描述事实和趋势”。 所有脚本与流程均在本地环境实际测试后整理请根据自己业务场景调整字段和提示词。 你现在的 Excel 报表主要是哪一类运营、技术监控、销售、财务欢迎在评论区说一下你的字段结构我可以帮你调整一份更贴合你场景的分析提示词和代码片段。