当我记录 transform pandas 列时,我得到 NaN,我应该用 0 替换它们吗?

When i log transform pandas column i get NaNs should i replace these with 0?

我找不到类似的问题。但我有一个 df,其中一些列高度倾斜。然后我计划记录转换这些列然后标准化。但是,当我记录转换时,我得到 NaN,我应该用 0;s 替换它们吗?

log_train[skew_cols]=np.log2(featuresdf[skew_cols]

我得到的错误是:

RuntimeWarning: invalid value encountered in log2
  This is separate from the ipykernel package so we can avoid doing imports until

不确定我做错了什么

您不应该替换为 0,因为 np.log(1) 等于 0。因此,在您的日志数据中,1 和 0 都将为 0。

相反,只需在日志之前为您的数据 +1。因此 log2(1) 变为 0,log2(2)(原为 1)仍为 1,然后 log2(3)(原为 2)现在为 1.58)

所以代码是:

log_train[skew_cols]=np.log2(featuresdf[skew_cols]+1)

另一种选择是使用其他可以处理 0 的缩放方法,例如平方根 (np.sqrt)