100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 小红书用户画像分析_电商平台用户画像分析

小红书用户画像分析_电商平台用户画像分析

时间:2020-04-29 21:56:25

相关推荐

小红书用户画像分析_电商平台用户画像分析

电商平台用户画像分析

1、项目背景

1.1 分析目的

通过分析用户的行为特征,深挖用户的潜在价值。

1.2 产品简述

由于数据脱敏无法具体了解产品的种类,通过数据只能基本判断该产品的消耗量和复购率并不是很高,主要是在电商平台上进行销售,面向群体较广,各个年龄段和性别基本都有购买的记录。

1.3 数据集介绍

1.3.1 数据源:

User_table.csv、Data_Action_02.csv、Data_Action_03.csv、Data_Action_04.csv

1.3.2 数据量级

共有50601736条数据(5000万+)

1.3.3 数据字段解释

User_table.csv,用户数据介绍Data_Action_02.csv、Data_Action_03.csv、Data_Action_04.csv,用户行为数据特征**ata-draft-node="block" data-draft-type="table" data-size="normal" data-row-style="normal">user_id用户编号脱敏sku_id商品编号脱敏time行为时间/model_id点击模块编号脱敏type行为类型1.浏览商品详情页;2.加入购物车;3.购物车删除;4.下单;5.关注;6.点击cate品类ID脱敏brand品牌ID脱敏

2、标记高潜用户

高潜用户应该具有以下特征:

