美文网首页
Python 淘宝用户行为分析

Python 淘宝用户行为分析

作者: 雷全龙 | 来源:发表于2020-07-08 13:33 被阅读0次

一、项目介绍

利用淘宝平台提供的数据集,通过业务指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包括:日PV和日UV分析,复购行为分析,漏斗流失分析和用户价值RFM分析。

二、理解数据

属性值说明:

  • user_id:用户身份
  • item_id:商品ID
  • behavior_type:用户行为类型(包含点击、收藏、加购物车、支付四种行为,分别用数字1、2、3、4表示)
  • user_geohash:地理位置
  • item_category:品类ID(商品所属的品类)
  • time:用户行为发生的时间
    注:数据经过脱敏处理,地理位置作用不大,剔除掉。

三、数据准备

'''
数据清洗:有无缺失、特征筛选、变量类型转换
'''
import pandas as pd

data = pd.read_csv('old_user.csv')
data.pop('user_geohash')
data['date'] = data['time'].map(lambda x: x.split(' ')[0])
data['hour'] = data['time'].map(lambda x: x.split(' ')[1])
data.pop('time')
print(data.info())
data['date'] = pd.to_datetime(data['date'])
data['hour'] = data['hour'].astype('int32')
data.isnull().sum()
data.to_csv('new_user.csv', index=False)

四、用户行为分析

# 读取数据
data = pd.read_csv('new_user.csv')
data.head(10)
# 总浏览量(PV)、访问用户数(UV)
print('总的浏览量是',data['user_id'].shape[0])
print('访问用户数是',len(data['user_id'].unique()))
print('每个UV平均访问深度',data['user_id'].shape[0]/len(data['user_id'].unique()))
print('每个UV每日平均访问深度',data['user_id'].shape[0]/len(data['user_id'].unique())/len(data['date'].unique()))
# 日浏览总量
pv_daily = data.groupby(['date'])['user_id'].count().reset_index(name='pv')
# 日访问人数
uv_daily = data.groupby(['date'])['user_id'].unique().map(lambda x: len(x)).reset_index(name='uv')
x_major_locator = plt.MultipleLocator(4)
fig,ax = plt.subplots(2,1,figsize=(10,8))
ax[0].plot(pv_daily['date'], pv_daily['pv'])
ax[0].set_xlabel('date')
ax[0].set_ylabel('pv')
ax[0].xaxis.set_major_locator(x_major_locator)
ax[1].plot(uv_daily['date'], uv_daily['uv'])
ax[1].set_xlabel('date')
ax[1].set_ylabel('uv')
ax[1].xaxis.set_major_locator(x_major_locator)
图1.png

结果表明:

  • PV和UV在双十二达到高峰
  • UV和PV两个访问量数值差距比较大
  • PV和UV在双十二前后两天波动较大,其余时间段期间趋势走向大体一致,整体比较平稳
# 每个时刻的pv
pv_hour = data.groupby(['hour'])['user_id'].count().reset_index(name='pv')
# 每个时刻的uv
uv_hour = data.groupby(['hour'])['user_id'].unique().map(lambda x: len(x)).reset_index(name='uv')
fig,ax = plt.subplots(2,1,figsize=(10,8))
x_major_locator = plt.MultipleLocator(1)
ax[0].plot(pv_hour['hour'], pv_hour['pv'])
ax[0].set_xlabel('hour')
ax[0].set_ylabel('pv')
ax[0].xaxis.set_major_locator(x_major_locator)
ax[1].plot(uv_hour['hour'], uv_hour['uv'])
ax[1].set_xlabel('hour')
ax[1].set_ylabel('uv')
ax[1].xaxis.set_major_locator(x_major_locator)
图2.png

结果表明:

  • 晚上凌晨之后(0-5),用户都会去睡觉,PV\UV下降显著,早晨6点之后,PV\UV显著上升,在10点左右达到高峰。
  • UV10点以后一直比较稳定,PV18点以后迅速上涨,在21点左右涨幅一倍多。说明淘宝用户的活跃时段在18-22点左右,活跃人数在10-22点比较稳定。

五、漏斗流失分析

# 漏斗模型分析,统计各阶段的转化人数
# 点击——>收藏——>加入购物车——>支付
user = data.groupby('behavior_type')['user_id'].unique().map(lambda x: len(x)).reset_index(name='uv')
print(f'整个过程流失率:{round((user.uv[0]-user.uv[3])*100/user.uv[0],2)}%')
图3.png

结果表明:

  • 从电商链路的角度分析,收藏应该在加购前一步,加购在支付之前,但从UV来看,加购、支付的UV反而更高。
  • 原因分析:首先,收藏与加购在功能上存在一定重叠,用户相比收藏更偏爱用加购的方式表达购买意愿。其次,用户可能有时倾向于直接支付购买,不会加入购物车统一下单支付购买,不过这两者差距不是很大,不用着重分析,只是爱好习惯不同
  • 用户建议:收藏是否可以进一步细化功能,通过收藏夹管理,自定义标注等方式区别于加购的功能
  • 收藏相比加购到支付的流失率更低,说明收藏相比加购转化的成功率更高,可以进一步挖掘偏爱用收藏支持购物决策的人群特点

