pandas实战:用户消费行为画像

python数据分析实战之用户分析及RFM模型分析 利用python进行用户分析和产品分析:用户画像分析:地区、性别、年龄分布,不同分类下的下单数量及消费金额对比,二八定律,用户分层模型(RFM模型)及销量最高的10个品牌。 思路清晰,注释全面详细。 阅读详情

首先,加载用户的消费数据。

columns=["user_id","order_dt","order_product","order_amount"]  
df = pd.read_csv('data.txt', sep='\s+', names=columns)  

  • user_id:客户ID

  • order_dt:订单日期

  • order_product:订单产品

  • order_amount:订单金额

1.统计每个客户购买的总数量和平均金额

使用groupby+agg聚合的方法得到统计结果,并按order_product降序排序。

(  
    df.groupby("user_id",as_index=False)  
    .agg({"order_product":np.sum,"order_amount":np.mean})  
    .sort_values(['order_product'],ascending=False)  
)  

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.统计每个月销售额的情况

(  
    df.groupby("order_month")['order_amount'].sum()  
    .plot(figsize=(10,6),marker='o')  
)  

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3.每笔订单对应的金额分布

一笔订单对应的总金额分布

df.plot.scatter(x="order_product",y="order_amount")  

每个用户每笔订单对应的总金额分布

(  
    df.groupby("user_id")[['order_product','order_amount']].sum()  
    .plot.scatter(x="order_product",y="order_amount")  
)  

4.单个用户的消费行为

plt.figure(figsize=(12,4))  
plt.subplot(121)     
df.order_amount.hist(bins=30) #订单金额直方图分布  
  
plt.subplot(122)   
df.groupby("user_id").order_product.sum().hist(bins=30) #每个用户购买总量的直方图  
plt.tight_layout()  

反映出大部分人的消费额和购买数量都是较低,符合一般消费规律。

5.复购率分析

复购率定义:在一个月内消费次数2次及以上的用户所占的比例。

首先通过透视表pivot_table统计每个用户各月的消费次数,然后加工出复购的标识,将每月消费次数2次以上的记为1,一次的记为0,没有消费的记为NaN。

pc = df.pivot_table(index="user_id",  
                    columns="order_month",  
                    values="order_date",  
                    aggfunc="count").fillna(0)  
pct = pc.applymap(lambda x:1 if x>=2 else np.NAN if x==0 else 0)  
# 按月统计复购率  
pct.mean().plot(figsize=(10,6),marker='o')  

6.回购率分析

回购率:本月消费并在下月继续消费的客户占比

这里的定义是在一个月之内只要消费次数大于1即可认为是消费。

步骤:

  • 首先,加工出本月有过消费的标识字段,通过轴旋转变为宽表形式。

  • 对if_has_order是否消费变量向上偏移一个单位

  • 计算加工出是否回购变量if_reorder

  • 可视化

pp = (  
    pc.applymap(lambda x:1 if x > 1 else 0)  
      .stack()  
      .to_frame(name='if_has_order')  
      .reset_index()  
)  
  
# 回购计算逻辑  
pp['if_has_order_next_month'] = pp['if_has_order'].shift(-1)  
pp['if_reorder'] = 0  
pp.loc[(pp1['if_has_order'] == 1)&(pp['if_has_order_next_month']==1),'if_reorder'] = 1  
pp.loc[(pp1['if_has_order'] == 1)&(pp['if_has_order_next_month']==0),'if_reorder'] = 0  
pp.loc[(pp1['if_has_order'] == 0),'if_reorder'] = np.nan  
  
(  
    pp.pivot_table(index='order_month',values='if_reorder',aggfunc='mean')  
    .plot(figsize=(10,6),marker='o')  
)  

整体回购率约为25%,其中新客户质量低于老客户,老客户的忠诚度较高。最后一期降为0是由于没有下一期数据,可以视为异常忽略。

7. 客户分层分析

根据客户的活跃程度可将客户分为沉默户、新户、活跃户、不活跃户、回流用户,具体定义如下:

  • 沉默户:从未发生过消费的客户

  • 新户:第一次消费的客户

  • 活跃户:老客户,在时间窗口内发生过消费的客户

  • 不活跃户:老客户,在时间窗口内未发生过消费的客户

  • 回流:上个月未消费但本月消费过的客户

为了给每个客户在各观察月打上客户分层标签,需要借助一些辅助列。通过分组内偏移、排序、累计求和等方法实现。分组内的各种骚操作可以了解东哥的pandas进阶宝典。

