You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除涉及多轮DataFrame过滤的循环,优化用户嵌入计算性能?

优化方案

核心思路

直接使用pandas向量化操作、表关联、分组聚合完全替换原有的三层循环逻辑,计算逻辑和原函数完全等价,数据量越大性能提升越明显,通常可以达到几十到上百倍的速度提升。

优化后代码

def calculate_user_embeddings(self):
    # 预处理动漫体裁:将逗号分隔的多体裁拆分为单行单体裁
    shows_genre = self.shows[['anime_id', 'genre']].copy()
    shows_genre['genre'] = shows_genre['genre'].str.replace(' ', '').str.split(',')
    shows_genre = shows_genre.explode('genre')

    # 关联评分表和处理后的体裁表
    merged_df = self.ratings[['user_id', 'anime_id', 'rating']].merge(
        shows_genre, on='anime_id', how='left'
    )

    # 按用户ID和体裁分组求和,转换为目标嵌套字典格式
    user_embeddings = merged_df.groupby(['user_id', 'genre'])['rating'].sum().unstack(fill_value=0)
    return user_embeddings.to_dict('index')

性能优化点说明

  • 所有运算都在pandas底层C扩展层执行,完全规避了Python层的多层循环开销
  • 替换了循环中重复执行的DataFrame过滤查找逻辑,仅执行1次关联操作即可完成所有数据匹配
  • 内置分组聚合逻辑一次性完成所有评分求和,无需手动维护字典的键值存在性判断

内容的提问来源于stack exchange,提问作者ObiWanWheeler

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:45:04