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

使用Pandas创建Jan与Mar月份的客户群体迁移矩阵

客户群体迁移矩阵实现方案(Jan vs Mar)

针对20K量级客户,用pandas的向量化操作就能高效实现,步骤清晰且代码简洁:

步骤1:筛选目标月份数据

先从原DataFrame中只提取1月(Jan)和3月(Mar)的记录,减少后续处理的数据量:

import pandas as pd

# 假设原数据框名为df,month字段值为'Jan'/'Mar'这类字符串
filtered_df = df[df['month'].isin(['Jan', 'Mar'])]

步骤2:转换为客户-双月份分组宽表

把每个客户的Jan、Mar分组数据合并到同一行,方便后续统计交叉情况:

# 用pivot转置,index是客户ID,columns是月份,values是分组
customer_groups = filtered_df.pivot(
    index='customer_id',
    columns='month',
    values='Group'
).reset_index()

# 重命名列,让语义更清晰
customer_groups.columns = ['customer_id', 'Jan_Group', 'Mar_Group']

如果存在同一客户同一月份多条记录的情况,改用pivot_table并指定聚合方式(比如取第一个分组):

customer_groups = filtered_df.pivot_table(
    index='customer_id',
    columns='month',
    values='Group',
    aggfunc='first'
).reset_index()

步骤3:生成迁移矩阵

用crosstab统计Jan分组到Mar分组的客户数量,直接得到规整的矩阵:

# 过滤掉只存在单月份数据的客户(可选,根据业务需求决定)
valid_customers = customer_groups.dropna(subset=['Jan_Group', 'Mar_Group'])

# 生成迁移矩阵
migration_matrix = pd.crosstab(
    index=valid_customers['Jan_Group'],
    columns=valid_customers['Mar_Group'],
    margins=True,  # 可选,添加行/列总计
    margins_name='总计'
)

migration_matrix的行是Jan的客户群体,列是Mar的客户群体,单元格值就是对应群体迁移的客户数量。

优势说明

  • 所有操作都是pandas内置的向量化运算,处理20K客户毫无压力,速度远快于循环遍历
  • 代码逻辑清晰,每一步都对应明确的业务动作,易于维护和修改
  • 自动处理群体的所有可能组合,不需要手动枚举群体类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:52:09