# PandasAI 多表分析：按客户 ID 联查两张 CSV，核对复购率与未匹配订单

本站Python参考已按ID关联、去重、过滤退款和时间窗口，核得2/5=40%、1条未匹配及1条重复；未安装PandasAI或运行其生成代码/模型/Docker sandbox。

## 版本与门槛

PandasAI v3.0.0，Python>=3.8,<3.12及pandasai-litellm扩展；云模型另计费。一般代码MIT Expat、pandasai/ee另有许可。生成代码须审查后隔离执行。

## 操作步骤

1. 先把复购口径写清楚

本题窗口为2026年10月，分母是有至少1个有效订单的客户，分子是至少2个有效订单的客户。退款不计，有效客户必须存在于customers.csv；不能用全部注册人数或订单总数替代分母。

2. 检查两张表的关联键和反例

customers里C02/C03同名但ID不同，orders另含C99未匹配、重复O01、退款O08和9月O10。先打开CSV看这些记录，编号保持字符串，不按姓名合并，也不在Join后静默丢C99。

3. 准备独立的PandasAI 3环境

使用Python3.8–3.11独立环境安装pandasai和pandasai-litellm，按所选供应商配置模型。示例pandasai_task.py只读取环境变量，不含Key；不能在Python3.12+报依赖错误后声称教程模型不可用。

4. 把两个DataFrame一起交给pai.chat

读取两张CSV，将prompt.md和两个DataFrame同时传给pai.chat。要求返回逐客户次数、未匹配表和代码，而非只有一句40%。模型输出是提案，必须查看生成的关联、筛选和去重逻辑。

5. 审查代码再在隔离环境运行

确认只读取本题文件、只写新输出，没有网络、凭据扫描或覆盖原始CSV。按官方DockerSandbox或自己隔离环境运行；本包未运行模型代码，pandasai_task.py不能当成已完成工具调用。

6. 对照逐客户次数与异常订单

独立参考计数C01=2、C02=1、C03=1、C04=2、C05=1，O09/C99应单独列出。若模型把两个同名客户合并，复购率会失真；若退款成为第二单，也必须回到状态过滤纠正。

7. 核对分子分母和去重结果

运行stats_reference.py可得分子2、分母5、40%，并另列1条未匹配与1条重复。独立参考只针对这份教材，不代表PandasAI正确率。冲突重复不能随便保留第一条，0分母应明确无有效客户。

8. 交付实际运行代码和异常清单

保存目标工具真实生成代码、人工修改、逐客户表、unmatched-orders.csv与执行日志；实际费用按模型记录。CSV来源或窗口一改就重新算，不把演示40%写成真实业务复购率或营销效果。

## 本地参考与运行

本站Python参考已按ID关联、去重、过滤退款和时间窗口，核得2/5=40%、1条未匹配及1条重复；未安装PandasAI或运行其生成代码/模型/Docker sandbox。

运行 `python3 verify.py` 检查材料；原生文档检查需要pypdf、openpyxl或lxml。需要重建参考时运行本包对应reference.py；这些脚本不调用模型。

## 官方来源

- https://github.com/sinaptik-ai/pandas-ai/releases/tag/v3.0.0
- https://github.com/sinaptik-ai/pandas-ai/blob/v3.0.0/README.md
- https://github.com/sinaptik-ai/pandas-ai/blob/main/pyproject.toml
- https://github.com/sinaptik-ai/pandas-ai/blob/main/LICENSE

## 素材身份与许可

本站原创教学输入与参考代码采用CC0-1.0；官方截图仅用于识别软件和说明操作入口，其版权归相应项目。工具与模型许可分别按官方来源执行。请勿将人工/参考算法文件描述成目标软件或模型的实际结果。
