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 脚本显示索引错误

python argparse:如何在错误时自动显示帮助?

Python 错误帮助:“ValueError:输入包含 NaN、无穷大或对于 dtype('float64') 来说太大的值。”

python错误类型

Python - 需要帮助将字典字典写入 CSV 文件

新手学习Python时常见的错误