Python 使用pandas和sklearn的RandomForest回归:输入包含NaN、无穷大或对数据类型(';float32';)太大的值
由于数据帧中的“nan”值而获取此错误。试图替换Python 使用pandas和sklearn的RandomForest回归:输入包含NaN、无穷大或对数据类型(';float32';)太大的值,python,pandas,scikit-learn,random-forest,Python,Pandas,Scikit Learn,Random Forest,由于数据帧中的“nan”值而获取此错误。试图替换nan值,但也不起作用。我不知道发生了什么事 这是流程图 import pandas as pd import numpy as np raw_data = { 'sales':[10,20,30,40,50], 'cost': [24233, 15111, 11111,np.NaN, 3422], 'obs': [1, np.NaN, 3, 1, 2], 'treatment': [
nan
值,但也不起作用。我不知道发生了什么事
这是流程图
import pandas as pd
import numpy as np
raw_data = {
'sales':[10,20,30,40,50],
'cost': [24233, 15111, 11111,np.NaN, 3422],
'obs': [1, np.NaN, 3, 1, 2],
'treatment': [0, 1, 0, np.NaN, 0]}
df = pd.DataFrame(raw_data, columns = ['sales','cost', 'obs', 'treatment'])
df
Out[35]:
sales cost obs treatment
0 10 24233 1 0
1 20 15111 NaN 1
2 30 11111 3 0
3 40 NaN 1 NaN
4 50 3422 2 0
准备培训数据
获取此错误
ValueError:输入包含NaN、无穷大或对数据类型('float32')太大的值
我试过了
df=df.apply(lambda x: x.fillna(x.mean()),axis=0)
TypeError:(+:'int'和'str'的不受支持的操作数类型,以索引代价发生)
您的nan是字符串,这就是您在尝试使用
fillna
时出错的原因。用float-nan替换它们应该是可行的(之后您还需要将该系列转换为float),但是如果您解决了根本问题,它会更干净。你为什么一开始就有串南?您正在从文件中读取数据吗?nan
是一个字符串NaN
是一个浮点。@ayhan是从实际数据中的文件读取。当我读取数据时,我只有NaN值。我不知道nan或nan有什么不同。@ayhan Ok我编辑了df
并将字符串nan
更改为np.nan
,但错误仍然存在@Alexander如果您仍然收到一个类型错误,说“+”不支持“int”和“str”,那么这意味着您在其中一列中有字符串。为了使用.mean
方法,您需要有数字列。您可以尝试df=df.apply(pd.to_numeric,errors='concurve')
,但请记住,这将用NaN
替换每个字符串。
df=df.apply(lambda x: x.fillna(x.mean()),axis=0)