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

使用 sklearn 标准化 Pandas 数据框中的一组列

如何解决使用 sklearn 标准化 Pandas 数据框中的一组列

我有一个包含四列的表格:CustomerID、Recency、Frequency 和 Revenue。

My table

我需要对 Recency、Frequency 和 Revenue 列进行标准化(缩放)并保存 CustomerID 列。

我使用了这个代码

from sklearn.preprocessing import normalize,StandardScaler
df.set_index('CustomerID',inplace = True)
standard_scaler = StandardScaler()
df = standard_scaler.fit_transform(df)
df = pd.DataFrame(data = df,columns = ['Recency','Frequency','Revenue'])

但结果是一个没有列 CustomerID 的表。有什么办法可以得到一个带有相应 CustomerID 和缩放列的表吗?

解决方法

fit_transform returns an ndarray 没有索引,因此您将丢失在 df.set_index('CustomerID',inplace = True) 上设置的索引。

您可以简单地获取需要转换的列子集,将它们传递给 StandardScaler,然后覆盖原始列,而不是这样做。

# Subset of columns to transform
cols = ['Recency','Frequency','Revenue']

# Overwrite old columns with transformed columns
df[cols] = StandardScaler.fit_transform(df[cols])

这样,您就可以完全保持 CustomerID 不变。

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