用户画像(User Profile),作为大数据的根基,它完美地抽象出一个用户的信息全貌,为进一步精准、快速地分析用户行为习惯、消费习惯等重要信息,提供了足够的数据基础,奠定了大数据时代的基石。本文探讨了一个基于python实现电商用户画像的项目实例。
用户画像,即用户信息标签化,就是企业通过收集与分析消费者社会属性、生活习惯、消费行为等主要信息的数据之后,完美地抽象出一个用户的商业全貌作是企业应用大数据技术的基本方式。用户画像为企业提供了足够的信息基础,能够帮助企业快速找到精准用户群体以及用户需求等更为广泛的反馈信息。
用户画像有很多的的标签组成,每个标签都规定了观察、认识、描述用户的角度。标签根据企业业务的发展情况,或多或少,对外而言都是一个整体,这个整体称之为用户画像。
用户画像的核心工作就是给用户打标签。
标签通常是人为规定的高度精炼的特征标识,如年龄、性别、兴趣等。这些标签集合就能抽象出一个用户的信息全貌,每个标签分别描述了该用户的一个维度,各个维度之间相互联系,共同构成对用户的一个整体描述。
以淘宝APP数据为原始数据集,通过行业常见行业指标对淘宝用户行为进行分析,从而构建用户画像。
数据来源:淘宝官方数据 2014.11.18-2014.12.18
数据集下载:https://pan.baidu.com/link/zhihu/7dhGzNuchRi0Y1YlZUQIF2BlV6SqxUQwdY1m==
数据集共计2300多万数据量,时间范围为2014-11-18~2014-12-18,共计6个字段,字段释义如下:
(23291027, 6)
可以看到数据量总计2300多万,因此抽样选取部分样本进行后续分析
由于数据集太大,为了提高运行效率,使用sample函数随机抽取30%的数据。
Dataframe.sample()是Pandas中的函数,Dataframe是一种数据格式,代指df。frac(fraction)是抽取多少数据,random_state是随机数种子,目的是保证每次随机抽取的数据一样,防止执行命令时使用不一样的数据。
查看字段缺失情况
index 0
user_id 0
item_id 0
behavior_type 0
user_geohash 4773102
item_category 0
time 0
dtype: int64
地理信息字段存在大量缺失,且对后续分析无用,因此我们删除此字段
同时在数据预览中可以看到time字段是由日期和小时组成,为了后续分析,在此将其拆分为两个字段
为了后续的用户标签,在此基于time字段构造面板数据
生成用户标签
pd.Dataframe(): 其中数据填充的是users,列名为user_id。
结果如图所示:
之后分析后的内容都会放置在此表中,相当于建立了一个空白表,将自己分析后的结论一一加入。
2.1.1 用户浏览活跃时间段标签
选取出各用户浏览次数最多的时段,看看用户到底在什么时间浏览商品比较多。
说明:
-
groupby([‘key1’,‘key2’]): 多列聚合,分组键为列名。
-
reset_index(): 默认drop=False,可以获得新的index,原来的index变成数据列保留下来,第一列会添加计数的数字,不会使用数据中的index。
-
rename(): 进行重命名,此处将item_id替换成hour_counts,inplace为是否原地填充。
- pd.merge(): 将两个表合并在一起,横向合并,on代表通过某个主键,how指左合并,每行一一对应。
说明:
- loc函数: 通过行索引Index中的具体值来取指定数据。
- aggregate函数: groupby分组之后会返回多个子数据帧,该函数可以实现数据聚合,可以得到每个子数据帧的某些列的某些信息。
- lambda函数: 可以定义一个匿名函数,lambda [arg1[, arg2, … argN]]: expression,其中参数是函数的输入,是可选的,后面的表达式则为输出,此处和join()函数一起用,其中每个x值能被“,”隔开;
2.1.2 用户购买活跃时间段标签
2.1.3 用户浏览最多的商品类别
2.1.4 用户收藏最多的商品类别
2.1.5 用户加购物车最多的商品类别
2.1.6 用户购买最多的商品类别
从整理的数据中可以看出,浏览、加购物车、收藏、购买之前其实不一定存在明显的必然关系,我们还需要进一步分析得到一些规律。
2.2.1 近30天用户行为
2.2.1.1 近30天购买次数
2.2.1.2 近30天加购物车次数
2.2.1.3 近30天活跃天数
近30天用户行为分析属于中长期的用户行为,我们可以依此判断是否需要调整营销策略,类似可以得到短期的7天用户行为分析,观察中短期或一个小周期内,用户的行为是何种情况。
2.2.2 近7天用户行为
2.2.2.1 近7天购买次数
2.2.2.2 近7天加购物车次数
2.2.2.3 近7天活跃天数
2.2.3 最后一次行为距今天数
2.2.3.1 最后一次浏览距今天数
2.2.3.2 最后一次加购物车距今天数
- datetime.strptime(‘2014-12-19’,’%Y-%m-%d’)-x).days: 该部分属于lambda中的函数表达式部分,即计算规则,此处最后取相减后的天数总和。
2.2.3.3 最后一次购买距今天数
2.2.3.4 最后两次购买的时间间隔天数
2.3.1 用户是否存在浏览未下单行为
- |: 在Python语句中表示或,&表示且。
- pd.pivot_table(): 透视表功能,df_browse_buy为data块,values可以对需要的计算数据进行筛选,aggfunc参数可以设置我们对数据聚合时进行的函数操作。
- fillna: 会填充NaN数据,返回填充后的结果,inplace=True代表原地填充。
2.3.2 用户是否存在加购物车未下单行为
制定营销策略时,要重点注意这部分人群,因为加购未下单的购买转化率是最大的,有成功下单、最大潜力的客户就在这里。
2.4.1 是否复购用户
2.4.2 访问活跃度
- value_counts(): 查看表格某列中有多少个不同值,并计算每个不同值在该列中有多少重复值。
- sort_index(): 按照某一列的大小进行排序,ascending=False是按照从大到小排序。
- plt.figure(figsize=(a,b)): 创建画板,figsize代表宽为a,高为b的图形,单位为英寸。
- plt.ylabel: 设置y轴,fontsize是字体大小。
- plt.xlabel: 设置x轴。
从图中可以看出,访问次数和访问人数成正相关关系,这里取访问次数20以上的定义为活跃用户。此定义只是从用户的角度出发,工作中当从业务角度定义。访问次数多的访客比访问次数少的访客数量多,与绝大多数的产品访问规律相反,从侧面反映了用户黏性之强。
2.4.3 购买活跃度
从图中曲线可以看出拐点大约是15,因此定义购买次数在15次以下为低活跃度,15次以上为高活跃度。
2.4.4购买品类是否单一
了解用户购买的品类有利于构建用户群体行为,比如该群体统一对化妆品消费占比巨大,则该用户群体的主要特征标签之一就是化妆品。
2.4.5 用户价值分组RFM
从图中可以看出,最后一次购买距今天数为7天的购买人数最多,分析其原因是因为当天双十二促销活动,因此定义最后一次购买行为距今8天以上的为低活跃用户。
说明:
- str.cat() 是指将两个独立的字符串拼接,此处将’user_active_level’和’buy_days_level’ 拼接。如果要在两个合并的列中间加一个分隔符号,可在cat括号内加:sep=’-’,用-连接合并内容。
将user_active_level和buy_days_level组合,形成“高高”或者“高低”等。将两个重要指标合并后,每个user_id进入不同的分类组。RFM模型是衡量客户价值和客户创利能力的重要工具和手段,其中,R(recently):最近一次消费;F(Frequently):消费频率;M(Monetary):消费金额。
以上就是本篇文章【【数据分析】电商用户画像(python实现)】的全部内容了,欢迎阅览 ! 文章地址:http://dfvalve.xrbh.cn/news/3880.html 资讯 企业新闻 行情 企业黄页 同类资讯 首页 网站地图 返回首页 迅博思语资讯移动站 http://keant.xrbh.cn/ , 查看更多