必须有购买行为对一个商品购买和其他交互行为(浏览、点击、收藏、等(时间差应该多于一天(时间间隔可以根据实际情况自己定义)

2.1 将多个表用户行为数据合并

import pandas as pd # 1. 由于每个csv中大概都有100多万条数据,我们采取分数据块读取​# 读取文件数据def read_actionData(filePath,size=10000):'''filePath : 文件路径size : 数据行数'''使用迭代器的方式读取数据df = pd.read_csv(filePath, header=0, iterator=True)# 保存数据块的列表,保存单个csv的数据 chunks = [] # 循环起始值loop = Truewhile loop:try:#分块迭代读取数据, 每次读10000条 chunk = df.get_chunk(size)[["user_id", "sku_id", "type", "time",'cate']]chunks.append(chunk)#当csv文件数据读取完毕时候,报错误except StopIteration:loop = Falseprint("Iteration is stopped")df_ac = pd.concat(chunks, ignore_index=True)return df_ac​#2.将多个表的数据合并在一起#df_ac大列表接受3个表的数据 chunksdf_ac = []df_ac.append(read_actionData(filePath='Data_Action_02.csv'))df_ac.append(read_actionData(filePath='Data_Action_03.csv'))df_ac.append(read_actionData(filePath='Data_Action_04.csv'))​#3.将多个表的数据转成数组形式df_ac = pd.concat(df_ac, ignore_index=True)df_ac

简单浏览下数据

df_ac.describe()df_ac.info()

2.2 提取type为4的数据

#1.找到type为4的用户 df_ac_type = df_ac[df_ac['type']==4]df_ac_type

2.3 查看每类商品用户下单的占比

#2每类商品购买占比 #找到高潜用户可以不用这一步进行分析 cate_count = df_ac_type.groupby('cate').count() cate_countcate_count['rate'] = [i/df_ac_type.shape[0] for i in cate_count['time'].values.tolist()] cate_count

2.4 选取第四类产品的数据为例

#3.以cate4为例进行研究 df_ac_cate = df_ac_type[df_ac_type['cate']==4]df_ac_cate

2.5 用户最后购买时间

#4.用户最后购买时间 def last_time(user):return user['time'].max() df_usr_buy_time = df_ac_cate.groupby(by='user_id').apply(last_time)df_usr_buy_timeprint(type(df_usr_buy_time))df_usr_buy_time

2.6 用户最早与该类产品发生交互的日期

#5.用户第一次与该类产品发生行为的日期 df_ac_allcate = df_ac[df_ac['cate']==4] df_ac_allcate ​#根据有最后一次购买时间,df_usr_buy_time 与df_ac_allcate 匹配 df_all_buy_ac = pd.merge(df_usr_buy_time.to_frame(),df_ac_allcate,on='user_id') ​df_all_buy_ac ​#获取用户第一次行为时间 def first_time(user):return user['time'].min() ​df_usr_ac_firsttime = df_all_buy_ac.groupby(by='user_id').apply(first_time)​df_usr_ac_firsttime

2.7 计算购买行为和第一次交互行为的时间差

#6.计算时间差 ​df = pd.merge(df_usr_buy_time.to_frame(),df_usr_ac_firsttime.to_frame(),on='user_id') ​df.columns = ['buy_time','ac_time']df['days'] = (df['buy_time'].astype('datetime64')-df['ac_time'].astype('datetime64')).dt.days df

2.8 获取高潜用户

#7找到高潜用户 high_dive = df[df['days']>1] high_dive

3.分析高潜用户行为

3.1 筛选高潜客户的静态数据

#1.合并两个表 user_table = pd.read_csv('data/User_table.csv')​# 将两个时间进行合并high_dive和user_table​user_table_high = pd.merge(user_table,high_dive,on='user_id')user_table_high

3.2 高潜用户的客户等级分布

#2.高潜用户等级情况 user_lv_count = user_table_high.groupby('user_lv_cd').count()user_lv_count​# 绘制饼图import matplotlib.pyplot as pltimport matplotlib​plt.pie(user_lv_count['user_id'].values.tolist(), labels=user_lv_count.index.tolist(), autopct="%1.1f%%")​plt.show()

3.3 高潜客户年龄段分布

#3.高潜用户年龄 user_age_count = user_table_high.groupby('age').count()user_age_count​​# 绘制饼图import matplotlib.pyplot as pltimport matplotlib​plt.bar(user_age_count.index.tolist(),user_age_count['user_id'].values.tolist(),width=0.3)plt.show()#这里的数据是脱敏了的,看样子进行猜测,-1应该是用户填写的错误数据,2是20~29岁,3是30~39岁,以此类推。

3.4 购买数量:不同量段的占比

#4购买数量分析 #先按购买数量分组,bins里的数量可以根据实际情况进行调整,由于购买数量主要集中在1~5,所以如下分类。buy_num_groups = pd.cut(user_table_high['buy_num'], bins=[0,1,2,3,4,5,10,20,30,40,50]) #(0,1)(1,2)#每一组个数 group_count = user_table_high.groupby(buy_num_groups).count() group_count​#占比 group_count['rate'] = ['%.3f%%' %(value/user_table_high.count()['user_id']*100) for value in group_count['user_id'].values.tolist()] group_count['rate']

3.5 高潜用户的购买该商品的记录

根据df_ac_cate 和高潜用户id匹配出高潜用户的购买该商品的记录.

#5.找到高潜用户的购买记录#根据df_ac_cate 4类 产品 #高潜用户进行匹配, 购买产品记录 ​df_buy_high = df_ac_cate[df_ac_cate['user_id'].isin(high_dive.index.to_list())] ​df_buy_high ​df_buy_high['time'] = df_buy_high['time'].astype('datetime64')df_buy_high

3.6 周一到周日每天的购买行为分布

df_buy_high['weekday'] = df_buy_high['time'].apply(lambda x: x.weekday() + 1) ​df_buy_high_count = df_buy_high.groupby(by='weekday').count()df_buy_high_count​plt.bar(df_buy_high_count.index.tolist(),df_buy_high_count['user_id'].values.tolist())plt.show()

4、总结

此次分析是针对电商用户的行为数据进行分析,目的是找到高潜用户的行为特征,最大程度地挖掘高潜用户的价值。

数据分析的过程和每点小结:

1)定义了高潜用户,应该具有以下特征:必须有购买行为;对一个商品购买和其他交互行为(浏览、点击、收藏、等(时间差应该多于一天(时间间隔可以根据实际情况自己定义)

2)先在所有的几百万份数据中找到下单的用户(type=4);

3)再在其中找购买了cate=4的用户;

4)通过计算购买行为和第一次交互行为的时间差 找到符合要求的高潜用户;

5)分析高潜用户的客户等级分布,主要分布在4、5级,说明高潜用户基本上是该平台的长期用户,购买频次不低(后续补上RFM模型进行分析)

6)分析高潜用户的年龄段,主要集中在30·40岁,说明大部分高潜用户是有独立经济能力,有稳定的购买能力,不是一时冲动的消费行为,可以往提升用户粘性方向走;

7)分析高潜用户的购买数量,95%集中在1~5次,67%是在2次以内,说明针对高潜用户在购买数量上还有很大的提升空间,可以考虑做一些促销活动(买几送几,捆绑销售之类的等等)去推动下。

8)分析周一至周日的购买行为分布,周四下单的最多,其余六天基本持平,但周六日最低的,这种情况有多种可能,主要是和产品特质有关,有可能是30~40岁的高潜用户想着周四下单,周六日空闲时就可以拿到商品,立马能使用(在不急迫的情况下追求体验效率)。可以将商品4的相关活动设置在周四。

######说在最后,之后有时间会补充上RFM模型以及更好的可视化展示报告。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。