pp['order_month'] = pd.to_datetime(pp['order_month'])  
pp = pp.sort_values(['user_id','order_month'],ascending=[True,True])  
  
# 加工辅助列  
pp['if_has_order_last_month'] = pp.groupby(['user_id'])['if_has_order'].transform(lambda x:x.shift(1))  
pp['if_has_order_next_month'] = pp.groupby(['user_id'])['if_has_order'].transform(lambda x:x.shift(-1))  
  
pp['order_rank'] = pp.groupby(['user_id'])['order_month'].transform(lambda x: x.rank(method='first'))  
pp['order_cumsum'] = pp.groupby(['user_id'])['if_has_order'].transform('cumsum')  

然后,生成客户分层的变量user_status,按照不同的条件进行赋值。

pp['user_status'] = ''  
  
# silent  
pp.loc[(pp['order_cumsum']==0),'user_status'] = 'silent'  
  
# new  
pp.loc[(pp['order_rank']==1)&(pp['if_has_order']==1),'user_status'] = 'new'  
pp.loc[(~(pp['order_rank']==1))&(pp['if_has_order']==1)&(pp['order_cumsum']==1),'user_status'] = 'new'  
  
# unactive  
pp.loc[(pp['order_cumsum']>0)&(pp['if_has_order']==0),'user_status'] = 'unactive'  
  
# active  
pp.loc[(pp['order_cumsum']>1)&(pp['if_has_order']==1)&(pp['if_has_order_last_month']==1),'user_status'] = 'active'  
  
# return  
pp.loc[(pp['order_cumsum']>1)&(pp['if_has_order']==1)&(pp['if_has_order_last_month']==0),'user_status'] = 'return'  

最后用面积图进行分层客户的可视化。蓝色的面积表示活跃客户,绿色表示回流客户,4个月后基本稳定,说明没有新客。

pp1 = pp.replace("silent",np.NaN)  
pp2 = pp1.pivot_table(index='order_month',columns='user_status',values='user_id',aggfunc='count',fill_value=0)  
pp2.plot.area(figsize=(12,6))  

8.高质量客户分析

按客户ID分组对订单金额求和,然后计算每个客户的订单总和占累计求和的比例。

ua = df.groupby("user_id").order_amount.sum().sort_values().reset_index()  
ua["amount_cumsum"] = ua.order_amount.cumsum()  
ua["amount_sum"] = ua.order_amount.sum()  
  
ua["prop"] = ua.apply(lambda x:x.amount_cumsum/x.amount_sum,axis=1 )  
ua.prop.plot(figsize=(12,6))  

可以看到,前20000的客户贡献了40%的消费,后面4000的客户贡献了60%的金额,呈现二八倾向。

9.计算用户生命周期

求出每个客户的最早和最晚的消费日期作差得到最早和最晚的时间间隔时长,即为客户的生命周期。

user_purchase = df[["user_id","order_product","order_amount","order_date"]]  
order_date_min = user_purchase.groupby("user_id").order_date.min() #按客户分组求最早的消费日期  
order_date_max = user_purchase.groupby("user_id").order_date.max()  #按客户分组求最近的消费日期  
(order_date_max-order_date_min).dt.days.hist(bins=40,figsize=(10,6))  

大部分客户只消费了一次,开始时间和结束时间都是一样的所以相减为0,因此大部分客户集中在0。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

剔除只消费1次的,对消费2次及以上的客户进行分析。

lft = (order_date_max-order_date_min).dt.days  
lft[lft>0].hist(bins=100,figsize=(10,6))  

消费2次及以上的客户生命周期呈现双峰趋势,处于左峰部分的客户生命周期在0至100天内,虽然消费了2次但没有能持性,因此在该部分客户首次消费30天后应该进行主动营销引导后续消费;处于右侧峰部分的客户生命周期集中在400天以后,属于忠诚用户;而集中在50-300天的属于普通型的生命周期。

以上就是“pandas实战:用户消费行为画像”的全部内容,希望对你有所帮助。
​
​关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至优快云官方,朋友如果需要可以直接微信扫描下方优快云官方认证二维码免费领取【保证100%免费】。

