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

求助:如何用Pandas按多列活动数据划分用户活跃度类别

用Pandas实现用户活动水平分组(匹配谷歌数据分析认证案例逻辑)

核心思路

先计算4个活动水平列的全局均值,再通过逐行判断,将用户分到对应类别:仅某一列高于均值且其余三列均低于均值。

步骤与代码实现

假设你的DataFrame列名为sedentary_minutes(久坐分钟)、lightly_active_minutes(轻度活跃分钟)、fairly_active_minutes(中度活跃分钟)、very_active_minutes(高度活跃分钟),按以下步骤操作:

  1. 导入依赖库
import pandas as pd
import numpy as np
  1. 计算各活动列的均值
    先提取目标列,计算每列的全局均值:
# 提取4个活动水平列
activity_cols = ['sedentary_minutes', 'lightly_active_minutes', 'fairly_active_minutes', 'very_active_minutes']
# 计算每列均值
activity_means = df[activity_cols].mean()
  1. 定义分组条件与标签
    用布尔条件匹配每个类别的规则,再对应到分类标签:
# 定义各分类的布尔条件
conditions = [
    # Sedentary:仅久坐数据高于均值,其余均低于
    (df['sedentary_minutes'] > activity_means['sedentary_minutes']) &
    (df['lightly_active_minutes'] < activity_means['lightly_active_minutes']) &
    (df['fairly_active_minutes'] < activity_means['fairly_active_minutes']) &
    (df['very_active_minutes'] < activity_means['very_active_minutes']),
    # Lightly Active:仅轻度活跃数据高于均值,其余均低于
    (df['lightly_active_minutes'] > activity_means['lightly_active_minutes']) &
    (df['sedentary_minutes'] < activity_means['sedentary_minutes']) &
    (df['fairly_active_minutes'] < activity_means['fairly_active_minutes']) &
    (df['very_active_minutes'] < activity_means['very_active_minutes']),
    # Fairly Active:仅中度活跃数据高于均值,其余均低于
    (df['fairly_active_minutes'] > activity_means['fairly_active_minutes']) &
    (df['sedentary_minutes'] < activity_means['sedentary_minutes']) &
    (df['lightly_active_minutes'] < activity_means['lightly_active_minutes']) &
    (df['very_active_minutes'] < activity_means['very_active_minutes']),
    # Very Active:仅高度活跃数据高于均值,其余均低于
    (df['very_active_minutes'] > activity_means['very_active_minutes']) &
    (df['sedentary_minutes'] < activity_means['sedentary_minutes']) &
    (df['lightly_active_minutes'] < activity_means['lightly_active_minutes']) &
    (df['fairly_active_minutes'] < activity_means['fairly_active_minutes'])
]

# 对应分类标签
labels = ['Sedentary', 'Lightly Active', 'Fairly Active', 'Very Active']
  1. 添加分类列到DataFrame
    用np.select将条件匹配结果映射到标签,default='Other'处理不符合任何单一条件的用户(比如多列均高于均值的情况):
df['activity_category'] = np.select(conditions, labels, default='Other')

验证结果

可以查看各分类的用户数量,确认分组是否符合预期:

print(df['activity_category'].value_counts())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:55:06