理论都会,实战就废?7个分析模板,帮你打通任督二脉

数据分析和编程一样,是有模式的。其实大部分业务分析题,扒开外壳看内核,就那7个套路。

你遇到的那些所谓"新问题",90%都能套进下面这7个框架。

不管你是在字节、阿里、拼多多,还是一个小创业公司做增长--数据就是数据,逻辑永远不会骗你。

🎯 模式1:连接+筛选 = 精准找人找事

业务场景

春运期间,12306联合抖音推"旅途内容包",想给用户推荐时长≤当前车次剩余时间的短视频,提升乘车体验。

核心逻辑

先连表(车次信息+视频库),再筛选(时长匹配+车次ID),最后排序(优先推荐完播率高的)。

Python代码示例

python 复制代码
import pandas as pd

# 车次表 & 视频库(模拟数据)
train_df = pd.DataFrame({
    'train_id': [101, 102],
    'remaining_minutes': [45, 90]  # 剩余分钟数
})

video_df = pd.DataFrame({
    'video_id': ['v1', 'v2', 'v3'],
    'duration_min': [30, 60, 120],
    'completion_rate': [0.85, 0.72, 0.91]  # 完播率
})

# 连接+筛选+排序(核心三步)
result = (
    train_df[train_df['train_id'] == 101]  # 筛选目标车次
    .merge(video_df[video_df['duration_min'] <= 45], how='cross')  # 连接+时长过滤
    .sort_values('completion_rate', ascending=False)  # 优先推荐高完播
    [['train_id', 'video_id', 'duration_min']]
)
print(result)

💡** 业务复用场景**:

  • 美团:骑手+订单匹配,筛选3公里内可接单骑手
  • 小红书:笔记+用户标签匹配,精准推送美妆内容
  • 滴滴:车型+用户需求匹配,筛选符合"宠物友好"的车辆

🎯 模式2:窗口函数 = 排名排序神器

业务场景

美妆品牌想监控各KOL账号下,点赞最高的3篇笔记,用于复盘内容策略。

核心逻辑

按账号分组(PARTITION BY),按点赞降序排(ORDER BY),用RANK()打标,再筛前3。

Python代码示例

python 复制代码
# 模拟笔记数据
notes_df = pd.DataFrame({
    'account': ['A', 'A', 'A', 'B', 'B', 'B'],
    'note_id': [1,2,3,4,5,6],
    'likes': [1200, 3500, 2800, 900, 4100, 3900]
})

# 窗口函数排名(pandas 2.1+ 支持 rank)
notes_df['rank'] = notes_df.groupby('account')['likes']\
    .rank(method='min', ascending=False)  # method='min' 等价 SQL RANK()

# 筛选各账号前3
top3 = notes_df[notes_df['rank'] <= 3][['account', 'note_id', 'likes', 'rank']]
print(top3)

## 运行结果:
'''
    account  note_id  likes  rank
0       A        1   1200   3.0
1       A        2   3500   1.0
2       A        3   2800   2.0
3       B        4    900   3.0
4       B        5   4100   1.0
5       B        6   3900   2.0
'''

💡** 业务复用场景**:

  • 淘宝直播:各主播场均GMV排名,找头部潜力股
  • 学而思:各班级学员进步榜,激励+复盘双用
  • 顺丰:各片区骑手准时率排名,优化运力调度

🎯 模式3:聚合+分组 = 数据卷王必备

业务场景

分析"用户当天打开APP+当天完成下单"的行为,计算人均订单数&客单价,评估"即时需求"转化效率。

核心逻辑

先按用户+日期去重(确保一人一天只算一次会话),再连订单表,最后GROUP BY聚合求和/计数。

Python代码示例

python 复制代码
# 会话表 & 订单表
session_df = pd.DataFrame({
    'user_id': [101,101,102],
    'session_date': ['2024-06-01','2024-06-02','2024-06-01']
}).drop_duplicates()  # 去重:一人一天只算一次

order_df = pd.DataFrame({
    'user_id': [101,101,102],
    'order_date': ['2024-06-01','2024-06-01','2024-06-01'],
    'order_value': [35.5, 28.0, 52.0]
})

# 连接+聚合
result = (
    session_df.merge(order_df, 
                     left_on=['user_id','session_date'],
                     right_on=['user_id','order_date'])
    .groupby(['user_id','session_date'])
    .agg(total_orders=('order_value','count'),
         total_value=('order_value','sum'))
    .reset_index()
)
print(result)

