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

电商平台用户画像分析

1、项目背景

1.1 分析目的

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

1.2 产品简述

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

1.3 数据集介绍

1.3.1 数据源:

User_table.csv、Data_Action_201602.csv、Data_Action_201603.csv、Data_Action_201604.csv

1.3.2 数据量级

共有50601736条数据(5000万+)

1.3.3 数据字段解释

  • User_table.csv,用户数据介绍

  • Data_Action_201602.csv、Data_Action_201603.csv、Data_Action_201604.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 = True
    while loop:
    try:
        #分块迭代读取数据, 每次读10000条 
        chunk = df.get_chunk(size)[["user_id", "sku_id", "type", "time",'cate']]
        chunks.append(chunk)
        #当csv文件数据读取完毕时候,报错误
    except StopIteration:
        loop = False
        print("Iteration is stopped")
df_ac = pd.concat(chunks, ignore_index=True)
return df_ac
​
#2.将多个表的数据合并在一起
#df_ac大列表接受3个表的数据 chunks
df_ac = []
df_ac.append(read_actionData(filePath='Data_Action_201602.csv'))
df_ac.append(read_actionData(filePath='Data_Action_201603.csv'))
df_ac.append(read_actionData(filePath='Data_Action_201604.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_count
cate_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_time
print(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 plt
import 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 plt
import 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模型以及更好的可视化展示报告。

你可能感兴趣的:(小红书用户画像分析)