在实际工程项目中,要为AI模型(例如Gemini)编写能直接执行数据清洗任务的Python脚本,其实是一项需要精细打磨的工作。不同团队对提示词的偏好差异极大:有的开发者追求指令精确到每个字,每条操作都像代码一样严谨;有的业务人员更习惯自然描述,附带具体样例才能理解意图;还有的团队需要在服务器或CI/CD流水线中运行脚本,必须提前考虑异常处理与调试输出。下面我将详细拆解这三类风格的提示词编写方法。

结构化指令风格(适合严谨型开发者)
这种风格的核心在于“把话讲死”,不给AI任何自由发挥的余地,每一条指令都像约束条件一样明确。具体如何编写?
- 【输入数据格式】CSV文件,支持任意列名
- 【清洗目标】标准化格式、处理缺失值、统一列命名
- 【输出要求】清洗后保存为同名CSV文件
第二步,将清洗动作逐条列出,每条都以动词开头。例如“删除所有空行”、“将列名转换为小写加下划线格式”、“数值列缺失值用中位数填充”。不要解释原理,更不要添加“请”、“可以”这类委婉词,直接说明“做什么”。
第三步,强制指定Python库的限制范围。明确写出:“仅使用pandas和numpy,禁用openpyxl等其他库”,否则Gemini可能引入不兼容的库导致运行时错误。关键是必须锁定在pandas和numpy两个核心库,不提供第三个选项。
最后一步,追加硬性约束:“生成的代码必须是可直接执行的完整脚本,包含import、读取文件、清洗逻辑、保存结果四个部分,无注释、无说明性文字、无input()交互。”这样复制出的脚本可以直接丢进命令行运行,无需任何手动修改。
自然语言+示例风格(适合业务侧或初学者)
这种风格正好相反,不需要一开始就堆砌规则,而是通过场景和例子来引导。编写方法也不复杂。
方式一:先用一句“你是一个数据清洗工程师”设定角色,然后描述具体场景。例如“现在有一份销售表sales_2024.csv,包含‘订单日期’‘客户ID’‘金额’三列,但存在日期格式混乱、客户ID含空格、金额列有‘N/A’字符串”。描述得越贴近真实数据,Gemini的理解就越准确。
方式二:提供清洗前后的对比样例。直接展示“清洗前:‘2024/03/15’‘CUST-001’‘N/A’ → 清洗后:‘2024-03-15’‘cust_001’‘0.0’”。一行代码都不用写,仅靠前后对比就能清晰传达“要做什么”。
方式三:用“请按这个顺序处理”收尾,将动作包装成口语化指令。比如“先统一日期格式,再清理客户ID中的空格和大小写,接着把N/A替换成0并转为浮点数,最后保存为cleaned_sales.csv”。整个过程就像在和一个能听懂人话的同事分配任务,AI的理解力和生成代码质量通常不错。
工程化调试风格(适合部署环境或CI/CD集成)
这种提示词风格专门为“脚本出错了怎么办”而设计,核心是容错与可观测性。分为四个关键要点来编写。
① 开头即声明容错要求。直接写“脚本需捕获FileNotFoundError、ValueError、TypeError,并打印清晰的错误信息,不中断执行”。这样生成的脚本不会因为一个文件找不到就崩溃,而是会告知原因后继续运行。
② 在每个清洗步骤后面插入校验断言。例如“清洗后检查:len(df) > 0 and ‘金额’ in df.columns”,失败时触发AssertionError并附上提示文字。这样做的好处是,一旦某步处理出错,脚本会立刻定位问题点,而不是到最后保存时才报错。
③ 文件路径必须参数化。写成“filepath = sys.argv[1] if len(sys.argv) > 1 else ‘input.csv’”。避免硬编码路径,因为服务器上的目录结构与开发环境完全不同,硬编码大概率无法运行。
④ 最后一行强制添加执行反馈:print(f"✅ 清洗完成:{len(df)} 行数据已保存至 cleaned_output.csv")。这样脚本运行后成功与否、输出了多少行数据一目了然,无需手动去数行数。
总结来说,这三种风格没有优劣之分,关键取决于使用场景。写代码的人偏爱结构化,只关心执行;做业务的人需要情景,否则难以理解;部署脚本的人最怕运行中断,因此需要容错和日志。只要将提示词写对,Gemini就能一次性生成直接可用的脚本。
```