为了账号安全,请及时绑定邮箱和手机立即绑定

从数据科学中的另一种方法调用方法中定义的属性(python)

从数据科学中的另一种方法调用方法中定义的属性(python)

湖上湖 2023-06-13 19:17:33
我正在学习数据科学环境中的面向对象编程。我想了解在一个类中编写相互关联的方法方面的良好做法是什么。当我运行我的代码时:import pandas as pd pd.options.mode.chained_assignment = None  class MyData:    def __init__(self, file_path):        self.file_path = file_pathdef prepper_fun(self):    '''Reads in an excel sheet, gets rid of missing values and sets datatype to numerical'''    df = pd.read_excel(self.file_path)     df = df.dropna()                        df = df.apply(pd.to_numeric)     self.df = df    return(df)def quality_fun(self):   '''Checks if any value in any column is more than 10. If it is, the value is replaced with   a warning 'check the original data value'.'''    for col in self.df.columns:        for row in self.df.index:                                                         if self.df[col][row] > 10:                       self.df[col][row] = str('check original data value')     return(self.df) data = MyData('https://archive.ics.uci.edu/ml/machine-learning-databases/00429/Cryotherapy.xlsx')print(data.prepper_fun())print(data.quality_fun())我得到以下输出(由于空间限制,只显示了部分输出):     sex  age   Time  0     1   35  12.00             1     1   29   7.00               2     1   50   8.00                3     1   32  11.75                4     1   67   9.25                         ..  ...  ...    ...            sex                        age                       Time 0     1  check original data value  check original data value                  1     1  check original data value                          7                  2     1  check original data value                          8                  3     1  check original data value  check original data value               4     1  check original data value                       9.25 ..  ...                        ...                        ...我对每种方法生成的输出感到满意。print(data.quality_fun())但是,如果我不先调用就尝试调用print(data.prepper_fun()),则会出现错误AttributeError: 'MyData' object has no attribute 'df'。作为面向对象编程的新手,我想知道构造这样的东西是否被认为是好的做法,或者是否有其他方法可以做到这一点。谢谢你的帮助!
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

在使用它之前确保你有 df。


class MyData:

    def __init__(self, file_path):

        self.file_path = file_path

        self.df = None

    def quality_fun():

       if self.df is None:

          self.prepper_fun()

       # rest of the code 


查看完整回答
反对 回复 2023-06-13
?
不负相思意

TA贡献1777条经验 获得超10个赞

如果 csv 文件在运行时未更改,您应该调用prepper_fun(self) __init__.单独调用它会导致出现错误的可能性很高。

如果更改了 csv 文件,则其他答案非常有效


查看完整回答
反对 回复 2023-06-13
  • 2 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信