看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gr99123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
在业务分析中,了解谁是你的“最有价值客户(VIP)”是非常关键的。我们可能有一份用户的购买明细表,其中包含用户 ID、订单金额、购买日期等字段。通过 pandas,我们可以非常快速地实现客户分组汇总、计算消费指标,并找出最活跃或最高消费的前几位用户。
这篇文章将带你一步步用到三个非常常用的 pandas 方法:
groupby() —— 按用户分组计算指标agg() —— 多指标聚合(如总消费、平均单次金额、购买次数)nlargest() —— 快速找出表现最突出的用户读完本篇,你将掌握如何编写一个完整的用户价值分析逻辑。
我们有一份购买明细数据,包括用户、商品和消费金额。
下面是示例数据(字符串形式提供):
import pandas as pd
from io import StringIO
data = StringIO("""
user_id,order_id,amount,date
U001,1001,120.5,2024-11-01
U002,1002,89.9,2024-11-02
U001,1003,300.0,2024-11-05
U003,1004,50.0,2024-11-05
U002,1005,200.0,2024-11-06
U001,1006,180.0,2024-11-07
U004,1007,400.0,2024-11-07
U003,1008,130.0,2024-11-08
U002,1009,99.9,2024-11-08
U005,1010,250.0,2024-11-09
""")
df = pd.read_csv(data)
需求描述:
我们希望从这份数据中分析出每位用户的购买表现,包括:
total_amount)avg_amount)order_count)然后找出消费金额最高的前 3 位用户,作为我们的重点客户。
思路如下:
groupby('user_id') 按用户分组。.agg() 同时计算多个统计指标。nlargest(3, 'total_amount') 选出消费总额最高的前 3 位用户。代码如下:
result = (
df
.groupby('user_id', as_index=False)
.agg(
total_amount=('amount', 'sum'),
avg_amount=('amount', 'mean'),
order_count=('order_id', 'count')
)
.nlargest(3, 'total_amount')
.sort_values('total_amount', ascending=False)
)
print(result)
输出结果:
user_id total_amount avg_amount order_count
0 U001 600.5 200.166667 3
1 U004 400.0 400.000000 1
2 U002 389.8 129.933333 3
代码分析:
.groupby('user_id'):将数据按用户聚合。.agg({...}):同时计算多个统计指标(总和、均值、计数),结果自动组成新列。.nlargest(3, 'total_amount'):快速取出消费总额最高的 3 位用户。.sort_values():对结果排序输出,更直观地展示谁是头部客户。这种写法清晰、简洁,且可扩展性强——只需在 .agg() 中加更多统计项即可。
应用场景:
(完)
更新时间:2025-11-10 18:18:54 标签:pandas python 购买 行为分析