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

Python中RFV分析的类别月度使用频次均值计算需求

RFV分析中Frequency(频次)计算的Python代码实现

需求说明

在RFV分析中,**Frequency(频次)**定义为:各类别在所有月份中每月使用总次数的平均值。例如类别A的月度使用数据如下:

CategoryAverage used
A - jan10
A - feb12
A - mar14
total average12

计算后类别A的频次均值为12。

已有代码基础

现有分组聚合代码如下,其中date和id_licenca对应的聚合逻辑无需修改,仅需添加频次计算逻辑:

df2 = df = df.groupby('category').agg({
'date' : lambda x: (dt_ref - x.max()).days,
'id_licenca' : lambda x: len(x)
})

期望输出格式

最终需要得到包含类别及对应频次均值的结果:

CategoryAverage used
A12
B17
C11

完整实现代码

假设原始数据中,category字段包含类似"A - jan"的月份后缀,usage_count字段记录每月使用总次数,完整代码如下:

# 从原始category字段提取不带月份的基础类别
df['base_category'] = df['category'].str.split(' - ', expand=True)[0]

# 分组聚合:保留原有逻辑,新增频次均值计算
df2 = df.groupby('base_category').agg(
    Recency=('date', lambda x: (dt_ref - x.max()).days),
    Total_Licenses=('id_licenca', lambda x: len(x)),
    Average_used=('usage_count', 'mean')  # 新增:计算每月使用总次数的平均值
).reset_index().rename(columns={'base_category': 'Category'})

# 若仅需目标两列,可筛选输出
df_final = df2[['Category', 'Average_used']]
print(df_final)

代码说明

  1. 通过字符串分割从原始category字段中提取基础类别(如从"A - jan"得到"A")
  2. 在groupby的agg方法中新增Average_used计算,直接用'mean'聚合函数得到每月使用总次数的平均值
  3. 最后通过reset_index和rename调整列名,若只需要目标格式的两列,可筛选后输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 02:24:55