Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。”
Posted
技术标签:
【中文标题】Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype(\'float64\') 来说太大的值。”【英文标题】:Python error help: "ValueError: Input contains NaN, infinity or a value too large for dtype('float64')."Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。” 【发布时间】:2021-03-17 21:58:41 【问题描述】:尝试运行以下代码时出现错误:
df = pd.DataFrame(pd.read_csv('x_y.csv'))
pd.set_option('display.max_columns', None)
df = df.reset_index()
X = df['EU_Sales']
X.fillna(X.mean())
X = X.to_numpy().reshape(-1, 1)
np.nan_to_num(X)
df = df.reset_index()
est = KBinsDiscretizer(n_bins=2, encode='ordinal', strategy='quantile')
Xt = est.fit_transform(X)
我正在尝试从训练集中的列中读取数据,然后使用 reshape 函数将其转换为数组,我打印了数组以确保该函数有效并且确实有效。但由于某种原因,在尝试使用 KBinsDiscretizer 函数时,我收到一个错误代码,提示我的数组中有一个空值或无穷大值。
有什么问题?
【问题讨论】:
【参考方案1】:您在填写 NaN 后没有分配 X。所以你的 X 仍然有 NaN。
#...
X.fillna(X.mean()) # fills NaN but change is not permanent
由于 inplace 默认为 False,因此执行操作并返回对象的副本。然后您需要将其分配给变量或设置inplace=True
X = X.fillna(X.mean()) # fills NaN and change assign to X
或者
X.fillna(X.mean(), inplace=True)
【讨论】:
以上是关于Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。”的主要内容,如果未能解决你的问题,请参考以下文章
Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。”