## 运行结果:
'''
      user_id session_date  total_orders  total_value
0      101   2024-06-01             2         63.5
1      102   2024-06-01             1         52.0
'''

💡** 业务复用场景**:

  • 京东到家:用户日活+下单转化,评估"小时达"粘性
  • 得到APP:用户日登录+课程购买,分析知识付费路径
  • 银行APP:用户日打开+理财申购,追踪金融转化漏斗

🎯 模式4:透视表 = 把行变列,一眼看懂趋势

业务场景

HR想横向对比各职级员工在2021-2024年的调薪幅度,快速识别"涨薪黑马"和"滞涨群体"。

核心逻辑

用CASE WHEN(或pandas pivot)把"年份"从行变列,再用MAX/SUM聚合,最后按员工分组输出。

Python代码示例

python 复制代码
# 模拟调薪数据
salary_df = pd.DataFrame({
    'employee': ['张三','张三','张三', '李四','李四'],
    'year': [2021,2022,2023, 2021,2022],
    'salary': [15, 18, 22, 20, 21]  # 单位:万
})

# 透视:年份变列(方法1:pivot_table)
pivot = salary_df.pivot_table(
    index='employee',
    columns='year',
    values='salary',
    aggfunc='max'  # 同年份多条取最高
).fillna(0)  # 缺失年份补0

print(pivot)
# 输出:
# year    2021  2022  2023
# employee                
# 张三    15.0  18.0  22.0
# 李四    20.0  21.0   0.0

💡** 业务复用场景**:

  • 财务:各事业部季度营收对比,一眼看出谁在拖后腿
  • 运营:各渠道月度ROI透视,快速分配下月预算
  • 产品:各功能模块周活对比,决定迭代优先级

🎯 模式5:累计指标 = 看趋势,别只看单点

业务场景

投资人想看"剔除退款后的真实增长",计算3个月滚动平均GMV,平滑大促波动,看清长期趋势。

核心逻辑

先按月聚合(剔除负值退款),再用rolling().mean()算滑动平均,最后按时间排序输出。

Python代码示例

python 复制代码
# 模拟采购数据(含退款负值)
purchase_df = pd.DataFrame(
    {
        "date": pd.date_range("2023-01", periods=13, freq="ME"),  # 生成13期
        "amount": [120, -15, 135, 142, -8, 158, 165, 170, -20, 185, 192, 200, 210],
    }
)

# 1. 按月聚合 + 剔除退款
monthly = (
    purchase_df[purchase_df["amount"] > 0]
    .groupby(pd.Grouper(key="date", freq="ME"))
    .agg(monthly_gmv=("amount", "sum"))
    .reset_index()
)

# 2. 计算3期滚动平均
monthly["rolling_3m"] = monthly["monthly_gmv"].rolling(window=3).mean()

print(monthly[["date", "monthly_gmv", "rolling_3m"]])

## 运行结果:
'''
         date  monthly_gmv  rolling_3m
0  2023-01-31          120         NaN
1  2023-02-28            0         NaN
2  2023-03-31          135   85.000000
3  2023-04-30          142   92.333333
4  2023-05-31            0   92.333333
5  2023-06-30          158  100.000000
6  2023-07-31          165  107.666667
7  2023-08-31          170  164.333333
8  2023-09-30            0  111.666667
9  2023-10-31          185  118.333333
10 2023-11-30          192  125.666667
11 2023-12-31          200  192.333333
12 2024-01-31          210  200.666667
'''

💡** 业务复用场景**:

  • B站:UP主粉丝7日滚动增长,识别内容爆发点
  • 蔚来:门店周订单滚动均值,评估新车型热度
  • 阿里云:客户月消耗滚动趋势,预判续费风险

🎯 模式6:漏斗分析 = 用户去哪了?

业务场景

分析用户从"首次登录"→"周活5次+"→"月观看10h+"的转化路径,计算各阶段流失率,优化新手引导。

核心逻辑

用CTE(或pandas多步筛选)定义每阶段用户,再用LEFT JOIN串联,最后算转化率=末阶段/首阶段。

Python代码示例

python 复制代码
# 模拟用户行为数据
user_df = pd.DataFrame({
    'user_id': range(1,101),
    'country': ['CN']*100,
    'sessions_30d': np.random.poisson(8, 100),  # 30天会话数
    'watch_hours': np.random.exponential(5, 100)  # 观看小时数
})

