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

如何统计用户用药数据中不同药物组合的使用频次

多用户药物联用组合频次统计实现方案

核心处理逻辑分三步:

  • 按用户ID聚合单用户的全部用药记录,对药物去重后排序,生成固定顺序的用药组合,避免同组药物顺序不同导致统计重复
  • 对所有用户的用药组合做频次计数
  • 排序后输出频次表,直接提取最高频组合即可

可直接运行的参考代码如下:

import pandas as pd
from collections import Counter

# 按用户分组聚合用药列表,转成排序后的元组(可哈希,支持计数)
user_meds = df.groupby('user_id')['medicine_name']\
    .apply(lambda x: tuple(sorted(x.unique())))  # x.unique()做单用户用药去重,sorted()固定组合内顺序

# 统计各组合出现次数
combo_count = Counter(user_meds)

# 生成结构化频次表,按使用人数倒序排列
combo_freq_df = pd.DataFrame(
    [{"联用组合": "、".join(combo), "使用人数": cnt} for combo, cnt in combo_count.items()]
).sort_values("使用人数", ascending=False, ignore_index=True)

# 提取最高频联用组合
highest_freq_combo = combo_freq_df.iloc[0]

统计效果和需求示例完全匹配:比如5人同时用a和b、4人同时用a/b/c的场景,最终输出的频次表会准确对应两个组合的人数,排序后第一行就是最高频组合。

几个容易踩的坑提前说明:

  • 单用户维度必须做药物去重,要是原始数据里存在同一个用户同一种药的多条录入记录,不去重会生成错误的组合
  • 组合内药物必须做排序,否则(药a,药b)和(药b,药a)会被识别成两个不同组合,导致频次统计拆分错误
  • 如果只需要统计固定药数的联用(比如只看2药联用、只看3药联用),在计数前过滤元组长度即可,比如[combo for combo in user_meds if len(combo)==2]就能筛出所有两药联用的组合再计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:46:00