【问题标题】: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 函数时,我收到一个错误代码,提示我的数组中有一个空值或无穷大值。

有什么问题?

【问题讨论】:

    标签: python scikit-learn valueerror


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2017-11-23
      • 2020-12-01
      • 2019-05-26
      • 2016-07-31
      • 2020-08-16
      • 2020-05-25
      • 2019-02-17
      • 2020-10-23
      相关资源
      最近更新 更多