codegeex支持四种结构化数据清洗路径:一、单步生成独立脚本;二、分阶段构造多逻辑函数;三、基于错误反馈精准修复;四、多表关联一体化清洗。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要对结构化数据(如CSV或Excel)执行清洗任务,但缺乏编写pandas脚本的经验或时间,CodeGeeX可通过自然语言指令直接生成可运行的数据处理代码。以下是多种可行的实现路径:
一、基于单步清洗需求生成独立脚本
该方法适用于明确单一目标的清洗任务,例如去重、填充缺失值或列名标准化,CodeGeeX能快速输出完整、可执行的Python脚本,无需手动拼接逻辑。
1、在VSCode中新建.py文件,确保已安装CodeGeeX插件并完成模型加载。
2、输入清晰的中文指令,例如:“读取sales_data.csv,删除‘订单ID’列完全重复的行,将‘销售额’列空值替换为0,把所有列名转为小写并用下划线连接,导出为cleaned_sales.csv”。
3、将光标置于指令末尾,按下Ctrl+Enter(Windows/Linux)或Cmd+Enter(Mac)触发补全。
4、检查生成代码是否包含pandas.read_csv、drop_duplicates(subset=['订单ID'])、fillna(0)、columns.str.lower().str.replace(' ', '_')及to_csv()调用。
5、运行前确认输入文件路径正确,且输出目录具有写入权限;若原始数据含混合类型列(如“销售额”含文本“N/A”),需额外提示CodeGeeX先执行astype(str).replace('N/A', np.nan).astype(float)。
二、分阶段构造多逻辑清洗函数
当清洗流程包含多个耦合操作(如先处理缺失值、再标准化格式、最后校验业务规则),一次性生成易出错。拆解为原子步骤可提升准确率,并便于后续调试与复用。
1、单独请求缺失值处理子函数:“写一个函数,接收pandas Series,若其dtype为数值型,则用中位数填充NaN;若为字符串型,则用'unknown'填充;返回处理后Series”。
2、再请求列名处理子函数:“写一个函数,接收列表,将每个字符串转为小写,并用下划线替代空格和特殊字符,返回新列表”。
3、新建主函数框架,在文档字符串中描述整体流程,例如:“对DataFrame执行:①调用缺失值处理函数遍历各列;②调用列名处理函数更新columns;③添加‘清洗时间’列记录当前时间戳”。
4、将前两步生成的子函数粘贴至对应位置,补全主函数调用逻辑;务必在主函数开头添加import pandas as pd, numpy as np,避免运行时报NameError。
三、利用错误反馈驱动精准修复
当生成的脚本在真实数据上运行失败时,CodeGeeX可基于报错信息定位异常根源,针对性修改代码,而非推倒重来。该方式特别适用于时间格式解析失败、类型转换报错等典型问题。
1、运行脚本后复制控制台完整报错,例如:“TypeError: cannot convert float NaN to integer”。
2、在新代码块中粘贴该错误,并附加上下文说明:“该错误出现在对‘数量’列执行astype(int)时,因该列存在空值;请修改为先用-1填充NaN,再转整型”。
3、触发CodeGeeX生成修复建议,重点核对是否出现fillna(-1).astype(int)或astype('Int64')(支持NA的整数类型)。
4、将修复语句替换原代码中对应行,重新执行;若报错涉及索引对齐(如merge后shape不匹配),需追加提示:“请在merge前对左右表均执行reset_index(drop=True)”。
四、通过多表关联指令生成一体化清洗流程
面对分散在多个文件中的业务数据(如用户表、订单表、地址表),CodeGeeX可依据主键关系生成含合并、标记、条件修正的端到端清洗逻辑,避免人工编写冗长的pandas链式操作。
1、在代码编辑区输入复合指令:“将users.csv与orders.csv按user_id左连接;添加_merge列标识匹配状态;对orders表中status为‘已取消’但amount>0的记录,将amount设为0;导出合并后数据为joined_clean.csv”。
2、触发生成后,检查代码是否包含pd.merge(df_users, df_orders, on='user_id', how='left', indicator=True)及布尔索引赋值语句df['_merge'] == 'both'。
3、若发现df.loc[df['status']=='已取消' & df['amount']>0, 'amount'] = 0未处理空值导致报错,立即补充提示:“注意status列可能含NaN,请先用fillna('')再判断”。
4、运行修正脚本,验证_merge列中“both”、“left_only”分布是否符合预期;若orders表中user_id含前导空格,需在merge前统一执行str.strip(),否则导致大量‘left_only’记录。










