我正在尝试学习机器学习,我需要为工作流的清理阶段填写缺少的值。我有13列,需要为其中的8个值进行估算。其中一列称为Dependents,我想用失踪词填充空格,并更改包含数据的单元格,如下所示:1到1、2到2、3到3以及3+到threePlus。
我正在Anaconda中运行该程序,并且数据框的名称是train
train.columns
这给了我
Index(['Loan_ID','Gender','Married','Dependents,'Education', 'Self_Employed','ApplicantIncome','CoapplicantIncome','LoanAmount', 'Loan_Amount_Term','Credit_History','Property_Area','Loan_Status'], dtype ='object')
下一个
print("Dependents")
print(train['Dependents'].unique())
这给了我
家属 ['0''1''2''3+'nan]
现在我尝试按所述方式估算值
def impute_dependent():
my_dict={'1':'one','2':'two','3':'three','3+':'threePlus'};
return train.Dependents.map(my_dict).fillna('missing')
def convert_data(dataset):
temp_data = dataset.copy()
temp_data['Dependents'] = temp_data[['Dependents']].apply(impute_dependent,axis=1)
return temp_data
这给出了错误
TypeError Traceback (most recent call last)
<ipython-input-46-ccb1a5ea7edd> in <module>()
4 return temp_data
5
----> 6 train_dataset = convert_data(train)
7 #test_dataset = convert_data(test)
<ipython-input-46-ccb1a5ea7edd> in convert_data(dataset)
1 def convert_data(dataset):
2 temp_data = dataset.copy()
----> 3 temp_data['Dependents'] =
temp_data[['Dependents']].apply(impute_dependent,axis=1)
4 return temp_data
5
D:\Anaconda2\lib\site-packages\pandas\core\frame.py in apply(self, func,
axis, broadcast, raw, reduce, result_type, args, **kwds)
6002 args=args,
6003 kwds=kwds)
-> 6004 return op.get_result()
6005
6006 def applymap(self, func):
D:\Anaconda2\lib\site-packages\pandas\core\apply.py in get_result(self)
140 return self.apply_raw()
141
--> 142 return self.apply_standard()
143
144 def apply_empty_result(self):
D:\Anaconda2\lib\site-packages\pandas\core\apply.py in apply_standard(self)
246
247 # compute the result using the series generator
--> 248 self.apply_series_generator()
249
250 # wrap results
D:\Anaconda2\lib\site-packages\pandas\core\apply.py in
apply_series_generator(self)
275 try:
276 for i, v in enumerate(series_gen):
--> 277 results[i] = self.f(v)
278 keys.append(v.name)
279 except Exception as e:
TypeError: ('impute_dependent() takes 0 positional arguments but 1 was
given', 'occurred at index 0')
我希望一,二,三和三加号替换现有值,而缺少以填补空白
答案 0 :(得分:0)
这会吗?
my_dict = {'1':'one','2':'two','3':'three','3+':'threePlus', np.nan: 'missing'}
def convert_data(dataset):
temp_data = dataset.copy()
temp_data.Dependents = temp_data.Dependents.map(my_dict)
return temp_data
请注意,部分问题可能是使用apply
:本质上apply
通过函数传递数据并放入结果。我可能是错的,但我认为您的函数需要采用apply提供的输入,例如:
def impute_dependent(dep):
my_dict = {'1':'one','2':'two','3':'three','3+':'threePlus', np.nan: 'missing'}
return my_dict[dep]
df.dependents = df.dependents.apply(impute_dependents)
这样,对于df.dependents
中的每个值,apply将采用该值并将其提供给impute_dependents
作为参数,然后将经过return
ed的值作为输出。照原样,当我试用您的代码时,由于impute_dependent
不接受任何参数,我得到了一个错误。