ASH*_*ASH 5 python machine-learning python-3.x scikit-learn
我有一个小数据框,只包含两列,其中应该包含所有浮点数。所以,我有两个字段名称“价格”和“分数”。当我查看数据时,它对我来说都像是浮动的,但显然有些东西是一个字符串。有什么方法可以踢掉这些是字符串但看起来像浮动的东西吗?或者,有没有办法强制一切都浮动?错误发生在最后一行显示在这里,然后没有其他任何工作。
df = pd.read_csv('C:\\my_path\\analytics.csv')
print('done!')
modDF = df[['Price', 'Score']].copy()
modDF = modDF[:100]
for i_dataset, dataset in enumerate(datasets):
X, y = dataset
# normalize dataset for easier parameter selection
X = StandardScaler().fit_transform(X)
Run Code Online (Sandbox Code Playgroud)
这是堆栈跟踪:
datasets = [modDF]
for i_dataset, dataset in enumerate(datasets):
X, y = dataset
# normalize dataset for easier parameter selection
X = StandardScaler().fit_transform(X)
Traceback (most recent call last):
File "<ipython-input-18-013c2a6bef49>", line 5, in <module>
X = StandardScaler().fit_transform(X)
File "C:\Users\rs\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\base.py", line 553, in fit_transform
return self.fit(X, **fit_params).transform(X)
File "C:\Users\rs\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 639, in fit
return self.partial_fit(X, y)
File "C:\Users\rs\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 663, in partial_fit
force_all_finite='allow-nan')
File "C:\Users\rs\AppData\Local\Continuum\anaconda3\lib\site-packages\sklearn\utils\validation.py", line 496, in check_array
array = np.asarray(array, dtype=dtype, order=order)
File "C:\Users\rs\AppData\Local\Continuum\anaconda3\lib\site-packages\numpy\core\numeric.py", line 538, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float: 'Price'
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用pd.to_numeric像这样:
df = df.apply(pd.to_numeric, errors='coerce', downcast='float')
Run Code Online (Sandbox Code Playgroud)
哪个会尝试将您的数据转换为浮点数,而不是浮点数的数据将作为 Nan 返回。
然后
df.dropna(how='any', axis=0, inplace=True)
Run Code Online (Sandbox Code Playgroud)
它只会删除任何包含至少 1 个 Nan 值的行。