六、复购情况分析

# 用户复购分析(同一天内的购买不算复购)
d1 = data[data['behavior_type'] == 4]
total = len(d1['user_id'].unique())
d2 = d1.groupby('user_id')['date'].unique().map(lambda x: len(x)).reset_index(name='count')
part = len(d2[d2['count'] > 1])
print(f'复购率为:{round(part/total,4)*100}%')

# 复购次数分布
d3 = d2[d2['count'] > 1]
sns.distplot(d3['count'])

# 复购间隔分布(本次购买与下次购买间隔)
distance = list()
for i in d3['user_id']:
    d4 = d1.groupby(by=['user_id'])['date'].get_group(i)
    d4 = pd.DataFrame(d4.values,columns=['date']).sort_values(by = 'date')
    d4['date'] = pd.to_datetime(d4['date'])
    for j in range(len(d4)-1):
        flag = (d4.iloc[j+1,0] - d4.iloc[j,0]).days
        if flag:
            distance.append(flag)
sns.distplot(distance)
图4.png
图5.png

结果表明:

  • 大多数用户的复购次数在2~10次之间
  • 复购集中在购买后10天内,尤以1-5天为高峰期

七、用户价值RFM分析

用户分类规则

用户分类 recency frequency
重要价值客户
重要保持客户
重要发展客户
流失客户

分值规则

打分 recency frequency
4 5天以内 20次以上
3 10-15天 10-20次
2 5-10天 5-10次
1 15天以上 5次以下
# 用户类别划分,RFM模型
# money 在一段时期内的采购总金额(数据缺失)
from datetime import datetime
datenow=datetime(2014,12,19)
d5 = d1.copy()
d5['date'] = pd.to_datetime(d5['date'])
d5['date'] = d5['date'].map(lambda x: (datenow-x).days)
d5.rename(columns={'date':'recency'},inplace=True)
d6 = d5.groupby('user_id')['recency'].min().reset_index()
d6['frequency'] = d2['count']

def rscore(x):
    if x < 5:
        score = 4
    elif 5 <= x < 10:
        score = 2
    elif 10 <= x < 15:
        score = 3
    else:
        score = 1
    return score
d6['rscore'] = d6['recency'].map(rscore)
def fscore(x):
    if x > 20:
        score = 4
    elif 5 <= x < 10:
        score = 2
    elif 10 <= x < 20:
        score = 3
    else:
        score = 1
    return score
d6['fscore'] = d6['frequency'].map(fscore)
def rfm(x,y):
    if x > 2 and y > 2:
        label = '重要价值客户'
    elif x <= 2 and y >= 2:
        label = '重要保持客户'
    elif x >= 2 and y <= 2:
        label = '重要发展客户'
    else:
        label = '流失客户'
    return label
d6['level'] = d6[['rscore','fscore']].apply(lambda x: rfm(*x), axis=1)
print(d6['level'].value_counts())
图6.png
  • 重要价值客户:予以关注并维护
  • 重要保持用户:近期消费频次低。予以相应的价格刺激,如折扣和捆绑销售等增加用户的购买频率
  • 重要发展用户:远期消费频次高。产品卖点刺激,品牌灌输等加强他们对品牌的认可,提高忠诚度
  • 流失客户:需分析流失原因

学习的脚步永无止境!

相关文章

  • 用户行为分析及实战项目python

    本文为淘宝用户行为分析,附python代码~欢迎各位拍砖!目录 用户分析理解 用户行为分析目的 采集用户数据 用户...

  • Python 淘宝用户行为分析

    一、项目介绍 利用淘宝平台提供的数据集,通过业务指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式,具体指标包...

  • 淘宝用户行为分析(python)

    提出问题 日PV有多少 日uv有多少 付费率情况如何 复购率是多少 漏斗流失情况如何 用户价值情况 理解数据 数据...

  • 淘宝用户行为分析

    一、项目背景 多年以来电子商务业务快速发展,尤其是移动端发展迅猛,移动互联网时代让网上购物变得更加便利,而淘宝作为...

  • 淘宝用户行为分析

    淘宝用户行为分析 淘宝是中国深受欢迎的电商平台,经常网购的人少不了逛逛淘宝,随便看看有什么想买的或者有目的想买什么...

  • 淘宝用户行为分析

    前言: 随着电子商务业务的快速发展,线上销售逐渐成为主流。淘宝网是中国深受欢迎的网购零售平台,经常网购的人时不时会...

  • 淘宝用户行为分析

    一.项目目的及数据来源 使用淘宝数据分析电商用户行为,数据来源数据集-阿里云天池[https://tianchi....

  • 淘宝用户行为分析

  • 淘宝用户行为分析

    数据来自天池开发数据集,淘宝用户行为数据集; 数据信息为:用户id,商品id,商品类目id,用户行为类型(pv:浏...

  • 淘宝用户行为数据分析

    一.项目背景 本数据报告以淘宝app平台为数据集,通过行业的指标对淘宝用户行为进行分析,从而探索淘宝用户的行为模式...

网友评论

      本文标题:Python 淘宝用户行为分析

      本文链接:https://www.haomeiwen.com/subject/ictccktx.html