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

基于Pandas的多级推荐系统统计需求及代码问题求助

多级推荐用户统计解决方案

一、Python Pandas 修正方案

原代码的核心问题是没有建立上下级推荐关系的映射,只是单纯按层级拆分计数,无法形成真正的推荐金字塔结构。以下是修正后的实现:

实现代码

import pandas as pd

# 读取原始数据
df = pd.read_excel("L0-L5.xlsx", sheet_name="Sheet1")
# 转换日期格式(若无需按日期筛选可省略此步)
df["invited_at"] = pd.to_datetime(df["Rem Date"], format="%d.%m.%Y")

# 定义层级顺序:L0为用户本身,L1-L5为各级推荐用户
levels = ["L0", "L1", "L2", "L3", "L4", "L5"]
result_frames = []

# 逐层统计上级对应的下级数量
for i in range(1, len(levels)):
    parent_col = levels[i-1]
    child_col = levels[i]
    # 筛选非空数据,按上级分组统计下级数量
    level_stats = df[[parent_col, child_col]].dropna()\
                    .groupby(parent_col).count()\
                    .rename(columns={child_col: f"第{i}级推荐人数"})
    result_frames.append(level_stats)

# 合并所有层级统计结果,空值填充为0
final_result = pd.concat(result_frames, axis=1, join="outer").fillna(0)
final_result = final_result.rename_axis("user_id").reset_index()

# 保存结果到Excel
final_result.to_excel("推荐金字塔统计.xlsx", index=False)

代码说明

  • 遍历L1到L5层级,每一层都基于上一层级(如L1的上级是L0)分组,统计每个上级拥有的下级数量。
  • 合并所有层级结果后用fillna(0)补全无推荐用户的统计值,确保每个用户都有完整的各级推荐数。

二、Excel 手动统计方案

如果不想用代码,可通过Excel的COUNTIFS函数实现:

操作步骤

  1. 提取唯一用户ID:新建工作表,从原表L0列提取所有唯一用户ID(通过「数据>删除重复值」完成)。
  2. 添加统计列:在新表中依次添加一级推荐人数、二级推荐人数…五级推荐人数列。
  3. 写入统计公式:
    • 一级推荐人数(统计当前用户作为L0时的L1数量):
      =COUNTIFS(Sheet1!$L0列:$L0列, A2, Sheet1!$L1列:$L1列, "<>")
      
      (替换L0列/L1列为原表对应列标,A2为当前用户ID单元格)
    • 二级推荐人数(统计当前用户作为L0时的L2数量):
      =COUNTIFS(Sheet1!$L0列:$L0列, A2, Sheet1!$L2列:$L2列, "<>")
      
    • 后续层级以此类推,替换对应列标即可。
  4. 批量应用公式:下拉公式完成所有用户的统计。

按月份统计扩展

若需按月统计,可在COUNTIFS中添加日期条件:

=COUNTIFS(Sheet1!$L0列:$L0列, A2, Sheet1!$L1列:$L1列, "<>", Sheet1!$日期列:$日期列, ">="&DATE(2024,1,1), Sheet1!$日期列:$日期列, "<="&DATE(2024,1,31))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:01:18