案例:AI自动生成Python数据清洗代码
需求描述
用户需要清洗一个包含缺失值和异常值的CSV数据集,但缺乏相关经验。通过自然语言描述需求,AI生成可运行的Python代码。
实现步骤
-
用户输入自然语言描述:
请帮我生成Python代码: - 读取data.csv文件 - 删除所有空值超过50%的列 - 用中位数填充剩余数字列的缺失值 - 过滤掉"age"列中大于100或小于0的异常值 - 结果保存为cleaned_data.csv
-
AI处理过程:
- 解析自然语言需求
- 识别关键操作(文件读取、列过滤、缺失值处理、异常值过滤)
- 匹配Python库(pandas)
- 生成可执行代码
-
生成的代码:
import pandas as pd
def clean_data(input_path, output_path):
# 读取数据
df = pd.read_csv(input_path)
# 删除空值超过50%的列
threshold = len(df) * 0.5
df = df.dropna(thresh=threshold, axis=1)
# 用中位数填充数值列
numeric_cols = df.select_dtypes(include=['number']).columns
for col in numeric_cols:
median = df[col].median()
df[col] = df[col].fillna(median)
# 过滤age异常值
if 'age' in df.columns:
df = df[(df['age'] >= 0) & (df['age'] <= 100)]
# 保存结果
df.to_csv(output_path, index=False)
print(f"数据已清洗并保存到 {output_path}")
# 使用示例
clean_data("data.csv", "cleaned_data.csv")
- 附加功能:
- 自动添加异常处理
- 生成代码注释
- 建议安装依赖的命令:
pip install pandas
关键技术点
-
自然语言处理(NLP):
- 使用BERT等模型解析用户需求
- 提取关键操作动词(删除/填充/过滤)
-
代码知识图谱:
- pandas常用操作映射
- 数据清洗最佳实践库
-
上下文感知:
- 自动识别"age"列为数值型
- 推荐中位数填充而非均值(对异常值更鲁棒)
-
可扩展性设计:
# 用户可手动调整的阈值参数 NULL_THRESHOLD = 0.5 AGE_RANGE = (0, 100)
进阶应用场景
-
代码优化建议:
# AI建议:使用dropna的subset参数提升性能 df.dropna(subset=['critical_column'], inplace=True)
-
错误预防:
# 自动添加类型检查 if not isinstance(df, pd.DataFrame): raise ValueError("输入必须是DataFrame")
-
交互式编程:
AI: 需要处理日期列吗?检测到有'order_date'列 User: 是的,请转换为datetime格式 AI: 已添加 df['order_date'] = pd.to_datetime(df['order_date'])
典型工具推荐
- OpenAI Codex
- GitHub Copilot
- Amazon CodeWhisperer
- 文心ERNIE-Coder(中文场景)
这个案例展示了如何通过自然语言交互实现:需求理解→代码生成→优化建议→异常处理的完整智能编码流程。实际开发中可结合业务需求扩展验证机制和自定义规则库。