我正在學(xué)習(xí)數(shù)據(jù)科學(xué)環(huán)境中的面向?qū)ο缶幊?。我想了解在一個類中編寫相互關(guān)聯(lián)的方法方面的良好做法是什么。當(dāng)我運行我的代碼時: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())但是,如果我不先調(diào)用就嘗試調(diào)用print(data.prepper_fun()),則會出現(xiàn)錯誤AttributeError: 'MyData' object has no attribute 'df'。作為面向?qū)ο缶幊痰男率?,我想知道?gòu)造這樣的東西是否被認(rèn)為是好的做法,或者是否有其他方法可以做到這一點。謝謝你的幫助!
2 回答

至尊寶的傳說
TA貢獻1789條經(jīng)驗 獲得超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

不負(fù)相思意
TA貢獻1777條經(jīng)驗 獲得超10個贊
如果 csv 文件在運行時未更改,您應(yīng)該調(diào)用prepper_fun(self)
,__init__.
單獨調(diào)用它會導(dǎo)致出現(xiàn)錯誤的可能性很高。
如果更改了 csv 文件,則其他答案非常有效
添加回答
舉報
0/150
提交
取消