# 定义三阶段(向量化筛选,高效!)
stage1 = user_df[user_df['sessions_30d'] > 0]  # 活跃用户
stage2 = user_df[user_df['sessions_30d'] >= 5]  # 深度活跃
stage3 = user_df[(user_df['sessions_30d'] >=5) & (user_df['watch_hours']>=10)]  # 核心用户

# 计算转化(按国家分组)
funnel = pd.DataFrame({
    'country': ['CN'],
    'active_users': len(stage1),
    'engaged_users': len(stage2),
    'power_users': len(stage3),
    'conversion_rate': round(len(stage3)/len(stage1)*100, 2)
})
print(funnel)

## 运行结果:
'''
  country  active_users  engaged_users  power_users  conversion_rate
0      CN           100             93           14             14.0
'''

💡** 业务复用场景**:

  • 淘宝:浏览→加购→支付,优化购物车流失
  • 得到:试听→购课→完课,提升知识付费转化
  • 微信支付:绑卡→首刷→复刷,加速支付习惯养成

🎯 模式7:时间对比 = 今天比昨天好在哪?

业务场景

城管局想监控"每日违规开单量"的日环比变化,快速发现执法强度波动或居民配合度变化。

核心逻辑

先按日聚合违规数,再用shift()取前一天值,最后相减得差值,正数=变严,负数=变松。

Python代码示例

python 复制代码
# 模拟违规数据
violation_df = pd.DataFrame(
    {
        "date": np.random.choice(
            pd.date_range("2024-01-01", periods=10, freq="D"),  # 10个候选日期
            size=100,  # 生成100条记录
            replace=True,  # 允许同一天多条
        ),
        "violation_id": range(1, 101),
    }
)

# 1. 按日聚合
daily = violation_df.groupby("date").size().reset_index(name="daily_count")

# 2. 计算日环比变化(shift取前一天)
daily["diff"] = daily["daily_count"] - daily["daily_count"].shift(1)

print(daily[["date", "daily_count", "diff"]])

## 运行结果:
'''
        date  daily_count  diff
0 2024-01-01            3   NaN
1 2024-01-02            5   2.0
2 2024-01-03           14   9.0
3 2024-01-04           10  -4.0
4 2024-01-05            9  -1.0
5 2024-01-06            7  -2.0
6 2024-01-07           12   5.0
7 2024-01-08            8  -4.0
8 2024-01-09           15   7.0
9 2024-01-10           17   2.0
'''

💡** 业务复用场景**:

  • 抖音:日活用户日环比,监控内容热点效应
  • 美团:日订单量波动,快速响应天气/节日影响
  • 招商银行:日理财申购变化,捕捉市场情绪拐点

🎁 总结

这7个模式,真不是啥高深算法。

但90%的业务分析题,拆开看,就是它们的排列组合

面试前刷一遍,工作中套一遍,效率直接拉满。

✨ 记住:数据是死的,套路是活的。掌握模式,才能以不变应万变。

相关推荐
ZC跨境爬虫3 小时前
极验滑动验证码自动化实战(ddddocr免费方案):本地缺口识别与Playwright滑动模拟
前端·爬虫·python·自动化
单片机学习之路3 小时前
【Python】输入print函数
开发语言·前端·python
后藤十八里3 小时前
极验4消消乐验证码逆向笔记
笔记·爬虫·python
李昊哲小课4 小时前
Python办公自动化教程 - 第1章 openpyxl基础入门 - 第一次用代码操控Excel
开发语言·python·excel·openpyxl
智算菩萨4 小时前
【Python图像处理】4 NumPy数组操作与图像矩阵运算
图像处理·python·numpy
SomeB1oody4 小时前
【Python深度学习】1.1. 多层感知器MLP(人工神经网络)介绍
开发语言·人工智能·python·深度学习·机器学习
数据科学小丫4 小时前
数据分析利器 Pandas :apply() 方法 + map() 配对 + 计算描述统计 + 协方差和相关性 + 异常值处理常用方法(基于 python )
python·数据分析·numpy·pandas
babe小鑫4 小时前
2026大专商务英语毕业学习数据分析指南
学习·数据挖掘·数据分析
财经资讯数据_灵砚智能4 小时前
基于全球经济类多源新闻的NLP情感分析与数据可视化(日间)2026年4月6日
大数据·人工智能·python·信息可视化·语言模型·自然语言处理·ai编程