用 Prompt 进行数据清洗:缺失值与异常值自动标注
!在这里插入图片描述 !在这里插入图片描述 !在这里插入图片描述 用 Prompt 进行数据清洗:缺失值与异常值自动标注 > 围绕 Prompt 在数据清洗中缺失值与异常值自动标注的应用展开,先阐述 Prompt 驱动数据清洗的优势,即降低编程门槛、支持个性化规则与多格式数据适配。接着分两部分详细讲解实践:缺失值标注部分,拆解核心需求要素,提供基础标注(返回数据)与带业务逻辑标注(生成 Pyt…

!在这里插入图片描述 !在这里插入图片描述 !在这里插入图片描述 用 Prompt 进行数据清洗:缺失值与异常值自动标注 > 围绕 Prompt 在数据清洗中缺失值与异常值自动标注的应用展开,先阐述 Prompt 驱动数据清洗的优势,即降低编程门槛、支持个性化规则与多格式数据适配。接着分两部分详细讲解实践:缺失值标注部分,拆解核心需求要素,提供基础标注(返回数据)与带业务逻辑标注(生成 Pyt…

本文围绕 Prompt 在数据清洗中缺失值与异常值自动标注的应用展开,先阐述 Prompt 驱动数据清洗的优势,即降低编程门槛、支持个性化规则与多格式数据适配。接着分两部分详细讲解实践:缺失值标注部分,拆解核心需求要素,提供基础标注(返回数据)与带业务逻辑标注(生成 Python 代码)示例,并给出优化技巧;异常值标注部分,明确判断维度,展示数值范围与逻辑关联类标注示例,附带避坑指南。还介绍了不同工具的 Prompt 适配方式与落地注意事项,最后设计练习题与思考题辅助巩固。整体内容兼具理论指导与实操性,助力读者掌握 Prompt 清洗数据技能。
在数据处理全流程中,数据清洗是保障后续分析准确性的核心环节,其核心目标是解决数据中的'脏数据'问题,包括缺失值、异常值、重复值、格式不一致等。传统数据清洗依赖 Python(Pandas、NumPy)或 SQL 编写代码,需使用者具备编程基础,且针对不同数据场景需重复调整逻辑;而 Prompt 驱动的数据清洗,通过自然语言描述清洗需求,让大语言模型生成对应代码或直接输出清洗结果,大幅降低技术门槛,同时支持快速迭代调整规则。
对于缺失值和异常值标注,Prompt 的价值体现在三个方面:
在设计 Prompt 前,需明确缺失值标注的关键要素,避免模型输出模糊或不符合预期的结果。核心要素包括:
Prompt:
请处理以下 CSV 格式的客户数据,完成缺失值标注:
1. 数据内容:
客户 ID,姓名,年龄,手机号,注册时间
1001,张三,28,13800138000,2024-01-05
1002,,35,,2024-02-10
1003,李四,,13900139000,
1004,王五,42,13700137000,2024-03-18
2. 标注规则:
- 识别'姓名''年龄''手机号''注册时间'字段中的缺失值(空字符串视为缺失);
- 新增'缺失标注'列,用'字段名:缺失类型'格式标注(如'姓名:空字符串;手机号:空字符串'),无缺失则填'无';
3. 输出格式:保留原数据结构,新增'缺失标注'列,以 Markdown 表格形式呈现。
预期输出:
| 客户 ID | 姓名 | 年龄 | 手机号 | 注册时间 | 缺失标注 |
|---|---|---|---|---|---|
| 1001 | 张三 | 28 | 13800138000 | 2024-01-05 | 无 |
| 1002 | 35 | 2024-02-10 | 姓名:空字符串;手机号:空字符串 | ||
| 1003 | 李四 | 13900139000 | 年龄:空字符串;注册时间:空字符串 | ||
| 1004 | 王五 | 42 | 13700137000 | 2024-03-18 | 无 |
技巧点分析:
Prompt:
请生成 Python 代码,对电商订单数据进行缺失值标注,需求如下:
1. 数据来源:Excel 文件'order_data.xlsx',数据包含'订单 ID''用户 ID''支付金额''支付时间''物流单号'字段;
2. 业务规则:
- '支付金额'字段中,0 值或空值视为'支付未完成',需标注;
- '支付时间'字段为空且'支付金额'>0 时,标注为'支付时间缺失(金额已存在)';
- '物流单号'字段为空且'支付时间'不为空时,标注为'待发货(物流单号未生成)';
3. 代码功能:
- 读取 Excel 文件;
- 新增'缺失标注'列,按上述规则填写标注内容,多缺失情况用';'分隔;
- 将清洗后的数据保存为新 Excel 文件'order_data_with_missing_label.xlsx';
4. 代码要求:使用 Pandas 库,添加关键步骤注释,处理可能的文件读取异常(如文件不存在)。
预期输出:
import pandas as pd
from pandas import ExcelWriter
import os
def label_missing_values(input_path, output_path):
# 处理文件读取异常
if not os.path.exists(input_path):
raise FileNotFoundError(f"输入文件不存在:{input_path}")
# 读取 Excel 数据
df = pd.read_excel(input_path)
# 初始化缺失标注列
df["缺失标注"]="无"
# 1. 标注支付金额缺失/异常(0 值或空值)
payment_missing = (df["支付金额"].isna()) | (df["支付金额"]==0)
df.loc[payment_missing,"缺失标注"] = df.loc[payment_missing,"缺失标注"].apply(
lambda x: f"{x};支付金额:支付未完成" if x != "无" else "支付金额:支付未完成"
)
# 2. 标注支付时间缺失(金额已存在)
time_missing_with_payment = (df["支付时间"].isna()) & (df["支付金额"]>0)
df.loc[time_missing_with_payment,"缺失标注"] = df.loc[time_missing_with_payment,"缺失标注"].apply(
lambda x: f"{x};支付时间:支付时间缺失(金额已存在)" if x != "无" else "支付时间:支付时间缺失(金额已存在)"
)
# 3. 标注物流单号缺失(已支付)
logistics_missing_with_payment = (df["物流单号"].isna()) & (df["支付时间"].notna())
df.loc[logistics_missing_with_payment,] = df.loc[logistics_missing_with_payment,].apply(
x: x !=
)
ExcelWriter(output_path, engine=) writer:
df.to_excel(writer, index=, sheet_name=)
()
df
__name__ == :
input_file =
output_file =
label_missing_values(input_file, output_file)
技巧点分析:
异常值通常偏离数据的正常分布或业务逻辑,标注前需明确判断维度,常见维度包括:
Prompt:
请分析以下用户消费数据,完成异常值标注:
1. 数据内容(CSV 格式):
用户 ID,月消费金额(元),消费次数,会员等级
U001,580,12,VIP3
U002,-200,8,VIP2
U003,15000,5,VIP1
U004,320,0,VIP3
U005,650,15,
2. 异常值规则:
- '月消费金额(元)':<0 标注为'金额异常(负数)',>10000 标注为'金额异常(超出常规范围)';
- '消费次数':=0 且'会员等级'为 VIP3/VIP2 标注为'次数异常(会员无消费)';
- '会员等级':空值标注为'等级异常(未填写)';
3. 输出要求:
- 新增'异常标注'列,按规则标注异常类型,无异常填'无';
- 用 Markdown 表格展示结果,并在表格下方简要说明每个异常值的判断依据。
预期输出:
| 用户 ID | 月消费金额(元) | 消费次数 | 会员等级 | 异常标注 |
|---|---|---|---|---|
| U001 | 580 | 12 | VIP3 | 无 |
| U002 | -200 | 8 | VIP2 | 金额异常(负数) |
| U003 | 15000 | 5 | VIP1 | 金额异常(超出常规范围) |
| U004 | 320 | 0 | VIP3 | 次数异常(会员无消费) |
| U005 | 650 | 15 | 等级异常(未填写) |
异常值判断依据说明:
技巧点分析:
Prompt:
现有电商订单表'orders',存储在 MySQL 数据库中,表结构如下:
order_id (订单 ID, 主键), user_id (用户 ID), create_time (下单时间,datetime), pay_time (支付时间,datetime), product_num (商品数量), total_price (总金额,decimal(10,2))
请生成 MySQL 语句,完成以下异常值标注:
1. 异常规则:
- 逻辑异常 1:pay_time < create_time(支付时间早于下单时间),标注为'时间异常:支付早于下单';
- 逻辑异常 2:product_num < 1(商品数量小于 1),标注为'数量异常:商品数量无效';
- 逻辑异常 3:total_price < 0(总金额为负数),标注为'金额异常:总金额为负';
2. SQL 要求:
- 新增'abnormal_label'字段(VARCHAR(100)),用于存储异常标注;
- 先初始化'abnormal_label'为'无异常',再按上述规则更新异常标注(多异常用';'分隔);
- 最后查询出所有存在异常的订单(abnormal_label != '无异常'),包含 order_id、user_id、abnormal_label 字段。
预期输出:
-- 1. 新增异常标注字段(若字段不存在)
ALTER TABLE orders ADD COLUMN IF NOT EXISTS abnormal_label VARCHAR(100) DEFAULT '无异常';
-- 2. 初始化异常标注字段为'无异常'
UPDATE orders SET abnormal_label = '无异常';
-- 3. 更新逻辑异常 1:支付时间早于下单时间
UPDATE orders SET abnormal_label = CASE
WHEN abnormal_label = '无异常' THEN '时间异常:支付早于下单'
ELSE CONCAT(abnormal_label, ';时间异常:支付早于下单')
END WHERE pay_time < create_time;
-- 4. 更新逻辑异常 2:商品数量小于 1
UPDATE orders SET abnormal_label = CASE
WHEN abnormal_label = '无异常' THEN '数量异常:商品数量无效'
ELSE CONCAT(abnormal_label, ';数量异常:商品数量无效')
END WHERE product_num < 1;
-- 5. 更新逻辑异常 3:总金额为负数
UPDATE orders SET abnormal_label = CASE
WHEN abnormal_label
CONCAT(abnormal_label, )
total_price ;
order_id, user_id, abnormal_label orders abnormal_label ;
技巧点分析:
不同工具对 Prompt 的输入格式和输出支持不同,需根据工具特性调整 Prompt 内容,常见工具适配方式如下:
| 工具类型 | 适配方式 | Prompt 示例片段 |
|---|---|---|
| 大语言模型(ChatGPT、Claude) | 直接输入自然语言需求,提供数据样本或表结构,指定输出格式(表格、代码) | '请处理 CSV 数据,标注缺失值,输出 Markdown 表格' |
| 数据工具(Excel、Power BI) | 要求模型生成工具内置函数(如 Excel 公式),明确单元格范围或数据列 | '生成 Excel 公式,对 A2:A100 列的缺失值标注'缺失',公式结果填入 B 列' |
| 编程工具(VS Code、Jupyter) | 要求生成可执行代码(Python、SQL),指定库、函数名,处理异常情况 | '用 Pandas 生成代码,读取 CSV 并标注异常值,处理 FileNotFoundError 异常' |

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online