微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么这段代码将某些值转换回 Nan?

如何解决为什么这段代码将某些值转换回 Nan?

我有一个数据框“cars”,有一列“price”。最初,它有 4 个空值。使用:

cars = cars.dropna(subset=['price'])

删除了那些行。然后我创建了一个新的数据框 numeric_cars,其中只有数字数据。此时的价格仍然没有空值。但是,当我尝试对这个新数据框中除价格外的所有值进行标准化时,返回 4 个空值。我意识到我可以再次放弃它们,但为什么会发生这种情况?这是规范化代码

numeric_cars['price'].isnull().sum() #Output 0
from sklearn import preprocessing
price_col = numeric_cars['price'].copy()
x = numeric_cars.values #returns a numpy array
min_max_scaler = preprocessing.MinMaxScaler()
x_scaled = min_max_scaler.fit_transform(x)
numeric_cars = pd.DataFrame(x_scaled,columns = numeric_cols)
numeric_cars['price'] = price_col
numeric_cars['price'].isnull().sum() #Output 4

解决方法

min_max_scaler 将通过执行 x = (x - min) / (max - min) 来转换该数据。

您确定没有任何具有常量值的列吗?即最小=最大?也许它正在除以 0 并生成 NaN。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。