python - 熊猫 pd.pivot_table 的更快更有效的替代方案?
问题描述
def normalize_data(data):
df_matrix = pd.pivot_table(data, values='purchase_count', index='customerId', columns='productId')
df_matrix_norm = (df_matrix-df_matrix.min())/(df_matrix.max()-df_matrix.min())
d = df_matrix_norm.reset_index()
d.index.names = ['scaled_purchase_freq']
return pd.melt(d, id_vars=['customerId'],value_name='scaled_purchase_freq').dropna()
上面的代码工作正常,但速度很慢,当我增加数据大小时会出现内存错误。data 是一个数据框,包含 customerId 、 productId 和 purchase_count 表示每个客户购买产品的次数。
customerId,productId,product_count
21,24186,1
28,25949,1
31,12962,1
31,26246,1
38,26683,1
43,1667,1
50,10831,1
54,47752,1
63,47672,1
64,35108,1
71,48953,1
75,26882,1
77,11777,1
90,32648,1
91,33754,1
df_matrix 所需的输出(将购买历史标准化在 0 到 1 之间)
customerId productId scaled_purchase_freq
9 0 0.133333
25 0 0.133333
33 0 0.133333
36 0 0.133333
44 0 0.133333
所需的输出只是一个样本。我需要帮助来找到更有效的方法来规范化数据。
解决方案
推荐阅读
- java - 无法在 Ubuntu 18.x 中配置 ActiveMQ Web 控制台
- google-maps - 我可以将谷歌卫星图层与 mapboxgl 一起使用吗?
- vue.js - 如何为我的 Vue 构建修复“浏览器列表:caniuse-lite 已过时”?
- c - C 不读取整个 BMP 文件 - fopen
- python - Pandas Dataframe 中列表的重复计数(按组)
- python - Tkinter:尝试将图像放在 bg 上时出现“没有这样的文件或目录”错误
- php - 我不知道为什么我的 callback_insert 不起作用。它似乎没有被调用
- visual-studio - C++-CLI:包装器可以指定在哪里寻找它包装的库吗?
- python - Pandas 数据清理——按行聚合
- swift - GeoFire observeReady 在 Swift 中过早执行