WXQIfMw

2020-12-19   阅读量: 8348

Python

【求救】python中处理错误值时总是提示missing),但实际括号都是英文,也没有缺失括号,求救!!!


#处理错误值

class wrong_value_fillna(BaseEstimator,TransformerMixin):

def __init__(self,

num_list:list=None,

cate_list:list=None,

wrong_value:list=None,

diff_num:int=10):

self.num_list=num_list

self.cate_list=cate_list

self.diff_num=diff_num

self.wrong_value=wrong_value

def fit(self,X,y=None):

X=X.copy()

if self.num_list is None:

self.num_list=[]

for col in X.columns:

kind=get_kind(x=X[col],diff_limit=self.diff_num)

if kind=="numeric":

self.num_list.append(col)

if self.cate_list is None:

self.cate_list=[]

for col in X.columns:

kind=get_kind(x=X[col],diff_limit=self.diff_num)

if kind=="categorical":

self.cate_list.append(col)

return self

def transform(self,X,y=None):

X=X.copy()

X.replace(self.wrong_value,np.nan,inplace=True)

for col in X.columns:

if get_kind(X[col])=="numeric":

X[col]=X[col].astype("float")

else:

X[col]=X[col].astype("object")

return X

wvf=wrong_value_fillna(wrong_value=[".","?"])

x_=wvf.fit_transform(x_,y_)微信图片_20201219150824.png

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
44.4254 1 6 关注作者 收藏

评论(6)

ermutuxia
2020-12-21

你可以在编辑代码的时候,选择python格式呀,这样代码就是对齐的,符合python语法格式,会提高答疑者的效率呀 @WXQIfMw

0.0000 0 0 回复
PGC123
2020-12-19

错误位置是get_kind()函数中的正则表达式

image.png

170.8718 1 0 回复
WXQIfMw
2020-12-19

老师,这是报错的信息 [6VCH$O}I%V)6HB8MC1IS6U.png

X[8CULQE2R}U6L@OGN)`3CQ.png

UU{7U$[D~)E}$I0FD7%N}JR.png

44.4254 1 0 回复
WXQIfMw
2020-12-19

loan=pd.read_csv(r"C:\Users\86153\Desktop\python考试题\12月考试\data\small_loan.csv",encoding="utf-8")

loan.head(10)

loan.drop("id",inplace=True,axis=1)

x_=loan.drop(["response"],axis=1)

y_=loan["response"].values

#区分类别

def get_kind(x:pd.Series,diff_limit:int=10):

x=x.astype(str)

x=x.str.extract(r"(^(\-|)(?=.*\d)\d*(?:\.\d*)?$")[0]

x.dropna(inplace=True)

if x.nunique()>diff_limit:

kind="numeric"

else:

kind="categorical"

return kind

#处理错误值

class wrong_value_fillna(BaseEstimator,TransformerMixin):

def __init__(self,

num_list:list=None,

cate_list:list=None,

wrong_value:list=None,

diff_num:int=10):

self.num_list=num_list

self.cate_list=cate_list

self.diff_num=diff_num

self.wrong_value=wrong_value

def fit(self,X,y=None):

X=X.copy()

if self.num_list is None:

self.num_list=[]

for col in X.columns:

kind=get_kind(x=X[col],diff_limit=self.diff_num)

if kind=="numeric":

self.num_list.append(col)

if self.cate_list is None:

self.cate_list=[]

for col in X.columns:

kind=get_kind(x=X[col],diff_limit=self.diff_num)

if kind=="categorical":

self.cate_list.append(col)

return(self)

def transform(self,X,y=None):

X=X.copy()

X.replace(self.wrong_value,np.nan,inplace=True)

for col in X.columns:

if get_kind(X[col])=="numeric":

X[col]=X[col].astype("float")

else:

X[col]=X[col].astype("object")

return X

wvf=wrong_value_fillna(wrong_value=[".","?"])

x_=wvf.fit_transform(x_,y_)


老师,前面的代码是这样的,运行都没有报错,运行到最后一步时报missing)错误

0.0000 0 0 回复
PGC123
2020-12-19

1、报错信息的前几行应该有有用的信息

2、怀疑是get_kind的正则表达式的问题

44.4254 1 0 回复
PGC123
2020-12-19

查看报错信息前几行给的提示信息,也许能确定错误的具体位置。

0.0000 0 0 回复
hunter.Z
2020-12-19

这个fit_transform()是自定义的吗?从代码来看没啥问题,看看自定义函数中是否存在语法错误

0.0000 0 0 回复

推荐课程