Python编写缺失值统计类时代码运行报错的修复方法
数据集缺失值统计类代码修复
原代码存在的问题
- 缩进不规范:Python强制要求缩进对齐,原代码
Ml类定义、内部方法缩进层级混乱,会直接触发语法错误 - 变量作用域错误:
Information类的get_missing_values方法直接引用全局data变量,没有绑定实例传入的数据集,无法适配不同数据集的统计需求 - 实例调用逻辑错误:
- 用类名
Ml作为实例变量名赋值,会覆盖原类的定义 - 错误调用
Ml.Information():Information是独立类,不是Ml实例的方法,且Ml初始化时已经创建了_info属性存储Information`的实例 Information类初始化没有接收数据集参数,无法和Ml类传入的数据集绑定
- 用类名
对应报错翻译
原报错核心信息:
AttributeError: 'Ml' object has no attribute 'Information'
中文翻译:属性错误:Ml类的实例对象不存在名为Information的属性或方法
修复后完整代码
import pandas as pd # 构造测试数据集 data = {'product':['A','B','C','D'],'sales':[100,None,256,100]} data = pd.DataFrame(data=data) class Information(): # 初始化时接收待统计的数据集,绑定到实例属性 def __init__(self, data): self.data = data print('information object created') def get_missing_values(self): # 基于实例绑定的数据集统计缺失值 missing_values = self.data.isnull().sum() return missing_values class Ml: def __init__(self, data): print('DataPrep created') self.data = data # 初始化信息统计类实例,传入当前数据集 self._info = Information(self.data) # 对外暴露缺失值统计调用入口 def get_missing_stat(self): return self._info.get_missing_values() # 实例化ML处理类,注意不要用类名作为实例变量名避免覆盖类定义 ml_obj = Ml(data) # 调用缺失值统计方法 missing_result = ml_obj.get_missing_stat() print("各字段缺失值数量统计:") print(missing_result)
运行输出结果
DataPrep created information object created 各字段缺失值数量统计: product 0 sales 1 dtype: int64
内容的提问来源于stack exchange,提问作者melik
相关产品推荐
相关产品推荐