Python实战:基于RFM模型的电商用户画像构建与精准营销应用 用户画像作为数据分析和精细化运营的核心工具,其本质是通过整合多源数据,构建能够代表用户特征的虚拟模型。其原理在于对用户行为、属性及消费数据进行系统性的清洗、整合与标签化,从而抽象出具有业务指导意义的用户分群。在技术实现上,Python凭借其丰富的数据处理库(如Pandas、NumPy)和可视化工具(如Matplotlib、Seaborn),成为构建用户画像的高效选择,尤其适合处理订单、浏览日志等结构化数据。其核心价值在于将模糊的用户感知转化为可量化、可操作的群体特征,直接驱动精准营销策略的制定。在电商等典型 阅读详情

相关推荐

程序员如何利用AI进行用户画像分析

用户画像分析是现代企业了解用户需求、制定精准营销策略、优化产品体验的重要手段。本文章的目的在于指导程序员如何运用AI技术来进行用户画像分析。范围涵盖了从基础概念的介绍到具体算法的实现,再到实际项目的应用,以及未来发展趋势的探讨。通过本文的学习,程序员能够掌握利用AI构建用户画像的完整流程和方法。本文将按照以下结构进行阐述:首先介绍用户画像分析的核心概念和相关联系,接着详细讲解核心算法原理和具体操作步骤,并结合数学模型和公式进行深入分析。然后通过项目实战展示如何在实际场景中运用这些技术。

操作系统内核探秘的博客 729

使用python生成一个月度账单消费金额柱状图表

【代码】使用python生成一个月度账单消费金额柱状图表。

小小的木头人的博客 824

彼得林奇如何分析公司的用户画像精准度

本文的目的在于深入剖析彼得林奇分析公司用户画像精准度的方法和策略。通过对这一主题的研究,不仅能让投资者更好地理解公司的市场定位和目标客户群体,从而做出更明智的投资决策,也能为企业管理者提供有价值的市场分析思路,优化公司的营销策略。范围涵盖彼得林奇的投资哲学、公司分析方法以及用户画像精准度的相关概念和分析手段。本文将按照以下结构展开:首先介绍相关背景知识,包括目的、读者群体和文档结构;接着阐述核心概念与联系,通过文本示意图和 Mermaid 流程图展示;

AI Agent Harness Engineering 1022

pandas中 groupby分组详解 1

文本主要介绍了 pandas 中使用 groupby 分组的的一些相关知识点以及个人理解总结

Lian_Ge_Blog的博客 1271

用户画像构建与KMeans聚类分类实战项目

用户画像(User Profile)是通过收集和分析用户的社会人口统计学信息、行为数据、偏好以及交互记录等多维度信息,构建的一种数字身份。用户画像能够帮助企业更好地了解目标客户,从而实现精准营销和服务个性化。聚类分析是数据挖掘中一种无监督学习的常用方法,旨在将相似的对象划分为同一组或“簇”。这一过程基于数据点的相似性度量,通常是距离度量,将数据分组到彼此之间相似度较高,而与其他组相似度较低的组中。

weixin_42452924的博客 913

Personas-用户画像数据集实战应用与分析

简介:“Personas-数据集”是一个用于构建用户画像的综合性数据集合,广泛应用于产品设计、精准营销和个性化服务中。该数据集通过整合用户的基本信息、行为数据、兴趣爱好、目标动机及社会角色等多维度特征,帮助开发者和企业深入理解目标用户群体。包含训练集、测试集和提交文件三部分,适用于机器学习建模与验证。结合Pandas、Numpy、Scikit-learn等工具,可完成从数据清洗、特征工程到模型预测的完整流程,最终实现用户分类与行为预测,助力个性化推荐与智能营销系统构建。

weixin_31641077的博客 765

python案例:用户画像分析

python案例:用户画像分析

Sun123234的博客 1961

校园消费行为分析实战:Python数据分析与聚类异常检测全流程

数据分析作为Python生态中最具落地价值的领域之一,其核心在于从原始数据中提取可解释的业务洞察。以校园一卡通消费流水为例,通过pandas完成数据清洗与特征工程,利用matplotlib和seaborn呈现消费分布与时段规律,再借助sklearn中的KMeans聚类和孤立森林算法,实现学生消费群体划分与异常行为识别。这一套方法不仅适用于校园后勤管理中的精准资助、食堂排班和备货预测,也可迁移至电商、金融等场景中的用户画像与风控建模。掌握从数据预处理到模型输出的完整链路,是数据分析师解决实际问题的关键能力。本

weixin_31062533的博客 310

案例: 用户消费数据分析--Pandas

用户贡献度折线图。

chongbaikaishi的博客 404

BMS | 从一串到几百串硬件架构简介

