博主简介:曾任某智慧城市类企业
算法总监
,目前在美国市场的物流公司从事高级算法工程师
一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907
)
博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。
**帕累托法则(二八定律)**指出:企业80%的利润往往来自20%的核心客户。本案例基于某电商平台订单数据,使用Python的Pandas库实现:
import pandas as pd
import numpy as np
# 生成模拟数据
np.random.seed(42)
user_ids = ['UID' + str(i).zfill(4) for i in range(1, 1001)]
order_dates = pd.date_range('2023-01-01', periods=365, freq='D').tolist()
amounts = np.random.lognormal(mean=3, sigma=0.5, size=5000) # 右偏分布模拟真实消费
# 创建DataFrame
orders = pd.DataFrame({
'user_id': np.random.choice(user_ids, 5000),
'order_date': np.random.choice(order_dates, 5000),
'order_amount': np.round(amounts, 2)
})
print(orders.head(3))
# 检查缺失值
print("缺失值统计:\n", orders.isnull().sum())
# 日期格式转换
orders['order_date'] = pd.to_datetime(orders['order_date'])
# 过滤异常值(金额≤0的交易)
orders = orders[orders['order_amount'] > 0]
# 按用户聚合消费数据
user_spending = orders.groupby('user_id').agg(
total_amount=pd.NamedAgg(column='order_amount', aggfunc='sum'),
order_count=pd.NamedAgg(column='order_id', aggfunc='count')
).reset_index()
# 按消费金额降序排序
user_spending_sorted = user_spending.sort_values('total_amount', ascending=False)
# 计算累计消费金额占比
user_spending_sorted['cum_amount'] = user_spending_sorted['total_amount'].cumsum()
total_revenue = user_spending_sorted['total_amount'].sum()
user_spending_sorted['cum_pct'] = user_spending_sorted['cum_amount'] / total_revenue
# 标记头部20%客户
user_spending_sorted['top20_flag'] = user_spending_sorted['cum_pct'] <= 0.8
import matplotlib.pyplot as plt
plt.figure(figsize=(10,6))
plt.bar(range(len(user_spending_sorted)),
user_spending_sorted['cum_pct'],
color='steelblue',
label='累计收益占比')
# 标注20%分界线
plt.axvline(x=len(user_spending_sorted)*0.2,
color='red',
linestyle='--',
label='前20%客户')
plt.xlabel('客户数量排序')
plt.ylabel('累计收益占比')
plt.title('帕累托分布分析')
plt.legend()
plt.show()
可以筛选这部分累计贡献收入80%的客户,用于单独的分析。
# 累计贡献收入80%客户
vip_users = user_spending_sorted[user_spending_sorted['top20_flag']]
# 特征分析
print("高价值客户特征:")
print(vip_users.describe())
代码领取:
groupby
+agg
实现快速聚合计算cumsum()
结合归一化处理生成帕累托曲线下一步优化方向: