从零开始Codeium数据清洗提示词可复用流程教程
说到数据清洗规则生成这事儿,相信不少同行都跟我有过同样的困扰——每次面对新的CSV文件,都得从头写一遍提示词结构,调整各种字段名,补全业务逻辑。稍微疏忽一点,产出的规则描述要么空洞无物,要么直接错位。好比明明处理的是orders_2026Q2.csv,结果却把customer_id列里字符串"NULL"的清洗逻辑,套用成了上一季度的规则,连金额负值的阈值都忘了更新。
这个问题其实有系统性的解法。核心思路就四个字:参数化封装。
提取可变要素,封装为占位符
先找一份你已经验证过的有效清洗提示词,逐行扫一遍,把那些每次都可能会变的东西统统标记出来。包括文件路径、表头结构、脏数据的样例如1001,"NULL",299.99,"30/May/2026 14:22"、业务约束的阈值、以及动作动词的选择。
把这些内容全部替换成见名知义的占位符。比如data/orders_2026Q2.csv就变成【INPUT_FILE_PATH】,customer_id列里字符串"NULL"的情况就变成【STRING_NULL_COLUMN】。凡是涉及金额列的负值阈值,就用【AMOUNT_NEGATIVE_THRESHOLD】来承接。占位符的名字必须一眼就能看出它代表什么,千万别用VAR1、COL_A这种模糊代号。
就连样例数据也得参数化。前三行数据不要写成固定值,而是改成【SAMPLE_ROW_1】这样的占位符。这么做是为了防止Codeium把样例当成硬编码规则,导致生成的内容永远只能适配那一组数据。
绑定五段式结构,输出契约
把输出格式固定下来,是最关键的一步。在提示词末尾明确声明:生成结果必须按以下五段结构组织,每段标题紧跟冒号,不得换行、不得缩进。任何偏离这个结构的输出都视为无效,需要重试。
1. 字段声明:列出【INPUT_FILE_PATH】中全部列名,按CSV首行顺序排列,每列后标注数据类型(str/float/datetime)。
2. 异常现象:针对【STRING_NULL_COLUMN】、【NEGATIVE_AMOUNT_COLUMN】、【DATE_COLUMN】三类字段,分别写出真实观察到的脏数据表现。
3. 清洗规则:每条规则必须包含“列名 + 条件 → 动作”的完整链路。动作动词仅限于:转为空、替换为、删除整行、标记为异常、截断至X位小数。
4. 验证方式:说明如何用pandas代码验证规则生效。例如df[【STRING_NULL_COLUMN】].isna().sum()应为0。
5. 输出约束:指定最终DataFrame必须保留的列、索引状态、是否重置索引。
注入业务逻辑的自适应指令
仅仅封装参数还不够,真正的智能在于根据业务上下文自适应调整规则。至少需要覆盖三种常见场景。
动态字段判断:如果【DATE_COLUMN】存在且样例数据中包含"/"、"-"或"月"这些字符,就在清洗规则中强制加入日期解析语句:pd.to_datetime(df[【DATE_COLUMN】], infer_datetime_format=False, errors='coerce')。反之则跳过。
阈值映射表:根据【AMOUNT_NEGATIVE_THRESHOLD】的取值(比如-0.01、-1.0、-5.0),自动设定删除条件。阈值是-0.01,就删除amount < -0.01的整行;是-1.0,就删除amount < -1.0的整行。无需每次都手动指定。
空值处理校验:生成规则之前,先确认【NULL_REPRESENTATION】里填的是什么。如果集合里有"NULL"、"N/A"、"null"等多个字符串,就把每个字符串作为独立条件写入规则。比如【STRING_NULL_COLUMN】 == "NULL" → 转为空,同时【STRING_NULL_COLUMN】 == "N/A" → 转为空。少写一个,数据就多留一个坑。
失败案例反向锚定
为了让生成结果质量过硬,还需要把常见的错误写法明确排除掉。下面这些写法在最终输出中绝对不能出现:
✘ “对缺失值进行处理” —— 缺失值在哪列?表现形式是空字符串、"NULL"还是"N/A"?处理方式是填充均值、前向填充,还是删除整行?全都模糊不清。
✘ “统一日期格式” —— 原始格式究竟是2026/05/30还是30-May-2026?不在规则里写清楚,执行时必然出偏差。
✘ “金额列做清洗” —— 哪一列?阈值是多少?负值是否允许?动作是截断、删除还是标记?没有一条是可以执行的。
还要强调一点:【INPUT_FILE_PATH】必须是提示词中间出现的第一个占位符,这是所有参数化的起点,删不得、移不得。
这套方法做下来,每次生成的规则就不再是空泛的描述,而是可以直接拿去执行的清洗脚本骨架。你再也不用为“复制旧提示词导致规则错位”这种低级问题头疼了。