锂电池在生活中越来越多的方面扮演能源的角色,除了大家熟知的电动汽车行业,在一些消费类,工业类电子产品比如手机,电动自行车,电动工具中都有应用,追本溯源今天我们一起来学习下最基础的BMS架构。 1~4串架构 以S8241为代表的无通信/无固件/模拟器件 可实现过充保护、过放保护、过流/短路,参数由器件后缀代码决定;通信类手持设备供电系统;1~4节电池保护板架构 如图使用S-8241系列保护IC,一对充放电MOS管控制充放电的回路的切断和接通,系统供电来自于电芯电压,VM引脚用于检测过...

ningvay的博客 9920

Keil5芯片包下载后无法识别?手把手排查教程

遇到Keil5芯片包下载后不被识别的问题别慌,常见原因包括安装路径错误或包未正确注册。通过检查Pack Installer状态和手动更新设备支持列表,轻松排查故障,确保开发环境正常运行。

weixin_35459464的博客 881

抖音用户分层和用户画像分析

age_stats = df.groupby('User_Segment')['Age'].agg(['mean', 'min', 'max']).round(2) # 相当于分类汇总。df['Spending_level'] = pd.qcut(df['Total_Spending'], 4, labels=['低消费', '中消费', '高消费', '超高消费'])ax=axes[0], cbar_kws={'label': '占比(%)'}) # 设置颜色条标签。

2502_93844369的博客 639

Computers & Security 投稿实战:从零到一详解避坑指南

本文详细解析了向《Computers & Security》投稿的全流程避坑指南,包括ORCID账号注册、文件格式统一、Editorial Manager®系统操作技巧等关键步骤。特别强调了cover letter撰写、Declaration of Interest Statement准备以及PDF生成后的检查要点,帮助研究者高效完成投稿流程。

weixin_29228203的博客 676

【用户画像建模黄金法则】:Python实现用户标签体系的3大关键流程

掌握用户画像分析Python实战方法,系统讲解标签体系构建三大流程。涵盖电商、金融等场景,基于聚类、规则引擎与行为分析技术,实现精准用户分群与画像建模。方法可复用、易落地,值得收藏。

PoliVein的博客 988

2017阿里内推笔试题--算法工程师(运筹优化)

2017阿里内推笔试题–算法工程师(运筹优化)题目沐哲是一个菜鸟仓库的一个拣货员,但他有非常个怪异的习惯。每次拣货的重量都要比之前拣的一个轻,每次拣到货后都可以得到1块钱,沐哲想知道这样最多能赚多少钱 32 34 7 33 21 2 13 12 3 11 26 36 16 30 22 1 24 14 20 23 25 5 19 29 27 15 9 17 31 4 6 18 8 10 3

shawpan的专栏 1万+

Multisim14安装失败?手把手教你彻底清理残留文件(附专用卸载工具)

本文针对Multisim14安装失败问题,提供了一套从根源解决的完整方案。文章详细分析了安装失败的三大元凶——文件残留、注册表残留和隐藏组件,并手把手指导用户使用专用卸载工具进行标准化清理,再结合手动深度清理文件系统和注册表,最终实现彻底卸载和完美重装,有效解决Multisim14安装问题。

weixin_29179311的博客 317

用户画像

用户画像准确性评测初探 ——拨开python大数据分析的神秘面纱 装载自:https://cloud.tencent.com/developer/article/1156790 导读 本文主要包括两部分内容,第一部分会对零零散散进行了两个多月的用户画像评测做个简要回顾和总结,第二部分会对测试中用到的python大数据处理神器pandas做个整体介绍。 Part1用户画像评测...

318

[亚信线上教学] AX58100: EtherCAT从站设备仿真功能设计教学

什么情况需要开启EtherCAT从站设备仿真功能呢? 一般来说, 当EtherCAT从站产品,不需要使用额外的微控制器介入,或使用不具备EtherCAT从站通讯协议栈的微控制器一同协作的情况下,就必须开启EtherCAT从站设备仿真功能,这样EtherCAT主站才能够正常设置从站设备的工作状态. 亚信AX58100 EtherCAT从站控制芯片的优点 AX58100 EtherCAT从站控制器, 集成2个百兆以太网Phis, 并支持一些额外的控制接口, 例如脉冲宽度调变, 增量, 霍尔编码器, .

allanchou1的专栏 7428

pandas 每一列画图_pandas数据画像

