AutoClean运行异常:脚本退出码1,无法打印DataFrame头部求助
问题排查与修复方案
你的脚本存在多个语法逻辑错误,导致运行直接退出(code=1),以下是具体问题和修复步骤:
核心错误点
- 错误定义
__init__函数:__init__是类的构造方法,不能单独作为普通函数定义,且你未调用该函数,内部的resultat赋值完全无效。 pd.read_csv参数误用:你试图直接将列名作为参数传递来指定类型,这不符合read_csv的语法,正确方式是用dtype字典传入列类型映射。- 变量作用域问题:
__init__内的resultat是局部变量,外部代码无法访问,会触发NameError。 - 布尔参数传值错误:
AutoClean的duplicates='True'这类参数传入的是字符串,而非布尔值True,会导致参数解析失败。 - 错误遍历
self.pipeline:没有定义类,self不存在,且AutoClean返回的是单个清洗实例,不是可迭代列表。
修复后的完整代码
from AutoClean.autoclean import AutoClean import pandas as pd # 定义各列的数据类型映射字典 dtype_mapping = { 'profileUrl': str, 'fullName': str, 'firstName': str, 'lastName': str, 'profileImage': str, 'additionnalInfo': str, 'connectionDegree': str, 'job': str, 'location': str, 'sharedConnections': str, 'commonConnection1': str, 'url': str, 'name': str, 'query': str, 'category': str, 'commonConnection': str, # 用object类型兼容NoneType数据,后续AutoClean会自动处理 'timestamp': object, 'error': object } # 正确读取CSV并指定列类型 resultat = pd.read_csv( r"C:\Users\radia\Downloads\result-(11)-csv.csv", dtype=dtype_mapping ) # 初始化AutoClean,注意布尔参数用True/False而非字符串 cleaner = AutoClean( resultat, mode='manual', duplicates=True, missing_num='linreg', missing_categ='auto', encode_categ=False, extract_datetime='auto', outliers='delete', outlier_param=1.5, logfile=True, verbose=True ) # 获取清洗后的DataFrame cleaned_data = cleaner.output # 打印数据集头部 print(cleaned_data.head()) # 若需要保存清洗后的文件,取消下面注释 # cleaned_data.to_csv(r"C:\Users\radia\Downloads\cleaned_result.csv", index=False)
额外排查建议
如果修复后仍报错,直接在终端运行脚本(而非Debug模式),获取具体错误信息:
python "c:\Users\radia\OneDrive\Bureau\Scripts\automatisation_data_cleaning.py"
终端会输出详细的错误栈,帮助定位剩余问题。
内容的提问来源于stack exchange,提问作者Radia
相关产品推荐
相关产品推荐