很多从事数据分析或者有志于此的朋友都会比较熟悉pandas这一款python的第三方库,之前我已经在一篇文章中讨论了pandas的21个基本操作,这里就不在赘述。在使用pandas分析数据的时候常常有一个需求,就是对一个数据集合进行画像分析,从而了解这个数据集的整体情况以及各个变量之间的关系。大家对人物画像或者用户画像可能会稍微有些概念,数据画像其实也差不多,就是分一些比较具体的维度对数据进行刻...

weixin_39746652的博客 711

【DaVinci Developer专题】-8-创建一个枚举Enum ADT(Application Data Type)

目录 1 创建一个枚举Value ADT(Application Data Type) 1.1 命名application data type 1.2 创建一个computation method计算方法属性 1.3 创建一个Contraint约束条件属性 2 创建了一个新的Type Mapping Sets 3 创建了一个S/R Port Interface 4 SWC引用Type Mapping set 5 导入CFG生成代码的总结 6 结尾 <--返回「实战篇」博文-总目录-

「汽车电子助手」的博客 2293

机器翻译的评价标准:BLEU、ROUGE等指标说明及代码实现

机器翻译领域常用的自动评价指标主要包括BLEU、ROUGE、METEOR和COMET四大类。BLEU基于n-gram精确率和短句惩罚,ROUGE关注召回率,METEOR结合精确率和召回率并考虑同义词,COMET则利用预训练模型计算语义相似度。这些指标各有特点:BLEU适用于机器翻译,ROUGE对长句友好,METEOR更接近人工评分,COMET无需参考译文。代码实现上,sacrebleu、rouge-score等库提供了便捷的计算方式。新兴趋势包括基于BERT等模型的语义评估和大语言模型评估器,但传统指标仍占

数据知道的博客 9421

大数据基于Python的电商用户消费行为分析

2、同时增加文字触发提醒,设置提醒语,有相同字段的数据,会触发弹框提醒,例如设置状态提醒:特急/加急/一般 增加自定义提醒语(如:库存不足,请补货)Flask 是一个轻量级的 Web 框架,使用 Python 语言编写,较其他同类型框架更为灵活、轻便且容易上手,小型团队在短时间内就可以完成功能丰富的中小型网站或 Web 服务的实现。8、AI续写、AI优化、AI校对、AI翻译:新增AI接口,编辑器接入AI,可以实现AI续写、AI优化、AI校对、AI翻译,可以帮你实现自动化,ai帮你完成文档。

QQ58850198的博客 977

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

基于内容的电影推荐:物品画像&用户画像&为用户产生TOP-N推荐结果

基于内容的电影推荐:物品画像基于内容的电影推荐:物品画像基于TF-IDF的特征提取技术算法原理算法举例加载数据集基于TF·IDF提取TOP-N关键词,构建电影画像完善画像关键词基于内容的电影推荐:用户画像用户画像建立基于内容的电影推荐:为用户产生TOP-N推荐结果 基于内容的电影推荐:物品画像 物品画像构建步骤: 利用tags.csv中每部电影的标签作为电影的候选关键词 利用TF·IDF计算每部电影的标签的tfidf值,选取TOP-N个关键词作为电影画像标签 将电影的分类词直接作为每部电影的画像标签 基

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 913

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Yelp 数据集进行用户画像, 使用聚类做推荐

使用 Yelp 数据集进行用户画像(User Profiling)是一项有趣的任务,可以理解用户的偏好、行为和特征。以下是总结的一个基本的步骤,帮助构建用户画像。

陈锐的技术笔记 1504

完整代码数据与注释:销售数据分析与用户画像生成

这个项目旨在对销售数据进行深入分析,并通过用户画像生成来揭示销售业务中的关键信息。通过对销售额、数量、利润等指标的统计分析,以及产品销售情况、地域销售情况、客户销售情况和时间趋势的分析,帮助企业了解销售业绩表现、产品热卖情况、地域销售重点、客户贡献度以及销售额的月度趋势。同时,通过用户画像生成函数,可以根据用户姓名获取其消费数据,分析其消费习惯,包括总消费额、平均订单金额和最常购买的产品。

m0_46573428的博客 1275

揭秘用户分群算法:如何用Python实现高精度用户画像分析

掌握用户分群核心技术,本文详解如何用Python实现高精度用户画像分析。涵盖K-means聚类、RFM模型等核心算法,适用于电商、金融等场景,提升运营精准度。方法实用,代码可复用,值得收藏。

InitFlow的博客 809
上一篇: pandas 时序统计的高级用法!
下一篇: pandas 图形可视化大全
壹只小小码农
博客等级 码龄5年 8104粉丝 1333原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值